Skip to main content

Error codes

Every code below appears as error.code in the standard error envelope:

{
"error": {
"code": "<CODE>",
"message": "…",
"timestamp": "2026-04-21T12:34:56.789Z",
"requestId": "req_…"
}
}

code, message, and timestamp are always present. requestId is included once the route handler has generated one (middleware-level rejections like INVALID_API_KEY omit it). Rate-limit and service-warming responses add retryAfterSeconds alongside the standard Retry-After HTTP header.

400 — Validation​

CodeWhenAction
MISSING_AUDIO_FILENo audio field in the multipart body.Add the file.
UNSUPPORTED_FORMATFile isn't a valid MP3/WAV/M4A/WebM/OGG/FLAC.Convert or fix the file.
AUDIO_TOO_SHORTAudio under 3 minutes.Submit longer audio.
AUDIO_TOO_LONGAudio over 45 minutes.Trim the audio.
AUDIO_DURATION_UNAVAILABLEThe audio duration could not be read (file corrupted or unsupported).Re-encode the file and resubmit.
FILE_TOO_LARGEFile exceeds 25 MB.Compress or trim.
INVALID_LANGUAGE_CODENot a 2-letter ISO 639-1 code.Use en, es, fr, etc.
INVALID_EXTERNAL_IDexternalId empty or > 255 chars.Provide 1–255 chars, or omit.
INVALID_METADATAmetadata field is not valid JSON.Fix the JSON.
INVALID_STATUSstatus query param on /runs not in allow-list.Use a valid lifecycle value.
INVALID_SERVICE_TYPEserviceType query param on /runs not in allow-list.Use speech or cv_deepmatch.
INVALID_DATEcreatedAfter/createdBefore not valid ISO 8601.Use a proper datetime.
INVALID_PARAMETERSSome cutSetting out of bounds.Check parameter ranges.
JOB_NOT_FOUNDA CV DeepMatch submit / CV DeepSearch search referenced a saved job (position_id / job_id, no inline content) that doesn't exist for your client.Send the inline content, or create the job first via POST /api/v1/jobs. See the Jobs guide.

401 — Authentication​

CodeAction
MISSING_API_KEYNo X-API-Key / Authorization header. Add it.
INVALID_API_KEYKey unrecognized or marked inactive. Check your env var.
API_KEY_EXPIREDKey's expiry has passed. Extend the key's expiry in the console (API Keys → Extend expiry); the key value does not change.
CLIENT_INACTIVEThe account behind this key is disabled. Contact support.

402 — Credits​

CodeAction
INSUFFICIENT_CREDITSTop up before retrying. Check GET /api/v1/credits.

403 — Permissions​

CodeAction
MISSING_PERMISSIONThe account behind this key isn't entitled to the module you called. Contact your account manager.
IP_NOT_ALLOWEDThe API key has an IP whitelist and your request didn't originate from an allowed address.

404 — Not found​

CodeAction
REQUEST_NOT_FOUNDWrong requestId, or it belongs to a different client.

409 — Conflict​

CodeAction
POSITION_ID_CONFLICTAn active job with this position_id already exists for your client (POST/PATCH /api/v1/jobs). Archive it first or PATCH the existing job.

429 — Rate limiting​

CodeWhereAction
RATE_LIMIT_EXCEEDEDSubmit endpoint.Exponential backoff.
POLL_RATE_LIMITEDPoll endpoint, same requestId polled faster than every 10s.Respect Retry-After.

503 — Service unavailable​

CodeAction
SERVICE_WARMING_UPScoring service still warming up (15–20 min after a new deploy). Retry with backoff.

Terminal failures on a run (status: "failed")​

Returned inside a 200 OK poll response — the error.code reveals which pipeline step failed. No credits are charged on failed runs.

CodeMeaning
TRANSCRIPTION_FAILEDAudio quality issue or transcription provider error.
TRANSCRIPTION_LOW_CONFIDENCEAudio content doesn't match the requested language.
SCORING_FAILEDScoring service error after retry.
VOCAB_MODEL_TIMEOUTVocabulary model timed out.
FLUENCY_MODEL_TIMEOUTFluency model timed out.
ACCENT_SCORE_UNAVAILABLEAccent could not be measured. The run fails rather than returning a score we didn't measure — resubmit.
SERVICE_CONFIGURATION_ERRORExternal provider misconfigured. Contact support.
STUCK_TIMEOUTRun exceeded its watchdog timeout.
INTERNAL_ERRORUnexpected error. Contact support.