YouTube Transcriber logoYouTube Transcriber
API Reference

Errors

RFC 7807 problem+json responses, every status code, and a clear retry policy.

Every error response is application/problem+json (RFC 7807). Same shape across every endpoint:

{
  "type": "https://getyoutubetranscriber.com/api/errors/payment-required",
  "title": "Payment Required",
  "status": 402,
  "detail": "You have no remaining credits.",
  "code": "E_PAYMENT_REQUIRED",
  "request_id": "req_01HX2…"
}

You can include request_id to trace a single call end-to-end when you file a support ticket.

Status code reference

StatusCodeRetry?What it means
400E_BAD_REQUESTNoMalformed JSON body or wrong content-type.
400E_INVALID_CONTINUATIONNoPagination cursor was tampered with or expired.
401E_MISSING_API_KEYNoNo Authorization: Bearer <api_key> header.
401E_INVALID_API_KEYNoThe API key isn't recognized.
401E_INACTIVE_API_KEYNoThe API key was revoked or disabled.
402E_FREE_GRANT_DEPLETEDNoFree 100-credit grant exhausted; subscribe.
402E_SUBSCRIPTION_PAUSEDNoSubscription on hold or expired. Update payment in the dashboard.
404E_NOT_FOUNDNoVideo, channel, or playlist doesn't exist.
404E_CAPTIONS_DISABLEDNoVideo exists but the creator disabled captions.
404E_VIDEO_UNAVAILABLENoVideo is private, removed, or region-locked.
404E_LANGUAGE_UNAVAILABLENoThe requested lang isn't available for this video.
408E_UPSTREAM_FAILUREYesUpstream YouTube fetch timed out. Retry in 1–5s.
422E_UNPROCESSABLE_ENTITYNoValidation failed. See errors[] for field-level detail.
422E_INVALID_VIDEO_URLNoCouldn't extract a video id from the input.
429E_RATE_LIMIT_EXCEEDEDYesYou hit the per-minute ceiling. Honor Retry-After.
500E_INTERNAL_SERVER_ERRORMaybeOur bug. Retry once; if it persists, contact support.
502E_TRANSCRIPT_FETCH_FAILEDYesUpstream transcript provider unhealthy. Retry in 1–5s.

Retry strategy

For retryable errors (408, 429, 502):

  1. If Retry-After is present, wait at least that many seconds.
  2. Otherwise back off exponentially: 1s, 2s, 4s, 8s.
  3. Give up after 3 attempts and log the request_id.

For non-retryable errors, fix the request. Retrying won't help.

See Code examples for ready-made Python / Node helpers that implement this loop.