transcript.imDocs
DocumentationAPI Reference

Errors

Handle the standard error envelope, HTTP statuses, and retryable failures.

Public endpoints return business failures in a standard envelope:

{
  "error": {
    "code": "NO_TRANSCRIPT",
    "message": "Transcript not in your library. Use POST /v1/transcript to extract or save it."
  }
}

Plan-gated 402 responses may also include actionLabel, actionUrl, and the backwards-compatible upgrade_url alias. A language miss that cannot fall back to speech recognition returns 404 with availableLanguages.

Some framework-level failures are still returned as a flat string body — for example { "error": "unauthorized" }, { "error": "rate_limited" }, or { "error": "invalid_credential" }. A robust client reads error as either an object or a string and only inspects error.code when it is present.

HTTP statuses

StatusMeaningClient action
400Malformed inputFix the request before retrying.
401Missing or invalid credentialSupply or rotate the API key.
402Plan or entitlement gateSurface the returned action URL.
403Valid key with insufficient scopeUse a key with the required scope.
404Resource or requested language not foundInspect the response details and available languages.
409Resource state conflictWait for the required state, then retry.
422Valid JSON with unsupported values or sourceCorrect the semantic input.
429Rate limit exceededRespect Retry-After and back off.
502A dependent capability or upstream discovery call failedRetry with bounded exponential backoff; do not treat it as "no transcript".
503A required capability is unavailable or unconfiguredDo not treat it as "no transcript"; surface the error.

POST /v1/transcript also uses 202 for accepted asynchronous speech recognition. It is a successful handoff, not an error.

Common error codes

CodeMeaning
INVALID_VIDEOThe supplied URL or platform id is invalid.
NO_TRANSCRIPTA usable transcript is not available for the request.
LANGUAGE_NOT_AVAILABLECaptions exist in other languages but none matched the request, and speech recognition was not allowed.
NO_VIDEOThe post is reachable but has no video to transcribe: a photo or text post, or a link card to a video on another site. Do not retry.
NO_SPEECHThe media was transcribed and no speech was detected (silence, music only, or a muted source). Nothing is charged to the ASR allowance. Do not retry.
X_BROADCAST_UNSUPPORTEDThe X post is a live broadcast or a replay of one, which is not supported. Decided from the post lookup, so nothing is downloaded, transcribed, or charged. Do not retry.
LOGIN_REQUIREDYouTube says the video is private or requires signing in. Only returned when the platform states it; a bot check on one of our egress routes is retried elsewhere and never reported as private. Do not retry.
AGE_RESTRICTEDThe YouTube video is age-restricted and requires signing in. Decided within seconds; nothing is downloaded, transcribed, or charged. Do not retry.
MEMBERS_ONLYThe YouTube video is only available to the channel's members. Decided within seconds; nothing is downloaded, transcribed, or charged. Do not retry.
REGION_BLOCKEDYouTube does not offer the video in the region our servers are in. Decided within seconds; retrying does not change it.
UNAVAILABLEThe source is removed or inaccessible.
UPLOAD_INVALIDA multipart upload failed declaration, media-type, or integrity validation.
IDEMPOTENCY_CONFLICTThe same Idempotency-Key was reused with a different request.
IP_BLOCKEDThe source platform temporarily blocked extraction infrastructure.
PO_TOKEN_REQUIREDThe source platform requires additional login state.
VIDEO_TOO_LONGThe media exceeds the current plan's duration limit.
RATE_LIMITEDThe caller exceeded its current request window.
UPGRADE_REQUIREDThe account is not eligible to use the requested API capability.
INSUFFICIENT_CREDITSThe account cannot start the gated operation.
TRANSCRIPT_QUOTA_EXCEEDEDThe transcript allowance for the current period is exhausted.
ASR_QUOTA_EXCEEDEDThe ASR minute allowance for the current period is exhausted.
ASR_CONCURRENCY_LIMITThe plan's concurrency limit is fully in use; ASR minutes are not exhausted. Retry once an in-flight task finishes.
BATCH_LIMIT_EXCEEDEDThe batch exceeds the plan's per-job item limit.

Retry guidance

Retry 429 and transient 503 responses only. Honor Retry-After when supplied, add jitter, cap the delay, and set a maximum attempt count. Do not automatically retry authentication, scope, validation, or plan failures without changing the request or credential.

On this page