> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xarchive.io/llms.txt
> Use this file to discover all available pages before exploring further.

# L3 order book

> L3 order-level depth on Lighter: every resting order with its order id, owner address, price, and size, available as snapshot and history routes.

L3 is the order-level book on Lighter: every resting order shown individually, each with its order id, owner address, price, and size, rather than the aggregated price levels of [L2](/rest-api/order-books-l2).

L3 is a Lighter family surface. Lighter exposes individual orders where Hyperliquid families expose [L4](/rest-api/order-books-l4); the two are different reconstructions, so do not treat a Lighter L3 route as interchangeable with a Hyperliquid L4 route. Reach for L3 when you need queue position, per-order size, or order-level microstructure on Lighter, and use [L2](/rest-api/order-books-l2) when aggregated levels are enough.

## Get an L3 snapshot

L3 is served only on Lighter. Find symbols on `/v1/lighter/instruments`.

```bash theme={"theme":"github-dark"}
curl "https://api.0xarchive.io/v1/lighter/l3orderbook/BTC?depth=50" \
  -H "X-API-Key: $OXARCHIVE_API_KEY"
```

| Job                          | Route                                      |
| ---------------------------- | ------------------------------------------ |
| L3 individual-order snapshot | `/v1/lighter/l3orderbook/{symbol}`         |
| L3 order-level history       | `/v1/lighter/l3orderbook/{symbol}/history` |

For aggregated price-level depth on Lighter, use the L2 routes (`/v1/lighter/orderbook/{symbol}` and `/history`) covered on [L2 order book](/rest-api/order-books-l2). L3 is order-level; L2 is the levels those orders aggregate into.

## Request parameters

| Parameter      | In    | Type           | Required | Description                                                          |
| -------------- | ----- | -------------- | -------- | -------------------------------------------------------------------- |
| `symbol`       | path  | string         | Yes      | Lighter market symbol, e.g. `BTC`                                    |
| `timestamp`    | query | integer (ms)   | No       | Snapshot route only; Unix milliseconds; omit for the latest snapshot |
| `start`, `end` | query | integer (ms)   | No       | History route; Unix-millisecond window bounds                        |
| `depth`        | query | integer        | No       | Levels per side on the snapshot route                                |
| `limit`        | query | integer        | No       | Max rows on the history route                                        |
| `cursor`       | query | string/integer | No       | Continuation token from `meta.next_cursor`                           |

L3 is available on every tier, including Free. Begin with one bounded `start`/`end` window, paginate with `cursor`, and store `meta.request_id` per page.

## Example response

The L3 snapshot returns the `{ success, data, meta }` envelope. Each entry under `data` is one resting order, carrying its order id, owner address, price, and size:

```json theme={"theme":"github-dark"}
{
  "success": true,
  "data": {
    "coin": "BTC",
    "timestamp": "2026-06-05T17:09:50.450Z",
    "orders": [
      { "order_id": 844422122007774, "owner": "475598", "side": "bid", "price": "59391.7", "remaining_size": "0.022", "original_size": "0.022" }
    ],
    "bid_count": 312,
    "ask_count": 188
  },
  "meta": { "request_id": "req_1a6f3b08c5d24e79" }
}
```

The L3 route is typed as a raw order array in the OpenAPI spec, so capture a live fixture and pin the order id, owner, price, and size fields you depend on before binding stable models. The [Endpoint reference](/reference) carries the route metadata, and full field meanings live in the [field dictionary](/responses#field-dictionary).

## Stream it live

Lighter streams the order-level book on the `lighter_l3_orderbook` channel. For sequence and gap handling on long live runs, see [WebSocket replay](/websocket/replay).

```javascript theme={"theme":"github-dark"}
ws.send(JSON.stringify({ op: "subscribe", channel: "lighter_l3_orderbook", symbol: "BTC" }));
```

The full channel matrix is on [WebSocket channels](/websocket/channels).

## Export in bulk

L3 books export as the `l3_orderbook` schema (`$6/GB`, `$10 minimum`), delivered as Parquet with ZSTD compression. Keep L2, L3, and L4 in separate tables. Build a selection in the [Data catalog](/data-catalog); columns and coverage keys are on [Export schemas](/export-schemas).

## Other depths

<CardGroup cols={2}>
  <Card title="L2 order book" icon="layers" href="/rest-api/order-books-l2">
    Aggregated price levels (`px`, `sz`, `n`) across every venue family.
  </Card>

  <Card title="L4 order book" icon="blocks" href="/rest-api/order-books-l4">
    Every resting order with its `oid` and `user_address` on Hyperliquid families, plus diffs and reconstruction.
  </Card>
</CardGroup>

## Next

Start from [Order books](/rest-api/order-books) for the depth overview, [Order book depth](/core-concepts/order-book-depth) to choose a grain, [Lighter REST API](/rest-api/lighter) for the wider Lighter route set, or [Data quality](/data-quality) before any long historical window.
