Skip to content

Sign API

Signs are individual biomarker signals detected from voice. Each sign represents a specific health dimension. Use GET /v2/signs to discover available signs, GET /v2/signs/{sign_name} to get details on one, and POST /v2/signs/{sign_name}/analyze to analyze a single sign against submitted audio.

For pre-built multi-sign bundles, use Model API.


GET /v2/signs

GET/v2/signs
Return the list of all signs available for individual analysis.

Response

FieldTypeDescription
signsarrayList of sign objects.

Each object in signs:

FieldTypeDescription
namestringSign identifier. Use as the sign_name path parameter on detail and analyze endpoints.
labelstringHuman-readable sign name for display.

Example

curl -X GET "https://api.amplifierhealth.com/v2/signs" \
-H "X-Account-ID: your-account-id" \
-H "X-API-Key: your-api-key"

Example response

{
  "signs": [
    { "name": "airway-obstruction-pattern", "label": "Airway Obstruction Pattern" },
    { "name": "alcohol-use-pattern",        "label": "Alcohol Use Pattern" },
    { "name": "allergy",                    "label": "Allergy" },
    { "name": "anxiety",                    "label": "Anxiety" },
    { "name": "attention-dysregulation",    "label": "Attention Dysregulation" },
    { "name": "cognitive-impairment",       "label": "Cognitive Impairment" },
    { "name": "dehydration",                "label": "Dehydration" },
    { "name": "elevated-androgens",         "label": "Elevated Androgens" },
    { "name": "elevated-blood-pressure",    "label": "Elevated Blood Pressure" },
    { "name": "fatigue",                    "label": "Fatigue" },
    { "name": "head-impact",                "label": "Head Impact" },
    { "name": "hypervigilance",             "label": "Hypervigilance" },
    { "name": "iron-deficiency",            "label": "Iron Deficiency" },
    { "name": "metabolic-load",             "label": "Metabolic Load" },
    { "name": "mood-disruption",            "label": "Mood Disruption" },
    { "name": "stress",                     "label": "Stress" },
    { "name": "substance-use-pattern",      "label": "Substance Use Pattern" }
  ]
}

Errors

For authentication errors (401) and other codes, see Error Reference.


GET /v2/signs/{sign_name}

GET/v2/signs/{sign_name}
Return details for a single sign, including its display label and condition back-reference.

Path Parameters

ParameterTypeDescription
sign_namestringThe name of the sign to retrieve. See Valid sign names below.

Response

FieldTypeDescription
namestringSign identifier.
labelstringHuman-readable sign name.
conditionstring or nullBack-reference to the corresponding legacy condition model ID (e.g. "acute-stress"). Populated when the sign has a mapped legacy identifier; null otherwise.

Example

curl -X GET "https://api.amplifierhealth.com/v2/signs/stress" \
-H "X-Account-ID: your-account-id" \
-H "X-API-Key: your-api-key"

Example response

{ "name": "stress", "label": "Stress", "condition": "acute-stress" }

Errors

HTTPCodeCondition
404NOT_FOUNDsign_name is not a recognized sign. Check the name against Valid sign names.

For other codes, see Error Reference.


POST /v2/signs/{sign_name}/analyze

POST/v2/signs/{sign_name}/analyze
Submit audio to analyze a single sign. Returns a job object immediately; poll GET /v2/jobs/{job_id} or use a webhook for the completed result.

Requests use Content-Type: multipart/form-data. The job object is returned immediately with status: "running" and result: null. When analysis completes, the result contains a singular signal object plus audio_quality.

Path Parameters

ParameterDescription
sign_nameThe sign to analyze. Must be a sign available for standalone analysis — see Valid sign names.

Request Body

Requests use Content-Type: multipart/form-data.

API Parameters
FieldTypeRequiredDescription
audiofileRequiredAudio file (WAV, FLAC, MP3, or M4A). Max 32 MB per file. For longer recordings, MP3, M4A, or FLAC usually keep the file under the limit. See [Audio Requirements](/guides/audio-requirements#file-size).
diarizebooleanOptionalWhether to apply speaker diarization. Default: false.
webhook_urlstringOptionalPer-request webhook URL. Overrides the account-level webhook for this job. The API sends an HTTP POST to this URL when analysis completes. Must be provided together with webhook_secret_key — omit both or include both.
webhook_secret_keystringOptionalRequired when webhook_url is provided. Used to sign the webhook payload (HMAC-SHA256) so your server can verify it came from Amplifier. Must be provided together with webhook_url — omit both or include both.

Valid sign names

The following signs are available for individual analysis via this endpoint:

Sign nameLabel
airway-obstruction-patternAirway Obstruction Pattern
alcohol-use-patternAlcohol Use Pattern
allergyAllergy
anxietyAnxiety
attention-dysregulationAttention Dysregulation
cognitive-impairmentCognitive Impairment
dehydrationDehydration
elevated-androgensElevated Androgens
elevated-blood-pressureElevated Blood Pressure
fatigueFatigue
head-impactHead Impact
hypervigilanceHypervigilance
iron-deficiencyIron Deficiency
metabolic-loadMetabolic Load
mood-disruptionMood Disruption
stressStress
substance-use-patternSubstance Use Pattern

Code Examples

Submit

curl -X POST https://api.amplifierhealth.com/v2/signs/stress/analyze \
-H "X-Account-ID: your-account-id" \
-H "X-API-Key: your-api-key" \
-F "audio=@recording.wav;type=audio/wav"

Example response

The API returns immediately with the job object. status is running and result is null until processing completes:

{
  "job_id": "a2e4c7f1-3d9b-4e6a-b8c2-1f5d8e3a7b9c",
  "status": "running",
  "created_at": "2026-05-22T10:30:00Z",
  "completed_at": null,
  "result": null,
  "audio_content_type": "audio/wav",
  "audio_size_bytes": 876032,
  "audio_duration_seconds": 27.4,
  "audio_sample_rate": 16000,
  "job_type": "sign",
  "api_version": "v2",
  "sign_name": "stress"
}

Poll job

curl https://api.amplifierhealth.com/v2/jobs/a2e4c7f1-3d9b-4e6a-b8c2-1f5d8e3a7b9c \
-H "X-Account-ID: your-account-id" \
-H "X-API-Key: your-api-key"

See Jobs for the full job response schema. When status is done, the result contains a singular signal object plus audio_quality — see Response Schema — Sign Response.

Errors

HTTPCodeCondition
404NOT_FOUNDsign_name is not a recognized sign or is not available for standalone analysis. Check the name against Valid sign names.
400AUDIO_TOO_SHORTRecording is under 15 seconds.
400AUDIO_TOO_LONGRecording exceeds 20 minutes.
400UNSUPPORTED_FORMATAudio format is not WAV, FLAC, MP3, or M4A.
422AUDIO_POOR_QUALITYRecording conditions below the threshold used for analysis.

If only one of webhook_url or webhook_secret_key is provided, the request returns 400 Bad Request. Provide both or omit both.

For other codes and retry guidance, see Error Reference.


Model-internal signs

Some signs appear in the signs list of named models returned by GET /v2/models/{model_name} but are not available for standalone analysis via this endpoint. These model-internal signs are not returned by GET /v2/signs and cannot be used as a sign_name here.

Examples of model-internal signs: cognitive-load, cardiovascular-strain, emotional-destabilization. If you need results for these signals, use the named model that includes them via POST /v2/models/{model_name}/analyze.