Skip to content

Guides

Beta

Errors & rate limits

Every error has the same JSON shape and a matching HTTP status. Every response carries an X-Request-Id; include it when you contact us.

Error shape

json
HTTP/1.1 400 Bad Request
X-Request-Id: req_6f1d0c2a9b8e4f7d8c6b5a4f3e2d1c0b

{
  "error": {
    "type": "invalid_request",
    "message": "font_size must be a number from 16 to 200",
    "param": "style.font_size"
  }
}
typeStatusMeaning
invalid_request400, 422A parameter is missing or wrong. param names it (e.g. style.font_size, lines[2].words[0].end). 422: well-formed but unusable, such as a source_url that isn't a media file link.
unauthorized401No API key, a malformed one, or a revoked key.
forbidden403Your plan doesn't include this, e.g. a 2160p export on Creator.
not_found404No such resource in your account (other accounts' ids are indistinguishable from missing ones).
conflict409The resource isn't in the right state: transcript not ready, a transcription already running, too many exports waiting.
insufficient_credits402Not enough credits for the work. Buy credits or upgrade, then retry.
payload_too_large413The file is larger than your plan's upload limit (or the request body exceeds 5 MB).
rate_limited429Too many requests for this key, or too many imports in progress. Wait for Retry-After seconds.
internal500Something failed on our side. Safe to retry; use an Idempotency-Key on POSTs.

Branch on error.type, not on the message text: messages are written for people and may change.

Rate limits

Each API key may make 60 requests per minute (a fixed one-minute window). Every response reports where you stand:

HeaderMeaning
X-RateLimit-LimitRequests allowed per window
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix time when the window resets
Retry-AfterOn 429 only: seconds to wait before retrying

Poll jobs and exports every 2–5 seconds at most, or use webhooks. Other limits: 10 active API keys and 10 webhook endpoints per account, 5 imports in progress per account, and 24 exports waiting per project.

Retrying safely

  • Retry 429 (after Retry-After), 500 and network errors with exponential backoff.
  • Don't retry other 4xx responses unchanged; fix the request first.
  • Send an Idempotency-Key on POSTs that create work, so a retry after a lost response never charges twice.