Errors
Errors use standard HTTP status codes with a JSON body:
{ "detail": "Human-readable explanation of what went wrong." }
| Status | Meaning | What to do |
|---|---|---|
401 |
Missing or invalid API key | Check the Authorization: Bearer <key> header; the key may be revoked or expired. |
402 |
Out of credits | Your plan's allowance is used up for the current period. See Credits & pricing. |
403 |
Key not scoped to this service, service not in your plan, or the key/account is suspended | Use a key scoped to the service, or upgrade. A suspension is temporary and carries a Retry-After; if it persists, contact [email protected]. |
429 |
Rate limited. A key's per-minute rate limit or monthly quota, a coarse burst backstop, or a web/SSO interaction cap | Honor Retry-After and back off. A monthly-quota 429 has no Retry-After (the reset is days away). Raise the key's quota or wait for the period to roll over. See Rate limits. |
451 |
Terms of Service not accepted | Accept the current Terms at the URL in the X-Hank-Tos-Accept-Url header (or /legal/accept), then retry. |
5xx |
Server-side error | Transient. Retry with backoff. A 503 is explicitly retryable (control-plane blip); contact [email protected] if it persists. |