HTTP 429Client-side — change the request

Key spend ceiling exceeded

key_ceiling_exceeded

This API KEY has spent the monthly ceiling its owner set for it. It is not the account's plan allowance (quota_exhausted) and not a request-rate window (rate_limit_exceeded): it is a per-key budget, configured by a human on the developer console, that exists so one key cannot spend everything. The account may have plenty of allowance left.

Why it happens

A key was given a ceiling — typically the key pasted into a script, a staging environment, or one handed to somebody else — and this month's generations have reached it. Only generated audio counts: reads never move it, and neither do transcriptions, which produce no audio.

How to fix it

The account owner raises or removes the ceiling on the **API keys** tab of the developer console — the problem document's settings_url points straight at it, and the change applies to the next request. A different key with its own budget is the other answer when the point of the ceiling was to keep this workload boxed in.

Safe to retry?

Not usefully. A ceiling is a budget, not a window: it clears at the start of next month, or when its owner changes it. Backing off will not clear it.

What it looks like on the wire

{
  "type": "https://voicelabs.now/errors/key_ceiling_exceeded",
  "title": "Key spend ceiling exceeded",
  "status": 429,
  "detail": "A human-readable explanation of this particular occurrence.",
  "instance": "/v1/speech",
  "code": "key_ceiling_exceeded"
}

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.

See every error code