Error format
Error codes
Authentication & Authorization
| Code | Description |
|---|---|
UNAUTHENTICATED | Missing or invalid API key |
INVALID_API_KEY | API key is malformed or revoked |
FORBIDDEN | API key lacks required permissions or tier |
Validation
| Code | Description |
|---|---|
VALIDATION_ERROR | Input validation failed |
INVALID_ARGUMENT | Invalid argument value |
REQUIRED_FIELD | Required field is missing |
INVALID_FORMAT | Field format is incorrect |
Resources
| Code | Description |
|---|---|
NOT_FOUND | Requested resource does not exist |
ALREADY_EXISTS | Resource with this identifier already exists |
DEPENDENCY_ERROR | Operation depends on a missing or invalid resource |
Rate Limiting & Quotas
| Code | Description |
|---|---|
RATE_LIMIT_EXCEEDED | Too many requests |
QUOTA_EXCEEDED | Daily quota exceeded |
Server
| Code | Description |
|---|---|
INTERNAL_ERROR | Unexpected server error |
SERVICE_UNAVAILABLE | Service temporarily unavailable |
RENDER_TIMEOUT | Visualisation rendering timed out |
CALCULATION_ERROR | Impact calculation failed |
Partial success
GraphQL can return partial data alongside errors:Validation error details
Retry strategy
ForRATE_LIMIT_EXCEEDED and SERVICE_UNAVAILABLE errors:
- Check
extensions.retryAfterfor the recommended wait time - If not provided, use exponential backoff: 1s, 2s, 4s, 8s
- Maximum 5 retries