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
Every successful response includes:Error responses
All errors are JSON problem details:title, status, a human-readable detail, and a machine-matchable code. Match on 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.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.429 Too Many Requests — per-minute rate limit (code RATE_LIMITED)
429 Too Many Requests — per-minute rate limit (code RATE_LIMITED)
X-RateLimit-Next elapses, 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)
502 Bad Gateway (code BAD_GATEWAY)
502 Bad Gateway (code BAD_GATEWAY)
The upstream Hyperliquid endpoint timed out or returned an error. The MCP server retries automatically; direct callers should retry with backoff.
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.

