Docs · Errors

Error Catalog

Every error response from the SonicVox API uses a consistent envelope. Here's what each code means and how to recover.

Seeing 5xx or service_unavailable across the board? Check live service status first — it tells you whether it's us or your account.

Error envelope shape

Every non-2xx response has this structure:

{
  "error": {
    "type":       "invalid_request_error",     // category — branch on this for retry policy
    "code":       "validation_error",          // specific code (see below)
    "message":    "text: String must contain at most 50000 character(s)",
    "status":     422,                         // mirrors the HTTP status
    "request_id": "9f1c2e40-3b7a-4d18-9a55-1c0e2f7b6a31",
    "doc_url":    "https://staging.sonicvox.ai/docs/errors/validation_error"
  }
}

The X-Request-Id header is also set on every response — capture it on errors so we can trace any 5xx in our logs.

validation_errorHTTP 422

invalid_request_error

A request parameter failed validation.

Common causes
  • Missing a required field (e.g. input_key)
  • Value outside the allowed range (e.g. crossfade > 30)
  • Invalid enum value (e.g. mode: 'wrong_mode')
  • S3 key contained invalid characters or '..'
Recovery

The error.message + error.param fields tell you exactly which parameter failed and the valid range. Fix the value and retry — validation errors are not retryable as-is.

invalid_requestHTTP 400

invalid_request_error

The request was malformed or semantically invalid.

Common causes
  • A required parameter was absent or in the wrong shape
  • Conflicting parameters were supplied together
Recovery

Check the error.message and correct the request before retrying.

invalid_inputHTTP 400

invalid_request_error

An input value was rejected before processing began.

Common causes
  • Empty or out-of-range field value
  • Unsupported option for this endpoint
Recovery

Fix the flagged input and retry.

invalid_bodyHTTP 400

invalid_request_error

The request body did not match the schema this endpoint expects.

Common causes
  • Workflows run endpoint called with anything other than { inputs?: { <node_id>: string } }
Recovery

Send the documented body shape. The error.message states the expected schema.

text_requiredHTTP 400

invalid_request_error

A 'text' field is required — the cloned voice speaks this text.

Common causes
  • POST /v1/voices (clone) was called with no text, or with whitespace only
Recovery

Send a non-empty 'text' field alongside the reference audio and retry.

invalid_jsonHTTP 400

invalid_request_error

The request body was not valid JSON.

Common causes
  • Malformed JSON (trailing comma, unquoted key, truncated body)
  • Wrong Content-Type or an empty body where JSON was required
Recovery

Serialize the body with a real JSON encoder and send Content-Type: application/json.

reference_requiredHTTP 400

invalid_request_error

A reference audio clip was required but not provided.

Common causes
  • Voice-cloning / reference-based endpoint called without a reference clip
Recovery

