Operate
Errors and rate limits
Handle Problem Details responses, correlation IDs, and request limits.
Problem details
Errors use application/problem+json. Correlation is available through the optional X-Correlation-Id request header, the response header, and the correlationId response field.
Example
json{
"type": "{problem-type-base-url}/errors/API_KEY_INVALID",
"title": "Unauthorized",
"status": 401,
"detail": "API key is missing or invalid",
"instance": "/api/v1/customer/inquiries",
"code": "API_KEY_INVALID",
"correlationId": "c7ccb49d-e6bb-45f7-b834-93c4521a6857"
}Common error codes
| Name | Type | Description |
|---|---|---|
API_KEY_INVALID | 401 | Missing, malformed, or unmatched API key. |
API_KEY_REVOKED | 401 | API key has been revoked. |
API_KEY_EXPIRED | 401 | API key has passed its expiry. |
INQUIRY_TEMPLATE_NOT_FOUND | 404 | Template is unavailable to the key's tenant. |
INQUIRY_NOT_FOUND | 404 | Inquiry is unavailable to the key's tenant. |
INQUIRY_NOT_APPROVED | 403 | Documents requested when status is not APPROVED or NEEDS_REVIEW. |
IDEMPOTENCY_CONFLICT | 409 | Idempotency key was reused incompatibly. |
RATE_LIMIT_EXCEEDED | 429 | Rate limit exceeded; inspect Retry-After. |
Rate limits
- 120 requests per 60-second window.
- Applied per API key and endpoint scope.
- Exceeding the limit returns HTTP 429 and a
Retry-Afterresponse header. - Wait for the indicated duration before retrying; use exponential backoff and jitter for concurrent workers.