Credits
All modules draw on one shared credit balance per client. There is a single ledger — Speech, Interview, and CV DeepMatch deduct from it when work succeeds, and a single endpoint reports it.
Pricing
| Module | Cost |
|---|---|
| Speech analysis | 1 credit per minute of audio duration (rounded up). |
| Interview | Per-minute interview rate (rounded up to the next minute). |
| CV DeepMatch | 3 credits per match. |
A 3 min 20 s speech run costs 4 credits; a 12 min 5 s run costs 13.
CV DeepSearch is currently in preview and not yet metered — ingest and search calls don't deduct credits yet. Metering lands in a follow-up release.
When credits are charged
You are charged only when a unit of work succeeds, never on a failed run:
| Outcome | Charge |
|---|---|
success / completed / finished | Full charge. |
partial (Speech) | Proportional to scores produced. |
failed | No charge. |
Reserve, then charge (Speech)
For Speech (POST /api/v1/speech/analyze), credits are held at submit and
only charged when the analysis succeeds:
- At submit the request's cost (1 credit per started minute of audio, minimum 1) is reserved against your available balance. Available = your credit balance minus credits currently held for other in-flight requests. If the cost exceeds available, the request is rejected and nothing is reserved.
- On success the held credits are charged (your balance drops by the cost).
- On failure the hold is released and your balance is untouched.
This means concurrent submissions can never collectively outspend your balance, and you are never billed for a run you didn't receive.
Pre-submit check
A Speech request is rejected when its cost exceeds your available balance (balance minus active holds). There is no flat minimum — a small balance can fund a short clip:
402 INSUFFICIENT_CREDITS
The error body includes details.cost and details.available. In-progress and
queued work always completes; queued requests keep their hold until they run.
Checking your balance
curl "https://platform.zenhire.ai/api/v1/credits" \
-H "X-API-Key: zh_api_…"
Returns the current balance, lifetime usage breakdown, and recent
transactions across all modules. See the full schema + interactive "Try
it" console at GET /api/v1/credits.
GET /api/v1/credits is a Universal endpoint — it belongs to no
single module and lives directly under /api/v1.
Credits in poll/result responses
Successful Speech polls (and the equivalent terminal responses on other
modules) include a credits object so you know exactly what was charged:
{
"credits": {
"deducted": 3,
"remainingBalance": 538,
"audioDurationMinutes": 3
}
}
Adding credits
Self-serve top-up isn't available yet. Contact ZenHire support to top up credits — we process the request and your balance updates immediately.