Errors use a consistent JSON envelope. Check the HTTP status and error.code; keep request_id when contacting support.
{
"success": false,
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Authentication required",
"details": null
},
"request_id": "..."
}
Use the returned error.code and message from the actual response.
Common statuses
| Status | Meaning |
|---|---|
400 or 422 |
Invalid request or unsupported format. |
401 |
Missing or invalid authentication. |
402 |
Insufficient credits. |
403 |
Missing key scope or permission. |
404 |
Missing cache entry for a cache-only lookup, or requested resource not found. |
409 |
Conflicting request state. |
429 |
Rate limit reached. |
500, 503, 504 |
Server, dependency, or upstream timeout failure. |
Handle 429 and transient 5xx responses with bounded retries and backoff. Use a fresh Idempotency-Key for each distinct billable request.
Rate limits
Current organization limits are 120 scrape calls, 30 map calls, and 240 quote calls per minute. The signed-in playground allows 30 scrapes per user per minute. Account read routes have separate limits. Limits can change as service capacity changes.