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
Response
| Field | Type | Description |
|---|---|---|
signs | array | List of sign objects. |
Each object in signs:
| Field | Type | Description |
|---|---|---|
name | string | Sign identifier. Use as the sign_name path parameter on detail and analyze endpoints. |
label | string | Human-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}
Path Parameters
| Parameter | Type | Description |
|---|---|---|
sign_name | string | The name of the sign to retrieve. See Valid sign names below. |
Response
| Field | Type | Description |
|---|---|---|
name | string | Sign identifier. |
label | string | Human-readable sign name. |
condition | string or null | Back-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
| HTTP | Code | Condition |
|---|---|---|
| 404 | NOT_FOUND | sign_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
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
| Parameter | Description |
|---|---|
sign_name | The sign to analyze. Must be a sign available for standalone analysis — see Valid sign names. |
Request Body
Requests use Content-Type: multipart/form-data.
| Field | Type | Required | Description |
|---|---|---|---|
| audio | file | Required | Audio 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). |
| diarize | boolean | Optional | Whether to apply speaker diarization. Default: false. |
| webhook_url | string | Optional | Per-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_key | string | Optional | Required 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 name | Label |
|---|---|
airway-obstruction-pattern | Airway Obstruction Pattern |
alcohol-use-pattern | Alcohol Use Pattern |
allergy | Allergy |
anxiety | Anxiety |
attention-dysregulation | Attention Dysregulation |
cognitive-impairment | Cognitive Impairment |
dehydration | Dehydration |
elevated-androgens | Elevated Androgens |
elevated-blood-pressure | Elevated Blood Pressure |
fatigue | Fatigue |
head-impact | Head Impact |
hypervigilance | Hypervigilance |
iron-deficiency | Iron Deficiency |
metabolic-load | Metabolic Load |
mood-disruption | Mood Disruption |
stress | Stress |
substance-use-pattern | Substance 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
| HTTP | Code | Condition |
|---|---|---|
| 404 | NOT_FOUND | sign_name is not a recognized sign or is not available for standalone analysis. Check the name against Valid sign names. |
| 400 | AUDIO_TOO_SHORT | Recording is under 15 seconds. |
| 400 | AUDIO_TOO_LONG | Recording exceeds 20 minutes. |
| 400 | UNSUPPORTED_FORMAT | Audio format is not WAV, FLAC, MP3, or M4A. |
| 422 | AUDIO_POOR_QUALITY | Recording 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.
