api.coinversa.ai/api/public/v1/* requires an API key. Get one at developers.coinversa.ai.
This page is about the REST API. The WebSocket uses the same key but a different protocol: a Bearer token on the upgrade (or the bearer subprotocol from a browser), refusals as HTTP 401 / 429 / 503 or close codes rather than problem details, and capacity limits rather than request quotas. Its rules live in WebSocket authentication, not here.
Sending the key
Pass your key in theX-API-Key header on every request:
Authorization: Bearer header entirely; that header is how the WebSocket authenticates.)
Tiers
Your key’s tier is set by your active subscription. Free is the default; paid tiers are managed in the billing portal.
See pricing for what each tier unlocks.
Access is checked per key; request usage is shared by account. Additional keys do not multiply your REST RPM or daily/monthly allowance. A key serves the tier it was provisioned at, capped by your account’s active entitlement — a Free key calling alongside an unused Pro key on the same account still has Free endpoint access and daily/monthly caps. See how tier resolution works.
Rate-limit headers
Authenticated responses include these, 429s included:Error responses
All errors are JSON problem details:title, status, a human-readable detail, a machine-matchable code (retained for compatibility) and, when available, a more specific reason (missing_api_key, invalid_api_key, insufficient_tier, invalid_parameters or account_suspended). Match on reason when present, else code — the detail wording can change. There is no 401 in this API: every auth failure is a 403.
403 Forbidden — missing key (code TIER_GATE)
403 Forbidden — missing key (code TIER_GATE)
X-API-Key header. required_tier names the minimum tier for the endpoint — even free endpoints need a key. A key that is recognized but inactive gets this same Api key needed body with reason invalid_api_key.403 Forbidden — invalid key (code FORBIDDEN)
403 Forbidden — invalid key (code FORBIDDEN)
403 Forbidden — insufficient tier (code TIER_GATE)
403 Forbidden — insufficient tier (code TIER_GATE)
upgrade_url, or (for builder endpoints) fall back to the endpoint’s x402 pay-per-call twin. Agents: report required_tier to the human rather than retrying.403 Forbidden — account suspended (code ACCOUNT_SUSPENDED)
403 Forbidden — account suspended (code ACCOUNT_SUSPENDED)
429 Too Many Requests — per-minute rate limit (code RATE_LIMITED)
429 Too Many Requests — per-minute rate limit (code RATE_LIMITED)
Retry-After (or until X-RateLimit-Reset), or upgrade for higher RPM.429 Too Many Requests — daily or monthly cap (code RATE_LIMITED)
429 Too Many Requests — daily or monthly cap (code RATE_LIMITED)
Retry-After gives the seconds to wait, and X-RateLimit-Daily-Reset / X-RateLimit-Monthly-Reset give the reset times. Or upgrade.502 Bad Gateway (code BAD_GATEWAY)
502 Bad Gateway (code BAD_GATEWAY)
The upstream Hyperliquid endpoint timed out or returned an error. Retry with backoff. (The MCP server retries timeouts and short-lived 429s, not 502s.)
No key at all? Every GET endpoint has a keyless x402 pay-per-call twin — payment is negotiated per request via the x402 protocol instead of a subscription. The builder analytics endpoints are the documented x402 surface today.
Historical-window caps
Caller-controlled history windows (since, hours/days params, explicit startTime/endTime ranges) are capped at 90 days on every tier — the cap is universal, not tier-based. How a route enforces it differs: routes with a documented since ceiling reject an overlong window with a 400 (since=<value> exceeds this route's <ceiling> ceiling), while the rest run against the capped window and may echo the range you asked for. Compare response timestamps against your requested range to detect truncation, and see data windows for the per-route ceilings. Risk endpoints (/live/risk/liquidations/*, etc.) are additionally clamped to data starting 2026-01-01 (the day we began collecting L1 liquidation events).
Longer windows are available on Enterprise as custom exports and negotiated data delivery, not as an API parameter. See Data windows for per-endpoint window semantics.

