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/libraryreads. - 📦 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:
| Header | Description |
|---|---|
X-RateLimit-Limit | Total requests allowed per minute (200) |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
When exceeded the API returns 429 with a Retry-After header (seconds to wait).
Error Codes
| Status | Meaning | Charged |
|---|---|---|
| 200 | Success | Yes (paid endpoints) |
| 400 | Bad request / missing params | No |
| 401 | Invalid or missing API key | No |
| 402 | Credits exhausted | No |
| 404 | Video / channel / captions not found | No |
| 429 | Rate limit exceeded | No |
| 500 | Internal server error | No |
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
- 🔑 Account & API keys — subdownload.com/account
- 💳 Pricing & plans — subdownload.com/pricing
- 📜 Usage history — subdownload.com/usage