Error format
All error responses follow the same structure:HTTP status codes
| Status | Meaning | Common causes |
|---|---|---|
400 | Bad Request | Missing required fields, invalid parameters |
401 | Unauthorized | Missing, invalid, expired, or revoked API key |
402 | Payment Required | Wallet balance is zero — top up to continue |
403 | Forbidden | API billing not active for this team |
404 | Not Found | Resource doesn’t exist (e.g., wrong key ID) |
429 | Too Many Requests | Rate limit exceeded — check Retry-After header |
500 | Internal Server Error | Something went wrong on our end |
Error handling by category
Authentication errors (401)
X-API-Key header. If the key was revoked or expired, create a new one from the dashboard.
Payment errors (402)
Rate limit errors (429)
Retry-After response header, then retry. See Rate Limits for retry strategies.
Retry strategy
A simple rule of thumb:| Status | Retry? |
|---|---|
400 | No — fix the request |
401 | No — fix authentication |
402 | No — add funds first |
403 | No — check billing setup |
429 | Yes — after Retry-After seconds |
500 | Yes — with exponential backoff |

