Support & Billing

How credits, rate limits, and errors work — plus how to upgrade.

Credits & Billing

  • HTTP 200 only: 1 credit per successful request (paid endpoints).
  • 4xx / 5xx errors: never charged — free to retry.
  • Rate-limited (429): never charged.
  • Free endpoints: /v1/verify, /v1/youtube/channel/resolve, /v1/youtube/channel/latest, GET /v1/youtube/asr/{task_id} (polling), all /v1/library reads.
  • 📦 Paginated endpoints: 1 credit per page fetched (channel videos, playlist videos).

Plans: Free tier 1,000 credits · Pro 10,000 credits/mo · See pricing.

Rate Limits

Each API key is limited to 200 requests per minute. Every response includes rate limit headers:

HeaderDescription
X-RateLimit-LimitTotal requests allowed per minute (200)
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

When exceeded the API returns 429 with a Retry-After header (seconds to wait).

Error Codes

StatusMeaningCharged
200SuccessYes (paid endpoints)
400Bad request / missing paramsNo
401Invalid or missing API keyNo
402Credits exhaustedNo
404Video / channel / captions not foundNo
429Rate limit exceededNo
500Internal server errorNo

Error Response Bodies

401 Unauthorized

{ "error": { "code": "UNAUTHORIZED", "message": "Invalid or missing API key" } }

402 Credits Exhausted

{ "error": { "code": "CREDITS_EXHAUSTED", "message": "You've run out of credits. Upgrade or top up." } }

404 Not Found (no captions)

{ "error": { "code": "NO_CAPTIONS", "message": "No captions available for this video" } }

429 Rate Limited

{ "error": { "code": "RATE_LIMITED", "message": "Rate limit exceeded, retry in 12s" } }
// Response also includes header:  Retry-After: 12

Support