code has a section on this page. doc_url links straight to it. An example:
type is a broad category; code is the specific error and is never renamed, so branch on it. message is for developers and can change: don’t parse it. 429 responses also send Retry-After in seconds.
How to handle errors
- Branch on
code, not onmessageor the status alone. - Retry only when
retryableistrue, afterretry_after_msorRetry-After, with backoff, and with the sameIdempotency-Key. Then a retry can never create a second job. - Billing errors (
402) aren’t fixed by retrying, exceptcredits_reloading. Showdetails.upgrade_urlto the person who manages the workspace. Nothing was held or charged. - Log
request_idon every error.
error object ({code, message, details}).
invalid_request
400 · type invalid_request · not retryable
The request is not a valid model request.
invalid_input
400 · type invalid_request · not retryable
The model can’t take this input as sent.
content_policy
422 · type unprocessable · not retryable
This request was refused under the model’s content policy. Change the prompt or inputs; retrying it unchanged will not succeed.
upstream_unavailable
503 · type upstream_error · retryable
The model couldn’t run this request right now. You were not charged; try again shortly.
rate_limited
429 · type rate_limited · retryable
Too many requests. Retry after the indicated delay.
queue_full
429 · type rate_limited · retryable
Your plan’s limit of generations running at once is reached. Retry when one finishes.
model_unavailable
503 · type upstream_error · retryable
This model isn’t available right now.
model_not_found
404 · type not_found · not retryable
Unknown model.
insufficient_credits
402 · type permission · not retryable
Not enough credits for this generation.
paid_plan_required
402 · type permission · not retryable
This model needs a paid plan.
model_not_in_plan
402 · type permission · not retryable
This model isn’t included in your plan.
model_access_required
403 · type permission · not retryable
This model needs access to be granted first.
outcome_unknown
503 · type upstream_error · retryable
Voyager couldn’t confirm this generation yet. Ask for its status again; never submit it again, or it may be charged twice.
expired
410 · type not_found · not retryable
These results have expired.
not_found
404 · type not_found · not retryable
No such generation for this workspace.
conflict
409 · type conflict · not retryable
This generation can’t change from its current state.
forbidden
403 · type permission · not retryable
This request isn’t allowed for this workspace.
internal_error
500 · type internal_error · not retryable
Something went wrong on Voyager’s side.
catalog_unavailable
503 · type upstream_error · retryable
The model catalog is temporarily unavailable. Retry shortly.
billing_unavailable
503 · type upstream_error · retryable
Your plan couldn’t be checked right now, so this paid request can’t run yet. Retry shortly.
no_voyager_seat
402 · type permission · not retryable
You don’t have a seat on this workspace’s Voyager plan.
credits_reloading
402 · type permission · retryable
Your credits are reloading and the balance is briefly short. Retry shortly.
cast_not_supported
422 · type unprocessable · not retryable
Cast works with image and video models only.
voice_cloning_unavailable
403 · type permission · not retryable
Voice cloning isn’t available to this workspace.
too_many_references
422 · type unprocessable · not retryable
Too many reference files for this model and operation.
payload_too_large
413 · type invalid_request · not retryable
The request body is too large.
upload_too_large
413 · type invalid_request · not retryable
This file is over your plan’s per-file limit.
intake_full
429 · type rate_limited · retryable
Too many recent reference files are stored. Delete some, or wait: they’re kept 7 days.
invalid_url
422 · type unprocessable · not retryable
That URL can’t be used: it must be a public https URL.
fetch_failed
502 · type upstream_error · not retryable
That URL couldn’t be downloaded. Check it is live and public.
unsupported_file
415 · type invalid_request · not retryable
That file isn’t a supported image, video or audio type.
invalid_api_key
401 · type authentication · not retryable
Missing, invalid or revoked API key.
idempotency_conflict
409 · type idempotency_conflict · not retryable
This Idempotency-Key was already used for a different request.
idempotency_in_flight
409 · type conflict · retryable
A request under this Idempotency-Key is still running; retry shortly.
invalid_idempotency_key
400 · type invalid_request · not retryable
Idempotency-Key must be 1-200 printable ASCII characters.
invalid_cursor
400 · type invalid_request · not retryable
Pass next_cursor exactly as a page returned it.
invalid_webhook_url
400 · type invalid_request · not retryable
webhook_url must be a public https URL.
method_not_allowed
405 · type invalid_request · not retryable
This method is not supported on this path.
account_unavailable
402 · type permission · not retryable
This Voyager account is not eligible for generation.
plan_required_for_faces
403 · type permission · not retryable
This video model needs the Ultra or GigaMax plan for a photoreal Cast character. Use a stylized character or a different video model.
version_conflict
409 · type conflict · not retryable
The Cast card changed since you read it. Read it again and retry with its current version.
slug_taken
409 · type conflict · not retryable
Another Cast card in this workspace already uses that slug.
already_referenced
409 · type conflict · not retryable
That image is already a reference on this Cast card.
asset_in_use
409 · type conflict · retryable
The file is in use by a running job or saved in a Cast card. Delete it after the job ends, or remove it from the card first.
upload_incomplete
409 · type conflict · not retryable
Nothing was uploaded yet. PUT the file to upload_url first.
cancel_unsupported
409 · type conflict · not retryable
This kind of job cannot be stopped once started. It finishes on its own.
unsupported_model
422 · type unprocessable · not retryable
This model can’t run that operation. GET /v1/models/{id} lists the operations it runs.
invalid_job_id
400 · type invalid_request · not retryable
Job ids look like job_…; pass one exactly as returned.
voice_required
422 · type unprocessable · not retryable
Choose a voice: pick one from GET /v1/voices and pass its id as input.voice_id.
observation_timeout
503 · type upstream_error · retryable
The job’s status couldn’t be read in time. Ask again with the same id; never submit it again.
reference_unavailable
503 · type upstream_error · retryable
A reference file couldn’t be prepared right now. Retry shortly.
queue_timeout
On a finished job: statuscanceled · not retryable
The job waited in the queue too long and was canceled; nothing was charged.
reference_missing
On a finished job: statusfailed · not retryable
A reference file was deleted before the job started. Nothing was charged.
Cloud machines errors
The cloud machines endpoints (/v1/machines) use the same envelope with UPPER_SNAKE codes, such as PLAN_REQUIRED, INSUFFICIENT_CREDITS and MACHINE_NOT_READY. They’re listed in the cloud machines reference.