Path: venue family and symbol
The symbol sits in the path, and its shape depends on the venue family:| Family | Path namespace | Symbol shape |
|---|---|---|
| Hyperliquid core | /v1/hyperliquid/* | Plain perp, e.g. BTC |
| Hyperliquid Spot | /v1/hyperliquid/spot/* | Pair, e.g. HYPE-USDC |
| HIP-3 | /v1/hyperliquid/hip3/* | Builder prefix, e.g. km:US500 (case-sensitive) |
| HIP-4 | /v1/hyperliquid/hip4/* | Outcome side id, URL-encoded, e.g. %230 |
| Lighter | /v1/lighter/* | Lighter symbol; list with /v1/lighter/instruments |
# is part of the identifier, not decoration.
Query: time windows
Most routes accept astart and end window. Snapshot-at-time routes use timestamp instead. The format is not uniform, so check the route:
- Market-state routes (order books, trades, candles, funding, open interest, liquidations) take Unix milliseconds.
startdefaults to 24h ago,endto now. - Order routes (order history, order flow, take profits & stop losses) also take Unix milliseconds, e.g.
1767225600000. ISO 8601 strings are rejected.
Query: shape and size
| Parameter | Where it applies | What it does |
|---|---|---|
interval | candles, funding, open interest, order flow | Aggregation bucket, e.g. 1h |
depth | order-book snapshot routes where documented | Levels per side. Native Hyperliquid/HIP-3 L2 routes cap at 20 levels (venue source limit); full-depth Hyperliquid/HIP-3 /l2 snapshots return the depth you request. Not tier-gated. |
limit | most list routes | Max rows; the default and ceiling vary by route |
cursor | paginated routes | Continuation token from meta.next_cursor (see Pagination) |
status | order history | Filter by order status where supported |
order_type | order history | Filter by order type where supported |
triggered | TP/SL | Filter by whether a trigger fired |
user | order history, TP/SL | Filter by wallet address. user_address is ignored; use user |
start and end on /history and /diffs routes. Use timestamp only on snapshot routes such as /orderbook/{symbol} or /orderbook/{symbol}/l2.
Keep requests bounded
Start with one symbol, one route, and one short window before widening. A bounded request is cheaper, easier to retry, and easier to reason about than an open-ended pull. Size the window andlimit to the question, then paginate rather than asking for everything at once. For the exact parameter table per data type, open the matching page under Market data; for the generated contract, use OpenAPI.