Skip to main content

Error format

All errors return a JSON body with error and message:
{
  "error": "rate_limit_exceeded",
  "message": "Daily limit of 500 reached."
}

HTTP status codes

CodeMeaningCommon causes
200OK
400Bad RequestInvalid exchange name, malformed parameters
401UnauthorizedMissing or invalid API key
403ForbiddenSubscription doesn’t allow API access
404Not FoundNo data available for this coin/exchange/expiration
429Too Many RequestsDaily quota exceeded — see rate limits
500Server ErrorSomething went wrong on our side — retry or contact support

Error codes

unauthorized (401)

{ "error": "unauthorized", "message": "Invalid or missing API key." }
Check that:
  • The X-API-Key header is present
  • The key is correct (no copy-paste whitespace)
  • The key hasn’t been revoked
  • The key starts with gex_sk_

subscription_required (403)

{
  "error": "subscription_required",
  "message": "API access requires Pro subscription or active trial.",
  "current_tier": "premium"
}
Your subscription doesn’t include API access. The current_tier field shows your current plan. Upgrade to Pro to get API access.

invalid_exchange (400)

{
  "error": "invalid_exchange",
  "message": "Exchange \"foo\" is not available."
}
Valid values: bybit, deribit, okx, all (aggregated).

no_data (404)

{ "error": "no_data", "message": "No data available for XYZ." }
The combination of coin/exchange/expiration doesn’t exist. Common causes:
  • The exchange doesn’t list options for this coin (e.g., OKX doesn’t have XRP)
  • The expiration has already expired
  • The basecoin is mistyped (must be uppercase)

rate_limit_exceeded (429)

{ "error": "rate_limit_exceeded", "message": "Daily limit of 500 reached." }
See Rate Limits for handling strategies.

Getting help