Skip to main content
L2 is price-level aggregated depth on Hyperliquid core, Spot, HIP-3, HIP-4, Lighter, and Lighter on Robinhood Chain: each level carries a price, the total size resting at that price, and the order count behind it (px, sz, n), not the individual orders themselves. L2 is the shape of the book: spreads, depth charts, a top-of-book monitor, or a light historical window. Step up to L3 or L4 only when individual resting orders matter, and use Order history or Order flow for lifecycle records. Every venue serves native L2 snapshots, which on core and HIP-3 come from two sources and stop at 20 levels per side. Hyperliquid core and HIP-3 also serve full-depth aggregated L2 derived from L4. Order books compares the depths side by side.

Get an L2 snapshot

The path and symbol format change by venue family.
Plain perp symbols such as BTC and ETH. Use the /l2 routes for full-depth aggregated L2 (request levels via depth) from 2026-03-11 01:03 UTC onward.

Native L2 versus full-depth L2

Hyperliquid core and HIP-3 expose two L2 surfaces, and they answer different questions: Native Hyperliquid and HIP-3 L2 routes serve two sources, described below, and top out at 20 levels per side. A request like depth=200 on /v1/hyperliquid/orderbook/BTC/history still returns at most 20 levels. For full-depth aggregated L2 on those families, use the /l2 route family. Spot, HIP-4, and Lighter serve native L2 depth.

Two sources in native core and HIP-3 history

Native Hyperliquid core and HIP-3 L2 history holds two sources, interleaved in time. Every snapshot names its source in source, and source=venue or source=node on the request returns only that source. Both sources hold the top 20 levels per side, and at the same instant they show the same book. Use venue for the venue’s own view and the longest history. Use node for a regular grid in chain time, for example to line the book up with trades and L4 events, which carry block time. The node source starts on 2026-06-15 08:26 UTC for core and on 2026-06-01 for HIP-3, with some HIP-3 markets from 2026-05-01. Where we could not confirm our record of the order stream against the node’s own state, the node source has no rows for that stretch, and the venue source still covers it. When you filter history by source, send the same source on every page; meta.next_cursor continues the filtered series.

Request parameters

The full-depth /l2/history routes return the stored full depth by default. Pass depth to keep only the best levels on each side; bid_levels and ask_levels still report the full count. Ask for a bounded start/end window and paginate with cursor, and check a long window with Data quality before relying on it. Lighter’s native history route additionally accepts granularity=checkpoint|30s|10s|1s|tick; checkpoint returns snapshot items, while tick items contain a checkpoint plus its ordered deltas. Use that route-specific shape instead of treating every L2 history item as a plain book snapshot.

Example response

The L2 snapshot returns the same envelope across venues. Native core and HIP-3 snapshots also carry source:
A price level is px (price), sz (total size), and n (order count). px, sz, mid_price, spread, and spread_bps are decimal strings, so parse them as decimals, not floats. n aggregates the orders at a level; L4 lists each one with its oid and user_address. The /l2 routes also return bid_levels, ask_levels, total_bid_size, and total_ask_size. Full field meanings live in the field dictionary, the Reference carries the exact types, and Example responses has more payload shapes.

Access

Each venue’s start date, WebSocket channels, and page limit come from GET /v1/capabilities, followed by the SDK, CLI, and MCP names for the same data. The start date is the first served row on that venue; exact starts vary by market, so check /v1/symbols for a single symbol. Send 0xArchive-Version: 2026-10-01 for the current response contract; see API conventions.

Stream or replay it

Hyperliquid core, Spot, HIP-3, and Lighter stream L2 books live. Subscribe to orderbook on Hyperliquid core; Spot, HIP-3, and Lighter use spot_orderbook, hip3_orderbook, and lighter_orderbook. lighter_orderbook sends a full top-20 Lighter book at most once per interval: one book per second by default, or the rate set with interval_ms. Its live payload differs from the REST response above; see Lighter WebSocket channels. Current Lighter L2 snapshots are also available through REST, and lighter_orderbook supports historical WebSocket replay. Historical data is also available through REST and exports. HIP-4 current order-book reads use REST; stored hip4_orderbook history remains replayable.
The full channel matrix is on WebSocket channels.

Export in bulk

L2 books export as the l2_orderbook schema ($3/GB, $5 minimum), delivered as Parquet with ZSTD compression. Keep L2, L3, and L4 in separate tables. Build a selection in the Data Catalog; columns and coverage keys are on Export schemas.

Next step

When individual resting orders matter, continue to L4 order book.
Last modified on October 6, 2026