Quota exhausted
quota_exhausted
The account's allowance for generated audio is spent for this period. The credential is fine and the scope is fine — the budget is gone. It shares its status with rate_limit_exceeded and behaves nothing like it.
Why it happens
Accounts without a subscription get a small number of free generations each month, and paid plans carry a monthly fair-use limit; whichever applied has been used up. Reading voices, captures, and generations never draws on it, so this always comes from a generation call.
How to fix it
Either wait for the allowance to reset at the start of next month, or lift it now by upgrading — the problem document carries a settings_url pointing at the billing page for the account that made the call, and the new entitlement applies to the very next request.
Safe to retry?
Not usefully: an allowance is not a rate window, so a backoff loop will never clear it. This is the 429 to stop retrying and act on.
What it looks like on the wire
{
"type": "https://voicelabs.now/errors/quota_exhausted",
"title": "Quota exhausted",
"status": 429,
"detail": "A human-readable explanation of this particular occurrence.",
"instance": "/v1/speech",
"code": "quota_exhausted"
}
Branch on code, never on status or on the prose in detail: two different problems can share a status, and detail is written for humans and may be reworded. Problems a settings page can resolve also carry settings_url, and a scope failure carries required_scope.
Every VoiceLabs API error is an RFC 9457 problem document with a stable code.