Errors
Every error shape the API returns, and what to do about each.
Errors are always JSON with the same shape, so one handler covers all of them:
{"error": {"code": "quota_exceeded", "message": "..."}}
| Status | Code | Meaning & fix |
|---|---|---|
| 401 | missing_key |
No key on the request. Add the X-API-Key header. |
| 401 | invalid_key |
Malformed, unknown, revoked or expired. We return one message for all four on purpose, so the endpoint cannot be used to discover valid keys. Check the key is complete and still active. |
| 403 | tenant_suspended |
The account is suspended, usually non-payment. Contact us — retrying will not help. |
| 403 | scope_denied |
Valid key, wrong scope. Ask for the scope to be added. |
| 404 | not_found |
Not part of the public API. Endpoints are allowlisted — check the reference. |
| 402 | quota_exceeded |
Monthly credits exhausted. Top up or wait for the period to roll over. |
| 429 | rate_limited |
Too many requests this minute. Back off for Retry-After seconds. |
Retry behaviour
Retry 429 after the Retry-After delay, and 5xx
with exponential backoff. Never retry 401, 402 or
403 — the outcome will not change and you will just burn rate limit.
Last updated 13 August 2026.