RPC reference

HyperCore /info API

The read API for the HyperCore L1 — the perps/spot CLOB. One HTTPS endpoint, one POST shape: a JSON body whose type field selects the request. Market metadata, book snapshots, asset contexts, and per-wallet state.

Endpoint

Endpoint
https://api.hyperliquidrpc.com/info
Protocol
HTTPS POST, JSON body
Auth
API key in the x-api-key header
Selector
"type" field in the body, e.g. { "type": "l2Book", "coin": "BTC" }
curl https://api.hyperliquidrpc.com/info \  -H 'x-api-key: YOUR_KEY' \  -H 'content-type: application/json' \  -d '{"type":"l2Book","coin":"BTC"}'

All prices, sizes, and PnL values come back as exact decimal strings — never floats. Parse them with a decimal type if you do arithmetic; the strings reconcile byte-for-byte with the chain and with our historical archive.

Market data requests

Metadata, books, and per-asset context. Expand a row for the exact request/response bodies.

Request

{ "type": "meta" }

Response

{  "universe": [    { "name": "BTC", "szDecimals": 5, "maxLeverage": 40 },    { "name": "ETH", "szDecimals": 4, "maxLeverage": 25 }  ]}

Request

{ "type": "spotMeta" }

Response

{  "tokens": [{ "name": "HYPE", "szDecimals": 2, "weiDecimals": 8 }],  "universe": [{ "name": "@107", "tokens": [150, 0] }]}

Request

{ "type": "perpDexs" }

Response

[  { "name": "core", "full_name": "Hyperliquid" },  { "name": "test", "full_name": "HIP-3 deployment" }]

Note: Prices and sizes are exact decimal strings. For continuous depth, use the L2 stream.

Request

{ "type": "l2Book", "coin": "BTC" }

Response

{  "coin": "BTC",  "time": 1781078042418,  "levels": [    [{ "px": "67011.0", "sz": "3.41280", "n": 14 }],    [{ "px": "67012.0", "sz": "2.88457", "n": 11 }]  ]}

Request

{ "type": "metaAndAssetCtxs" }

Response

[  { "universe": [{ "name": "BTC", "szDecimals": 5 }] },  [    {      "markPx": "67012.0",      "oraclePx": "67010.5",      "funding": "0.0000125",      "openInterest": "8412.55310",      "dayNtlVlm": "2541870442.18"    }  ]]

Request

{ "type": "exchangeStatus" }

Response

{ "time": 1781078042418, "specialStatuses": null }

Resolving markets

meta returns the perp universe, spotMeta the spot tokens and @N pairs, and perpDexs the HIP-3 / builder-deployed DEX listings (dex:SYMBOL markets). Together they map every symbol you will see on the streams — cache them and refresh occasionally rather than fetching per request.

User state requests

Per-wallet reads: positions and margin, resting orders, fills, and funding payments. Each takes a user address in the body.

Request

{  "type": "clearinghouseState",  "user": "0x913ef4b96e9fd7d6f8c14e22b1a1a1e7c41a0a2b"}

Response

{  "marginSummary": { "accountValue": "150214.301187", "totalNtlPos": "402100.55" },  "assetPositions": [    {      "position": {        "coin": "BTC",        "szi": "2.54000",        "entryPx": "65120.3",        "unrealizedPnl": "4804.918000"      }    }  ]}

Request

{  "type": "openOrders",  "user": "0x913ef4b96e9fd7d6f8c14e22b1a1a1e7c41a0a2b"}

Response

[  {    "coin": "ETH",    "side": "B",    "limitPx": "3498.25",    "sz": "12.4400",    "oid": 91834221384,    "timestamp": 1781078043121  }]

Request

{  "type": "userFills",  "user": "0x913ef4b96e9fd7d6f8c14e22b1a1a1e7c41a0a2b"}

Response

[  {    "coin": "BTC",    "px": "67012.0",    "sz": "0.14523",    "side": "B",    "dir": "Close Short",    "closedPnl": "182.337041",    "fee": "2.433037",    "tid": 442191083327011  }]

Request

{  "type": "userFunding",  "user": "0x913ef4b96e9fd7d6f8c14e22b1a1a1e7c41a0a2b",  "startTime": 1780992000000}

Response

[  {    "time": 1781078400084,    "coin": "BTC",    "usdc": "-14.302187",    "szi": "2.54000",    "fundingRate": "0.0000125"  }]

Snapshots vs. streams

/info is a point-in-time read. If you find yourself polling it on an interval, the data you want almost certainly exists as a push stream with strictly better latency and ordering:

  • Polling l2Book → subscribe to the L2 book stream (snapshot, then one update per block, guaranteed never crossed).
  • Polling userFills → subscribe to trades filtered by wallet, server-side.
  • Polling openOrders → subscribe to the order lifecycle stream filtered by wallet.
  • Polling userFunding → subscribe to events (funding, liquidations, ledger updates).

Related