---
title: "Get HIP-3 L4 orderbook diffs"
method: GET
path: "/v1/hyperliquid/hip3/orderbook/{symbol}/l4/diffs"
tags: ["HIP-3 Builder Perps - L4 Order Book"]
---

# Get HIP-3 L4 orderbook diffs

`GET /v1/hyperliquid/hip3/orderbook/{symbol}/l4/diffs`

## Request

- Base URL: `https://api.0xarchive.io`
- URL: `https://api.0xarchive.io/v1/hyperliquid/hip3/orderbook/{symbol}/l4/diffs`
- Auth: API key in header `X-API-Key`

Get per-order diff events for the HIP-3 L4 orderbook. Each diff represents an individual order placement, modification, fill, or cancellation. Diff items may include an optional insert_before field (order ID or null): for a new ALO order granted queue priority, it names the resting order this one is inserted ahead of within its price level. null or absent means tail append. Present on data from 2026-07-21 onward.

## Path parameters

- `symbol` string, required

## Query parameters

- `start` union: An instant: Unix milliseconds, or an RFC 3339 string such as `2026-01-01T00:00:00Z` (encode a `+` offset as `%2B`). An unparsable value answers 400 `invalid_time_range`.
  - integer: Unix milliseconds.
  - string, date-time: RFC 3339 instant.
- `end` union: An instant: Unix milliseconds, or an RFC 3339 string such as `2026-01-01T00:00:00Z` (encode a `+` offset as `%2B`). An unparsable value answers 400 `invalid_time_range`.
  - integer: Unix milliseconds.
  - string, date-time: RFC 3339 instant.
- `cursor` string
- `limit` integer

## Response `200`

L4 orderbook diff events

- object
  - `success` boolean
  - `data` object[]
    - `timestamp` integer: Event time in epoch milliseconds.
    - `block_number` integer: Hyperliquid block number of the event.
    - `seq` integer: Within-block sequence number.
    - `oid` integer: Order ID.
    - `user_address` string: Address that owns the order.
    - `coin` string
    - `side` 'B' | 'A': B = bid, A = ask.
    - `price` number
    - `diff_type` 'new' | 'update' | 'remove': new = order joined the book, update = resting size changed, remove = filled or canceled.
    - `new_size` number, nullable: Resting size after the event; null on remove.
    - `insert_before` integer, nullable: ALO queue priority: the resting order ID this new order is inserted ahead of within its price level. null or absent means the order was appended at the queue tail. Populated on data from 2026-07-21 onward; absent on earlier history.
  - `meta` object
    - `count` integer
    - `next_cursor` string
    - `request_id` string, uuid

## Other responses

- `400`: Invalid request: a parameter, symbol, interval, cursor or time range failed validation. See `error_code`.
- `401`: Authentication required: the API key is missing or invalid.
- `403`: The request is outside the plan's history window or per-request span, or the key is not allowed to make it.
- `429`: Rate limit, concurrency limit or monthly credits exceeded. See `error_code`.
- `default`: Any other error. The body is an `ErrorResponse`; branch on `error_code`. A 503 (`upstream_unavailable`) carries `Retry-After`.

---

[API](https://skmtc.dev/0xarchive/apis/0xarchive-api-2.md) · [All operations](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/revisions/27076f55595f?raw)