Attach the required reference clip (see the endpoint's docs) and retry.

reference_invalidHTTP 400

invalid_request_error

The supplied reference audio clip could not be used.

Common causes
  • Reference clip was unreadable, too short, or silent
  • Reference key pointed at a missing or invalid object
Recovery

Provide a clean reference clip (a few seconds of clear speech) and retry.

unsupported_output_formatHTTP 400

invalid_request_error

The requested output_format could not be produced.

Common causes
  • output_format is not one the transcoder supports
  • The format is momentarily unavailable on the router (e.g. mp3 with no ffmpeg)
Recovery

Request output_format: "wav" (always available) or one of the documented formats. Nothing is charged when this is returned.

unsupported_mediaHTTP 415

invalid_request_error

The uploaded file is not a supported audio/video type.

Common causes
  • File failed the upload content-sniff (not real audio/video)
  • A disallowed or dangerous file type was submitted
Recovery

Upload a standard audio (WAV/MP3/M4A) or video (MP4) file and retry.

file_too_largeHTTP 413

invalid_request_error

The uploaded file exceeded the size cap.

Common causes
  • Request body exceeded the 200 MB upload ceiling — bodies over it are rejected at the edge, before the endpoint runs
  • File exceeded the endpoint's own, smaller cap (voice enhancement 50 MB, speech-to-text 100 MB)
Recovery

Split or compress the input (use the split tool first) and retry. 200 MB is the hard ceiling for bytes sent through the API.

invalid_test_typeHTTP 400

invalid_request_error

An unrecognized test/diagnostic type was requested.

Common causes
  • The test_type value is not one this endpoint supports
Recovery

Use one of the documented test types and retry.

not_foundHTTP 404

invalid_request_error

The requested resource does not exist.

Common causes
  • Unknown id (agent, job, conversation, voice, etc.)
  • Resource belongs to a different account
Recovery

Verify the id and that your key's account owns the resource.

voice_not_foundHTTP 404

invalid_request_error

The requested voice id does not exist or isn't accessible.

Common causes
  • Unknown voice_id
  • Voice not shared with your account
Recovery

List available voices and use a valid voice_id.

workflow_not_foundHTTP 404

invalid_request_error

No workflow with that id exists on this account.

Common causes
  • Unknown workflow id
  • Workflow belongs to a different account
Recovery

List your workflows and use an id your key's account owns.

workflow_emptyHTTP 400

invalid_request_error

The workflow exists but has no nodes, so there is nothing to run.

Common causes
  • The workflow was created but never given any nodes
Recovery

Add at least one node in the workflow editor, then start the run again.

unknown_inputHTTP 400

invalid_request_error

An input key in the request does not match any fillable input of the workflow.

Common causes
  • A node_id in `inputs` isn't an input node of this workflow
  • Typo in the node id
Recovery

The error.message lists every fillable input id for that workflow — use one of those keys.

run_not_foundHTTP 404

invalid_request_error

No such run for that workflow on this account.

Common causes
  • Unknown run id
  • Run id belongs to a different workflow or account
Recovery

Poll with the run id returned by the run-create call on the same workflow.

missing_api_keyHTTP 401

authentication_error

No API key was supplied.

Common causes
  • The Authorization: Bearer <key> header was absent
Recovery

Send your key in the Authorization header on every request.

invalid_api_keyHTTP 401

authentication_error

The API key header is missing, malformed, or unknown.

Common causes
  • Key was rotated or revoked in the API keys dashboard
  • Malformed key value
Recovery

Regenerate the key in /app/admin/api-keys and update your environment. Never commit keys to source control.

insufficient_scopeHTTP 403

permission_error

The API key lacks a scope required by this endpoint.

Common causes
  • The key was minted without the scope this route requires
Recovery

Mint a key with the needed scope (see each endpoint's required scope) and retry.

account_key_not_agent_scopedHTTP 403

permission_error

An account-level key was used on an agent-scoped endpoint.

Common causes
  • Account-level keys cannot operate AS a specific agent
Recovery

Use an agent-bound key for agent-scoped operations.

agent_scope_mismatchHTTP 403

permission_error

An agent-bound key was used against a different agent.

Common causes
  • The key is bound to agent A but the request targeted agent B
Recovery

Use the key minted for the agent you're addressing.

plan_requiredHTTP 403

permission_error

Your plan does not include this endpoint or feature.

Common causes
  • Feature gated to a higher plan tier
Recovery

Upgrade your plan to access this endpoint.

plan_limit_exceededHTTP 403

permission_error

The request is not allowed under your current plan's limits.

Common causes
  • A per-plan quota (other than daily count or credits) was exceeded
Recovery

The error.message explains the limit. Upgrade your plan or reduce usage.

content_policyHTTP 403

permission_error

The request was blocked by content / voice-safety policy.

Common causes
  • Text or audio tripped a moderation rule
  • Voice-safety (impersonation / consent) policy blocked the request
Recovery

Adjust the input to comply with the content policy and retry.

impersonation_blockedHTTP 400

invalid_request_error

The reference clip was blocked by the anti-impersonation gate.

Common causes
  • The reference audio matched a protected/known voice
Recovery

Use a reference clip you have the right to clone.

voice_not_availableHTTP 403

permission_error

The voice exists but cannot currently be synthesized.

Common causes
  • The cloned voice is still awaiting moderation review
  • The voice is under a takedown hold
Recovery

This is NOT an auth failure — do not rotate your key. Pick a different voice_id, or wait for the voice to clear review (the message says which state it is in).

ip_blockedHTTP 403

permission_error

The request originated from a blocked IP address.

Common causes
  • Your IP is on a denylist (abuse mitigation)
Recovery

Contact support@sonicvox.ai if you believe this is a mistake.

insufficient_creditsHTTP 402

billing_error

You don't have enough credits to complete this request.

Common causes
  • Credit balance below the cost of the requested operation
  • Auto top-up disabled or failed and the prepaid balance is exhausted
Recovery

Top up credits (or enable Auto Top-Up) in billing, then retry. This is NOT retryable until the balance is restored.

daily_limit_exceededHTTP 429

rate_limit_error

You hit your plan's daily usage cap for this operation.

Common causes
  • The per-day request/usage allowance for your plan is used up
Recovery

Retry after the daily window resets, or upgrade your plan for a higher cap.

rate_limitHTTP 429

rate_limit_error

You exceeded the per-API-key rate limit for this endpoint.

Common causes
  • Too many requests per minute to a single tool endpoint
  • Multiple concurrent calls hitting the same limit bucket
Recovery

Retry after the Retry-After header value (seconds). Implement exponential backoff. Some handlers emit this same condition as rate_limited or rate_limit_exceeded — treat all three identically.

rate_limitedHTTP 429

rate_limit_error

Alias of rate_limit emitted by some handlers — same meaning.

Common causes
  • Per-key rate limit exceeded
Recovery

Back off per the Retry-After header and retry.

rate_limit_exceededHTTP 429

rate_limit_error

Alias of rate_limit emitted by some handlers — same meaning.

Common causes
  • Per-key rate limit exceeded
Recovery

Back off per the Retry-After header and retry.

transcription_failedHTTP 502

media_processing_error

The transcription / ASR step failed upstream.

Common causes
  • ASR worker error
  • Unintelligible or corrupt audio
Recovery

Retry with a clean input; if it persists, contact support with the request_id.

enhancement_failedHTTP 502

media_processing_error

An audio enhancement / effect step failed upstream.

Common causes
  • Effects/enhancement worker error
Recovery

Retry; if it persists, contact support with the request_id.

clone_errorHTTP 502

media_processing_error

The voice-cloning worker returned an error.

Common causes
  • Cloning service failure (status is passed through from upstream)
Recovery

Retry with a valid reference; if it persists, contact support with the request_id.

tts_errorHTTP 502

media_processing_error

The text-to-speech worker returned an error.

Common causes
  • TTS engine failure
Recovery

Retry; if it persists, contact support with the request_id.

voice_service_errorHTTP 502

media_processing_error

A voice service call failed upstream.

Common causes
  • Voice backend returned an error
Recovery

Retry; if it persists, contact support with the request_id.

worker_errorHTTP 502

media_processing_error

A generic processing worker returned an error.

Common causes
  • Upstream GPU/worker failure
Recovery

Retry with exponential backoff; if it persists, contact support with the request_id.

unknown_endpointHTTP 404

invalid_request_error

The requested path is not an endpoint of this API.

Common causes
  • A typo in the URL
  • An endpoint from a different API or a newer version
Recovery

Check the API reference for the exact path. Note that paths are case-sensitive and have no trailing slash.

tts_request_rejectedHTTP 422

invalid_request_error

The synthesis engine could not process this request.

Common causes
  • An unsupported model / language / voice combination
  • Text the engine cannot render (e.g. a script the chosen model does not cover)
Recovery

Check GET /api/v1/models for the languages and capabilities of each engine. Retrying unchanged will not help — nothing was charged.

clone_request_rejectedHTTP 422

invalid_request_error

The cloning engine could not use this reference clip.

Common causes
  • The clip is unusable for cloning — too noisy, silent, or an unsupported encoding
Recovery

Send a clean 3–60s recording of a single speaker. Retrying the same clip will not help.

voice_not_permittedHTTP 403

permission_error

You may not convert into the requested target voice.

Common causes
  • The target voice is not yours, published, or shared to the community
  • The voice has not cleared the impersonation screen
Recovery

Use a voice you own or one from the public library. GET /api/v1/voices lists every voice this key may use.

workflows_unavailableHTTP 403

permission_error

Workflows is not enabled for this account.

Common causes
  • Workflows is an admin-gated MVP and the key's owner is not enabled for it
Recovery

Contact support to be enabled. The endpoints stay published so the contract is stable when access is granted.

conversion_failedHTTP 502

media_processing_error

A Voice Changer job could not be staged or queued.

Common causes
  • The uploaded audio could not be staged for processing
  • The conversion could not be enqueued
Recovery

Retry with exponential backoff. No credits are charged for a job that never queued.

generation_failedHTTP 502

media_processing_error

A sound-generation job could not be queued.

Common causes
  • The generation queue was unreachable
Recovery

Retry with exponential backoff. No credits are charged for a job that never queued.

request_timeoutHTTP 408

invalid_request_error

The upload took too long to receive, so no transcription was attempted.

Common causes
  • A large or slow upload consumed the synchronous request budget
Recovery

Retry with a smaller file. Nothing was charged — the timeout fires before any engine work begins.

transcription_timeoutHTTP 504

media_processing_error

Transcription exceeded the synchronous budget.

Common causes
  • The audio was long or the engine was saturated
Recovery

Split the audio into shorter segments, or retry when load is lower. Reserved credits are settled to the work actually done.

provider_errorHTTP 502

media_processing_error

An upstream provider returned an error.

Common causes
  • Third-party/provider dependency failure
Recovery

Retry with exponential backoff; if it persists, contact support with the request_id.

service_errorHTTP 502

media_processing_error

A supporting service call failed (e.g. storing the reference audio for a clone).

Common causes
  • Object-storage write failed while staging your upload
Recovery

Retry the request; if it persists, contact support with the request_id.

service_unavailableHTTP 503

api_error

The service is temporarily unavailable.

Common causes
  • A dependency is down or capacity is temporarily exhausted
Recovery

Retry after a short delay with exponential backoff.

connection_errorHTTP 503

api_error

Could not reach an upstream dependency.

Common causes
  • Network/connection failure talking to a backend service
Recovery

Retry after a short delay; if it persists, contact support with the request_id.

endpoint_disabledHTTP 503

api_error

This endpoint is currently disabled.

Common causes
  • The endpoint was administratively turned off (maintenance / feature flag)
Recovery

Check the status page at /status; retry later or contact support.

internal_errorHTTP 500

api_error

Unexpected server error.

Common causes
  • Transient infrastructure issue
  • A bug we haven't caught yet
Recovery

Retry with exponential backoff. If it persists, capture the request_id and email support@sonicvox.ai — we can trace every 5xx via that ID.

server_errorHTTP 500

api_error

Unexpected server error (alias of internal_error).

Common causes
  • Transient infrastructure issue
  • Unhandled server condition
Recovery

Retry with exponential backoff; include the request_id when contacting support.