Skip to content
AmplifierDocs
Esc
navigateopen⌘Jpreview
On this page

Quickstart

Create an account, get credentials, and make one successful analyze call.

Walkthrough uses pulse (General Wellness). Other models: same request shape; change the path name and the signals in the result.

Step 1 — Create an account

Sign up at console.amplifierhealth.com, verify your email, and sign in to the console.

Step 2 — Get your credentials

In the console, copy your account ID and create an API key: API KeysProvide Name for KeyCreate Key. Send them as the X-Account-ID and X-API-Key headers on every request. Store the API key in an environment variable or a secrets manager rather than committing it to source control. See Authentication.

Step 3 — Submit audio

POST to /v2/models/{model_name}/analyze with multipart/form-data:

  • Headers: X-Account-ID and X-API-Key
  • The model name goes in the URL path; the only form field needed is the recording file as audio
curl -X POST https://api.amplifierhealth.com/v2/models/pulse/analyze \
  -H "X-Account-ID: your-account-id" \
  -H "X-API-Key: your-api-key" \
  -F "audio=@recording.wav;type=audio/wav"
const fs = require("fs");

const form = new FormData();
form.append("audio", new Blob([fs.readFileSync("recording.wav")], { type: "audio/wav" }), "recording.wav");

const response = await fetch("https://api.amplifierhealth.com/v2/models/pulse/analyze", {
  method: "POST",
  headers: {
    "X-Account-ID": process.env.AMPLIFIER_ACCOUNT_ID,
    "X-API-Key": process.env.AMPLIFIER_API_KEY,
  },
  body: form,
});

const data = await response.json();
# Requires httpx: pip install httpx
import os
import httpx

with open("recording.wav", "rb") as f:
    audio_bytes = f.read()

response = httpx.post(
  "https://api.amplifierhealth.com/v2/models/pulse/analyze",
  headers={
      "X-Account-ID": os.environ["AMPLIFIER_ACCOUNT_ID"],
      "X-API-Key": os.environ["AMPLIFIER_API_KEY"],
  },
  files={"audio": ("recording.wav", audio_bytes, "audio/wav")},
)

data = response.json()

Valid model names and optional fields (diarization, per-request webhooks): Model API.

Each file must be 32 MB or smaller. For longer recordings, prefer MP3 or FLAC so the file stays under the limit — details in Audio Requirements.

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

{
  "job_id": "189bce4a-52cb-4e60-8586-cef89e719109",
  "status": "queued",
  "created_at": "2026-02-22T09:14: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": "model",
  "api_version": "v2",
  "model_name": "pulse"
}

Step 4 — Retrieve the result

Use the job_id from Step 3 with GET /v2/jobs/{job_id}.

Poll at 2–5 second intervals. Most jobs complete within a few seconds; longer recordings may take up to 30 seconds. This cadence fits within the job status polling rate limit. For the full lifecycle, including webhook delivery, see Jobs, Polling, and Webhooks.

curl https://api.amplifierhealth.com/v2/jobs/189bce4a-52cb-4e60-8586-cef89e719109 \
  -H "X-Account-ID: your-account-id" \
  -H "X-API-Key: your-api-key"
const response = await fetch("https://api.amplifierhealth.com/v2/jobs/189bce4a-52cb-4e60-8586-cef89e719109", {
  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/jobs/189bce4a-52cb-4e60-8586-cef89e719109",
  headers={
      "X-Account-ID": os.environ["AMPLIFIER_ACCOUNT_ID"],
      "X-API-Key": os.environ["AMPLIFIER_API_KEY"],
  },
)

data = response.json()

Result

Wellness model (pulse) job with elevated stress and anxiety indicators:

{
  "job_id": "189bce4a-52cb-4e60-8586-cef89e719109",
  "status": "done",
  "created_at": "2026-02-22T09:14:00Z",
  "completed_at": "2026-02-22T09:14:03Z",
  "job_type": "model",
  "api_version": "v2",
  "model_name": "pulse",
  "audio_content_type": "audio/wav",
  "audio_size_bytes": 876032,
  "audio_duration_seconds": 27.4,
  "audio_sample_rate": 16000,
  "result": {
    "summary": {
      "overall_level": "elevated",
      "recommended_action": "escalate",
      "flagged_count": 3,
      "primary_signals": ["stress", "anxiety", "fatigue"],
      "description": {
        "summary": "Voice patterns suggest elevated indicators for stress and anxiety. Speech rate and rhythmic patterns were notably different from typical patterns.",
        "vocal_features": [
          {
            "feature": "speech_rate",
            "label": "Speech Rate",
            "value": 3.2,
            "unit": "syllables/s",
            "value_interpretation": "reduced"
          }
        ]
      }
    },
    "signals": [
      {"name": "stress", "label": "Stress", "score": 0.81, "level": "elevated", "flagged": true},
      {"name": "anxiety", "label": "Anxiety", "score": 0.71, "level": "elevated", "flagged": true},
      {"name": "fatigue", "label": "Fatigue", "score": 0.54, "level": "consider", "flagged": true}
    ],
    "audio_quality": {
      "issues": [],
      "voice_percentage": 82.4,
      "audio_clarity": 74.1
    },
    "extended_metrics": [
      {
        "metric_id": "anxious-mood",
        "label": "Anxious Mood",
        "score_mean": 0.72,
        "score_std": 0.08,
        "low_anchor": "tranquil",
        "high_anchor": "panicked"
      }
    ]
  }
}

Reading this response

  • job.result.summary.recommended_action is escalate — trigger your EAP or wellness escalation workflow.
  • job.result.summary.primary_signals lists the top contributors: stress, anxiety.
  • job.result.summary.description.summary is a narrative of the voice findings — surface it to qualified staff as supporting context, and keep it out of automated alerts and employee-facing output.
  • job.result.summary.description.vocal_features lists the acoustic measurements that informed the summary — use label and value_interpretation for display, and keep feature for internal use.
  • In job.result.signals, use level and flagged to decide what to show. UI: level and label. Internal: score. Labels: Display guidelines.
  • job.result.audio_quality.issues is empty — the recording met quality standards.
  • job.result.extended_metrics contains dimension scores for the model bundle.

Timestamps and edge cases

Parse timestamps with an ISO 8601-compatible library. The API may return timestamps with or without fractional seconds and with varying timezone designators.

Job datetimes (created_at, completed_at): Response Schema — Timestamps. Jobs that end without a result (result, HTTP 200): Job status: failed.

audio_quality fields (issues, voice_percentage, audio_clarity): Response Schema — audio_quality. Issue codes and what to do about them: Audio quality issue codes.

Next steps

Was this page helpful?