Platform / Errors and retriesSign inGet an API key

Errors and retries

Every error has a stable code, an HTTP status and a request ID. Here is what each one means and when to retry.

Error shape

JSON
{
  "error": {
    "code": "unsupported_mode",
    "message": "The requested mode is not supported for this language.",
    "detail": "mode"
  }
}
  • code is stable — branch on it.
  • message is for people and may be reworded.
  • detail, when present, names the field or capability involved.
  • Every response carries an x-request-id header. Include it when you contact support.

When to retry

StatusRetry?
429Yes, after the Retry-After header's seconds.
503Yes, after Retry-After. For synchronous requests use a new idempotency key.
504Synchronous only: retry with a new idempotency key, or use the asynchronous flow.
500Yes, with backoff and the same idempotency key.
4xxNo — fix the request first.

The SDKs retry 429 and 503 for you, honouring Retry-After.

Idempotency

Send an Idempotency-Key header with POST /v1/transcriptions and POST /v1/audio/transcriptions. Repeating a request with the same key and the same body returns the original transcription instead of starting a new one — and charging twice. Reusing a key with a different body returns 409 idempotency_conflict.

All error codes

CodeHTTPMessage
unauthorized401Missing or invalid API key.
forbidden403This key cannot access this resource.
not_found404Resource not found.
invalid_request422The request is invalid.
unknown_parameter422The request contains an unknown parameter.
unsupported_language422The requested language is not supported.
unsupported_mode422The requested mode is not supported for this language.
capability_unavailable422The requested capability is not available yet.
upload_incomplete409The upload has not been completed.
result_not_ready409The transcription has not finished.
idempotency_conflict409The idempotency key was already used with a different request.
audio_too_large413The upload exceeds the size limit.
capacity_unavailable503Transcription capacity is temporarily unavailable.
insufficient_credits402Available credit is insufficient for this request.
rate_limited429Too many requests. Retry after the indicated time.
spend_limit_reached429The daily spending limit for this organization has been reached.
too_many_queued429Too many transcriptions are waiting for this organization.
audio_decode_failed415The audio could not be decoded.
audio_too_long413The audio exceeds the duration limit.
too_many_channels422The audio has more channels than supported.
upload_rejected422The upload could not be verified.
content_deleted410The content of this transcription has been deleted.
conflict409The resource is in a state that does not allow this operation.
timeout504The transcription did not finish within the response time limit.
organization_disabled403This organization is disabled.
transcription_failed500The transcription could not be completed.
internal_error500An internal error occurred.

Coming-soon capabilities

Requesting something that is on the roadmap but not live — language: "auto", timestamps: "word" — returns 422 capability_unavailable with detail naming it, for example language.auto. Nothing is ever silently ignored or approximated.

Scriba is a product of 26AI Private Limited, Pune, India.© 2026 26AI Private Limited