Error Response Format
All errors follow this structure:Error Codes
| Code | HTTP Status | Description |
|---|---|---|
MISSING_API_KEY | 401 | API key header missing |
INVALID_API_KEY | 401 | Invalid or revoked API key |
API_KEY_DISABLED | 403 | API key disabled |
INVALID_INPUT | 400 | Request body is missing or malformed |
PAYLOAD_TOO_LARGE | 413 | Request body exceeds size limit |
MINUTE_LIMIT_EXCEEDED | 429 | Per-minute rate limit exceeded (includes Retry-After: 60 header) |
DAILY_LIMIT_EXCEEDED | 429 | Daily request limit exceeded (includes Retry-After: 3600 header) |
MONTHLY_LIMIT_EXCEEDED | 429 | Monthly request limit exceeded (includes Retry-After: 3600 header) |
IP_RATE_LIMITED | 429 | Too many failed auth attempts from this IP |
INTERNAL_ERROR | 500 | Server error |
REQUEST_TIMEOUT | 503 | Request exceeded the server timeout (10 seconds) |
REDIS_UNAVAILABLE | 503 | Rate limiter temporarily unavailable (free tier only — paid users are unaffected). Includes Retry-After: 30 header. |
Common Errors
Missing API Key (401)
x-api-key header.
Invalid API Key (403)
Rate Limit Exceeded (429)
Retry-After header and wait the indicated number of seconds before retrying. Alternatively, upgrade your plan to increase your limits.
Handling Errors in Code
Request IDs
Every response includes arequest_id in the meta object. Include this ID when contacting support for faster issue resolution.