Speech Analysis overview
The Speech module returns CEFR-aligned vocabulary, fluency, and accent scores from an interview recording, plus a full transcript with speaker diarization and automatic candidate detection.
Base URL: https://platform.zenhire.ai/api/v1/speech
Speech is asynchronous: you submit audio, get an id
back immediately, then poll for results. Typical processing time is 2–5
minutes.
Endpoints
All public Speech endpoints are namespaced under /api/v1/speech/*:
| Method | Path | What it does |
|---|---|---|
POST | /api/v1/speech/analyze | Submit an audio file — returns id. See Quickstart. |
GET | /api/v1/speech/analyze/{id} | Poll for the result. See Async polling. |
GET | /api/v1/speech/runs | List your runs with the unified filters. |
Credits and health are not Speech-specific — they're
Universal endpoints at /api/v1/credits and
/api/v1/health.
Public API vs. the console playground
There are two completely separate Speech surfaces. Don't confuse them.
| Public Speech API | Console playground | |
|---|---|---|
| Audience | Your server-to-server integration | A human in the ZenHire dashboard |
| Paths | /api/v1/speech/* | /api/transcribe, /api/runs/* (internal) |
| Auth | X-API-Key | Logged-in browser session |
| Documented here? | Yes — this is the public contract | No — internal-only, not part of the public namespace |
| Counts toward API runs? | Yes — appears in GET /api/v1/speech/runs | No — playground runs are tracked separately |
The console playground (/api/transcribe, /api/runs/*) exists so staff
can try the analyzer interactively from the dashboard. It is a separate
session-authed surface, is not under the /api/v1/speech/* public
namespace, and is not part of the documented public API. Build against
/api/v1/speech/* only.
Scores
A successful run produces vocabulary, fluency, and accent scores plus an overall CEFR level (A1–C2). See Candidate detection and Multilingual scoring for the details, and the Quickstart for an end-to-end first call.
Identifiers, errors, credits
These follow the shared Universal model:
- The run
id— poll and list with it. - Your
externalIdcorrelation tag — echoed back, filterable. - The standard error envelope on every 4xx/5xx.
- One shared credit ledger.