HTTP Status Codes
The API returns standard HTTP status codes:- 2xx - Success
- 4xx - Client errors (invalid request, authentication, etc.)
- 5xx - Server errors
Error Response Format
All error responses follow a consistent structure:Error information container
Machine-readable error code for programmatic handling
Human-readable error description
Additional context-specific error information
Unique identifier for this request, used for support and debugging
ISO 8601 timestamp when the error occurred
Error Code Categories
| Status | Error Code | Description | Retryable |
|---|---|---|---|
| 400 | INVALID_REQUEST | Malformed request syntax | No |
| 401 | UNAUTHORIZED | Invalid or missing API key | No |
| 403 | FORBIDDEN | Insufficient permissions | No |
| 404 | NOT_FOUND | Resource does not exist | No |
| 409 | CONFLICT | Resource state conflict | No |
| 422 | VALIDATION_ERROR | Request validation failed | No |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests | Yes |
| 500 | INTERNAL_ERROR | Server error | Yes |
| 502 | BAD_GATEWAY | Upstream service error | Yes |
| 503 | SERVICE_UNAVAILABLE | Temporary service outage | Yes |
| 504 | TIMEOUT | Request timeout | Yes |
Retry Strategy
Recommended Retry Logic
Retry Guidelines
- Exponential Backoff: Start with 1s, double each retry (1s, 2s, 4s)
- Jitter: Add randomization to prevent thundering herd
- Maximum Retries: Limit to 3 attempts for 5xx errors
- Non-Retryable: Do not retry 4xx errors (except 429)
Circuit Breaker Pattern
For high-volume integrations, implement circuit breaker pattern:- Failure Threshold: 5 consecutive failures
- Timeout Period: 30 seconds
- Recovery: Gradual recovery with limited requests
Request Tracking
Each error response includes a uniquerequest_id for debugging:
- Include this ID when contacting support
- Request IDs are retained for 30 days
- Correlate client-side errors with server-side logs

