Start here
insufficient_credits · 2001 · HTTP 402
Not enough credits for the request. Nothing was charged; retry once credits are available. error.details carries the balance, what the request required, and upgrade_url.
Number2001
HTTP status402Payment Required
Familyaccount2xxx · your account or plan
Example response
JSON
{ "ok": false, "request_id": "req_…", "error": { "code": "insufficient_credits", "number": 2001, "message": "Not enough credits for the request. Nothing was charged; retry once credits are available. error.details carries the balance, what the request required, and upgrade_url.", "docs": "https://transcriptfetch.com/docs/errors/insufficient_credits" } }
Every failure carries error.code, error.number, error.message and error.docs, plus at most one of retry_with (the request change that would succeed), details (structured specifics) or issues (validation problems).
What it means
Not enough credits for the request. Nothing was charged; retry once credits are available. error.details carries the balance, what the request required, and upgrade_url.
Why it happens
- The account's credit balance is 0: the 50 free credits a month are spent, or a paid plan's monthly allowance is used up.
- A batch request needs more credits than the balance holds.
- AI Fallback Transcription would cost more than the remaining balance (it bills by length).
What to do
- Check your balance with GET /api/v2/me (free) or in the dashboard.
- The message ends with the link that fixes it: the entry plan's checkout on the free tier, or the plans page for a subscriber. In v2 the same link is
error.details.upgrade_url, next tobalanceandrequired(what the request needed). - Subscribe to a plan or top up credits at transcriptfetch.com/app/plans; top-ups are priced at your plan's per-credit rate ($10 per 1,000 without a plan).
Retryable? Yes, once credits are available. Failed requests are never charged. Every error response carries a
request_id; include it when contacting support.