# Hyperliquid L4 Books - Individual Orders

An L4 book keeps each resting order distinct. Orders include owner, order ID, side, price, remaining size, placement time, order type, and optional client-order identity.

## Access

| Availability | Access                                                                                                                 | Details                                                                                 |
| ------------ | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Live         | [StreamL4Book](https://www.dwellir.com/docs/hyperliquid/stream_l4_book) and [StreamL4OrderUpdates](https://www.dwellir.com/docs/hyperliquid/stream_l4_order_updates) | Provides the typed snapshot-or-diff oneof for one coin and decoded, sequenced changes.  |
| Live         | [Order Book WebSocket L4](https://www.dwellir.com/docs/hyperliquid/l4-book)                                                                   | Provides a JSON snapshot followed by order-level updates.                               |
| Archival     | [S3 Bucket](https://www.dwellir.com/docs/hyperliquid/historical-data)                                                                         | Records can support custom historical reconstruction when seeded from a known snapshot. |

## V3 stream choices

[StreamL4Book](https://www.dwellir.com/docs/hyperliquid/stream_l4_book) serves one coin. Its typed `L4BookUpdate` oneof contains either an opening `snapshot` or a later `diff`. The snapshot contains typed orders. The diff carries the native `{order_statuses, book_diffs}` JSON bytes for that block.

[StreamL4OrderUpdates](https://www.dwellir.com/docs/hyperliquid/stream_l4_order_updates) is the decoded alternative. It opens with `snapshot: true`, then sends typed `NEW`, `UPDATE`, and `REMOVE` order changes. Its `sequence` begins at 1 and must remain contiguous. An empty `coins` list selects all coins, and `users` optionally filters order owners.

Both streams are live views with no historical replay. On `ABORTED`, reconnect and resnapshot. For typed order updates, a sequence gap also requires reconnecting and rebuilding from the next opening snapshot. Never continue from a partial order map after either condition.

## Sample data

This synthetic V3 typed-update payload visibly redacts the account and market identifiers:

```protobuf
time: 1785736814057
block_number: 1058646974
diffs: {
  diff_type: L4_ORDER_DIFF_TYPE_NEW
  coin: "<redacted-market>"
  oid: 123456789
  user: "<redacted-user>"
  side: "B"
  px: "114250.0"
  sz: "0.40"
}
snapshot: true
sequence: 1
```

An opening typed-update frame represents current resting state as `NEW` entries. Later frames apply changes in sequence order.

## Related pages

- [Order book WebSocket guide](https://www.dwellir.com/guides/order-book-server) — Build a production L4 client with snapshot and update handling.
- [Whale tracking guide](https://www.dwellir.com/guides/hyperliquid-whale-tracking) — Use individual resting orders as a whale signal.
- [Generated order-book snapshots](https://www.dwellir.com/docs/hyperliquid/data-catalog/derived/book-snapshots) — Inspect the related order-level state seed.
