Errors & status codes
ReqKey uses conventional HTTP status codes and a single, predictable error shape. Read the status first, then the message for the specifics.
Error shape
Every failure returns a JSON object with a human-readable error field:
{
"error": "Error message describing what went wrong"
}Status codes
Validation responses
/key/validate is special: a rejected key is still a successful HTTP call. A missing or unknown key returns 200 with { "valid": false }, while blocking conditions use real error codes — 402 for no credits and 403 for a disabled key/consumer or an out-of-scope API. Always branch on the valid field, not just the status.
Rate limiting
Analytics endpoints are rate-limited per customer. When you’re throttled you get a 429 plus headers describing the window:
X-RateLimit-LimitTotal requests allowed in the window.X-RateLimit-RemainingRequests remaining.X-RateLimit-ResetUnix timestamp when the limit resets.Retry-AfterSeconds to wait — only present on 429 responses.Read Retry-After and back off before retrying. If no limit is configured for a customer, analytics access is unlimited.