API Reference
Base URL, authentication, limits, and the endpoint map.
| Resource | What it does |
|---|---|
| Model API | List named bundles, get one bundle, or submit audio to a bundle. When the job is done, result has summary, signals[], audio_quality, and extended_metrics. |
| Sign API | List standalone signs, get one sign, or submit audio for one sign. When done, result has signal and audio_quality. |
| Jobs API | List jobs on the account, or retrieve one job (including its completed result). |
| Audio Uploads | Mint a signed PUT URL (upload_ref + required_headers), PUT the file, then pass that ref as audio_upload_ref on analyze instead of multipart audio. |
| Groups API | Create, list, and delete groups; add or remove jobs. Does not run analysis. |
| Longitudinal API | Analyze into a group (raw or vs history); read a subject’s trajectory; read a cohort aggregate. |
| Account API | Set the account webhook; read remaining credits. API keys are created in the console, not via these endpoints. |
Analyze calls are asynchronous: they return a job immediately. Read it from Jobs API or a webhook — Jobs, Polling, and Webhooks.
Base URL
https://api.amplifierhealth.com
Endpoints use the /v2 prefix — for example /v2/models/pulse/analyze.
Authentication
All requests require two headers.
| Header | Description |
|---|---|
X-Account-ID |
Your account identifier |
X-API-Key |
Your API key |
Sign up at console.amplifierhealth.com, open the console, and create an API key: API Keys → Provide Name for Key → Create Key. Your account ID is shown in the console. See Quickstart for the full walkthrough.
curl -X GET "https://api.amplifierhealth.com/v2/account/credits" \
-H "X-Account-ID: your-account-id" \
-H "X-API-Key: your-api-key"const response = await fetch("https://api.amplifierhealth.com/v2/account/credits", {
headers: {
"X-Account-ID": process.env.AMPLIFIER_ACCOUNT_ID,
"X-API-Key": process.env.AMPLIFIER_API_KEY,
},
});
const data = await response.json();# Requires httpx: pip install httpx
import os
import httpx
response = httpx.get(
"https://api.amplifierhealth.com/v2/account/credits",
headers={
"X-Account-ID": os.environ["AMPLIFIER_ACCOUNT_ID"],
"X-API-Key": os.environ["AMPLIFIER_API_KEY"],
},
)
data = response.json()Request and response conventions
- All endpoints return JSON.
- Analyze endpoints accept
Content-Type: multipart/form-data. JSON bodies:POST /v2/audio/uploads, Groups create/membership, andPOST /v2/account/webhook. GET endpoints have no body. - Analyze submit and
GET /v2/jobs/{job_id}return HTTP200with a job object.POST /v2/groupsreturns201 Created. Trajectory and aggregate GETs return arunning/doneenvelope, not a job — see Longitudinal API. - A job’s outcome is in
status(queued,running,done,failed,timed-out), not only HTTP codes. See Jobs API. - Field definitions: Response Schema. Enumerated values: Enumerations.
- Errors: HTTP status plus JSON
code,message, andstatus. See Errors.
Limits
| Limit | Value |
|---|---|
| Maximum audio file size | 32 MB per upload |
| Maximum audio duration | 20 minutes (1200 seconds) |
| Minimum audio duration | 15 seconds |
| Supported formats | WAV, FLAC, MP3, M4A |
For longer recordings, MP3 or FLAC typically keep file size under the 32 MB limit. See Audio Requirements for recording guidance.
Rate limits
The API enforces per-account rate limits using a sliding 60-second window. Limits vary by rate limit plan:
| Plan | General endpoints | Upload / analyze endpoints | Job status polling |
|---|---|---|---|
| Standard (default) | 10 requests/min | 5 requests/min | 30 requests/min |
| Enterprise | 1,000 requests/min | 500 requests/min | 1,000 requests/min |
Upload / analyze endpoints: POST /v2/audio/uploads; POST /v2/models/{model_name}/analyze; POST /v2/signs/{sign_name}/analyze; the four group-aware analyze routes on the Longitudinal API (.../analyze and .../analyze/longitudinal for models and signs).
Job status polling: GET /v2/jobs/{job_id} has its own limit, sized for the recommended 2–5 second polling cadence described in Jobs, Polling, and Webhooks.
General endpoints (everything else documented here): catalog reads (GET /v2/models, GET /v2/signs, and their {name} variants), GET /v2/jobs, GET /v2/account/credits, POST /v2/account/webhook, Groups API lifecycle and membership, and GET /v2/groups/{group_id}/longitudinal plus GET /v2/groups/{group_id}/aggregate.
When a rate limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header indicating seconds until the window resets. See Errors for retry guidance.
To request rate limit changes, contact sales@amplifierhealth.com.
Endpoints by resource
| Page | Endpoints |
|---|---|
| Model API | GET /v2/models, GET /v2/models/{model_name}, POST /v2/models/{model_name}/analyze |
| Sign API | GET /v2/signs, GET /v2/signs/{sign_name}, POST /v2/signs/{sign_name}/analyze |
| Jobs API | GET /v2/jobs, GET /v2/jobs/{job_id} |
| Groups API | POST /v2/groups, GET /v2/groups, DELETE /v2/groups/{group_id}, GET /v2/groups/{group_id}/jobs, POST /v2/groups/{group_id}/jobs, DELETE /v2/groups/{group_id}/jobs/{job_id} |
| Longitudinal API | POST .../groups/{group_id}/analyze, POST .../analyze/longitudinal (model and sign), GET /v2/groups/{group_id}/longitudinal, GET /v2/groups/{group_id}/aggregate |
| Account API | POST /v2/account/webhook, GET /v2/account/credits |
| Audio Uploads | POST /v2/audio/uploads |
Shared lookups: Response Schema, Enumerations, Errors.