Skip to main content
Every error returns the same JSON envelope; status mirrors the HTTP status. Switch on code, not message (message text may change).
Error envelope
{
  "error": {
    "code": "API_KEY_INVALID",
    "message": "API key is invalid",
    "status": 401
  }
}
Errors don’t consume credits — only successful (2xx) responses deduct.

Error codes

StatuscodeWhen it happens
400VALIDATION_ERRORA query or path parameter failed validation (wrong type, out of range, malformed).
401API_KEY_MISSINGThe X-Api-Key header was not sent.
401API_KEY_INVALIDThe API key is not recognized.
403NO_ACTIVE_SUBSCRIPTIONThe key’s account has no active subscription.
403ENDPOINT_NOT_AVAILABLEThe endpoint is not included in your plan.
403PLAN_LIMIT_EXCEEDEDThe request goes beyond what your current plan allows (e.g. a time range deeper than your plan permits).
404NOT_FOUNDThe requested resource does not exist.
429RATE_LIMIT_EXCEEDEDThe per-key request rate (RPM) was exceeded.
429DAILY_CREDITS_EXCEEDEDThe daily credit allowance is used up.
429MONTHLY_CREDITS_EXCEEDEDThe monthly credit allowance is used up.
500INTERNAL_ERRORAn unexpected server error. Retry with backoff; if it persists, contact support.

Rate limits and retries

429 responses carry a Retry-After header (seconds) — wait that long before retrying. See Pricing page for per-plan rates and allowances.
Retry only 429 (respect Retry-After) and 500. Other 4xx (400/401/403/404) just fail again until you fix the input, key, plan, or resource.