Core concepts
Errors
HTTP status conveys the category; the code field gives a stable, machine-readable reason. Branch on code, not on message (which is human-facing and may change).
| Status | Code | When |
|---|---|---|
| 401 | AUTH_MISSING_API_KEY | No X-API-Key header. |
| 401 | AUTH_INVALID_API_KEY | Key does not exist. |
| 403 | AUTH_CLIENT_DISABLED | Account disabled. |
| 403 | AUTH_KEY_EXPIRED | Key past its grace period. |
| 403 | AUTH_IP_NOT_ALLOWED | Source IP not in allowlist. |
| 403 | PERMISSION_DENIED | Key lacks the required scope. |
| 429 | RATE_LIMIT_EXCEEDED | Per-second rate exceeded. |
| 429 | DAILY_QUOTA_EXCEEDED | Daily quota exhausted. |
| 400 | INVALID_PARAMETER | A query parameter failed validation. |
| 500 | SYSTEM_ERROR | Unexpected server error. Quote the traceId. |
Error response401 · error
{
"code": "AUTH_INVALID_API_KEY",
"message": "API key not found",
"traceId": "087eecbe-0a22-4dfb-8c1c-c9eeaa684597"
}