Skip to main content

Error envelope

When a request fails, the response shape is:
{
  "success": false,
  "request_id": "req_abc123",
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Daily request quota reached (100 req/day on Free tier)."
  }
}
request_id is unique per request — include it when reporting issues.

Status codes

CodeMeaningWhat to do
200Success
400Bad request — invalid paramsCheck the parameter table in API Reference
401UnauthorizedVerify X-API-Key header is set and the key is valid
402Payment required (Nanopayment)Sign EIP-3009 authorization and retry
403Forbidden — endpoint not in your planUpgrade on Pricing
404Endpoint or symbol not foundCheck spelling, symbol format, or try the screener
429Rate limit exceededBack off with exponential delay; upgrade plan or use Nanopayment
500Server errorRetry after 1–2s; if persistent, email support

Retry strategy

For idempotent GET requests:
  1. First retry: wait 1 second
  2. Second retry: wait 2 seconds
  3. Third retry: wait 4 seconds
  4. Give up and surface the error
Always include the request_id from the failed response when contacting support.

Rate limits per plan

PlanDaily requestsBurst
Free10010 req/s
Pro10,00050 req/s
EnterpriseCustomCustom
NanopaymentUnlimited (pay-per-call)100 req/s
The Dashboard shows live usage. Set up a webhook alert at 80% of quota to avoid surprises.