ZenHire API Platform
The ZenHire API Platform is organized into four modules plus a set of Universal concepts shared across all of them:
- Speech Analysis — CEFR-aligned vocabulary, fluency, and accent scores from a raw interview recording, plus a full transcript with speaker diarization and automatic candidate detection.
- Interview — real-time AI interview sessions. The AI conducts a live spoken interview, streams bidirectional audio, and produces a recording and transcript when the session ends.
- CV DeepMatch — structured match scoring between a candidate's CV and a job description.
- CV DeepSearch — the inverse of CV DeepMatch: ingest a corpus of parsed CVs once, then run repeated searches that return the best-matching candidates for a position.
Speech Analysis is asynchronous: you submit audio, get an
id back immediately, then poll for results.
Typical processing time is 2–5 minutes. Interview is real-time:
sessions are driven over a live channel with sub-second AI response latency.
CV DeepMatch is asynchronous: submit a CV + JD, poll (or get a
signed webhook) for the match. CV DeepSearch is asynchronous: ingest a
corpus, then submit a search and poll (or get a webhook) for the best-first
candidates.
Every module shares one set of Universal rules —
authentication, the run
id model, the
standard error envelope,
credits, and health. Learn them
once and they apply across all four.
Across all modules, the public surface is request-only: API keys and Projects are created and managed in the ZenHire dashboard, not via the API. See Authentication for how keys and Projects work.
Quickstart, guides, and code examples — everything you need to integrate the ZenHire API end-to-end.
Read the guides →Every endpoint, request, response, and error code — generated from the OpenAPI spec with an interactive "Try it" console.
Browse the reference →Speech Analysis endpoints
Base URL: https://platform.zenhire.ai
| 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 flow. |
GET | /api/v1/speech/runs | List your runs with optional filters. |
For full end-to-end example code, see Your first request.
CV DeepMatch endpoints
Base URL: https://platform.zenhire.ai
| Method | Path | What it does |
|---|---|---|
POST | /api/v1/cvdeepmatch/submit | Submit a CV + JD — returns id. |
GET | /api/v1/cvdeepmatch/{id} | Poll a single match. |
GET | /api/v1/cvdeepmatch/requests | List your matches. |
See the CV DeepMatch overview to get started.
CV DeepSearch endpoints
Base URL: https://platform.zenhire.ai
| Method | Path | What it does |
|---|---|---|
POST | /api/v1/cvds/candidates | Ingest parsed CVs into a corpus (idempotent batch upsert). |
GET | /api/v1/cvds/candidates[/{external_id}] | Check per-candidate embedding status. |
POST | /api/v1/cvds/search | Trigger a search for one position — returns a run id. |
GET | /api/v1/cvds/runs/{id} | Poll a search run. |
See the CV DeepSearch overview to get started.
Universal endpoints
Credits and health belong to no single module and live directly under
/api/v1:
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/credits | Check your shared balance. See Credits. |
GET | /api/v1/health | Service status (no authentication). See Health. |
Interview API endpoints
Base URL: https://platform.zenhire.ai
Run AI voice interviews for your candidates — create a persona, start a per-candidate session, hand the candidate a single-use link, and review the recording + transcript in-platform.
| Method | Path | What it does |
|---|---|---|
POST | /api/v1/interview/personas | Create a reusable interviewer persona (role + language). |
GET | /api/v1/interview/personas | List your personas. |
POST | /api/v1/interview/personas/{personaId}/sessions | Start a session — returns id and a candidate link. |
GET | /api/v1/interview/sessions | List your sessions. |
GET | /api/v1/interview/sessions/{sessionId} | Fetch session status and metadata. |
GET | /api/v1/interview/sessions/{sessionId}/recording | The session recording (streamed audio/wav). |
GET | /api/v1/interview/sessions/{sessionId}/transcript | The session transcript. |
See Interview API overview to get started.
The full contract is also available as a raw OpenAPI 3.1 file: → Download openapi.yaml
🤖 Building with AI?
Download llms-full.txt — the entire documentation compiled into a single plain-text bundle you can paste into Claude, GPT, or any LLM as context. Regenerated on every docs build, so it's always in sync with the live API.
There's also a short index at llms.txt if you only want the table of contents.