Skip to content
AmplifierDocs
Esc
navigateopen⌘Jpreview
On this page

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 KeysProvide Name for KeyCreate 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, and POST /v2/account/webhook. GET endpoints have no body.
  • Analyze submit and GET /v2/jobs/{job_id} return HTTP 200 with a job object. POST /v2/groups returns 201 Created. Trajectory and aggregate GETs return a running / done envelope, 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, and status. 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.

Was this page helpful?