Concept

Errors

Handle the stable error envelope, HTTP status codes, and failed jobs.

Immediate error envelope

HTTP error
{
  "error": {
    "code": "daily_limit_reached",
    "message": "You've reached your daily upload limit."
  }
}

Use error.code for program logic and error.message for a safe user-facing explanation.

HTTP statuses

StatusCodesMeaning
400invalid_request / invalid_source / invalid_source_url / invalid_limit / invalid_upload / empty_upload / invalid_multipart_upload / invalid_multipart_partsMalformed JSON, source selection, URL, limit, upload, or multipart fields.
401missing_api_key / invalid_api_keyBearer authentication is absent or invalid.
403pro_required / upload_not_ownedA plan-only feature was requested or the object belongs to another account.
404upload_not_found / not_foundThe uploaded object or account-scoped job does not exist.
413file_too_largeThe stored or declared media is above the account limit.
415unsupported_typeThe file extension or MIME type is not supported media.
429daily_limit_reachedThe account used its daily transcription allowance.
503api_processing_unavailable / api_uploads_unavailable / queue_unavailableA required processing or upload backend is unavailable.
500internal_errorThe API encountered an unexpected failure.

Queued job failures

A create request can return 202 and the job can fail later while resolving or processing the source. In that case the GET request itself is successful, but the resource contains:

json
{
  "data": {
    "id": "95c3fdd8-…",
    "status": "failed",
    "error": "The source media could not be processed.",
    "text": null,
    "segments": null
  }
}
Map job failures before display
A queued job failure is processing output rather than a controlled immediate error envelope. Log it for diagnostics and translate it to an application-owned message before showing it to an end user.

Retry guidance

  • Fix 400, 401, 403, 413, and 415 requests before retrying.
  • Wait for the UTC allowance reset or change plan usage before retrying a daily-limit 429.
  • Use bounded exponential backoff for transient 503 and transport errors.
  • Do not repeatedly queue private, removed, or login-gated media.
© 2026 FastTranscriberBuilt for developers who work with speech.