Skip to main content
Order flow groups Hyperliquid core, HIP-3, and HIP-4 order events into time buckets, so you can see how order activity changes over a window. Each row is one time bucket. Each bucket counts matching order-status event rows for limit, trigger, and TP/SL placements, plus fills, cancellations, forced cancellations, and triggered orders. They are not rates or deduplicated unique-order counts. Order flow does not include price levels, side, size, wallet, or individual order IDs. Order flow is not the resting order book, an individual order’s lifecycle, or the executed trade tape.
Order flow is derived from the same l4_orders order-event capture as order history, so it shares its coverage start: Hyperliquid core and HIP-3 begin 2026-03-10; HIP-4 begins 2026-05-02. A query entirely before that window returns 200 with an empty array. That means the dataset does not cover that period, not that there was no activity. For activity before the order-event start date, use Trades instead.

Get order flow

/v1/hyperliquid/orders/{symbol}/flow. Plain perp symbols such as BTC.
Response items are untyped in OpenAPI. The Hyperliquid core example below shows one observed response shape, so capture a live response before binding a strict client model. The examples use a July 2026 window, which needs a paid plan; on Free, use a window inside the most recent 30 days. Set the bucket size with interval or granularity. They take the same values, and interval wins when both are sent. Long windows page with cursor and limit; see Page through a window.

Request parameters

Example response

Hyperliquid core, BTC, one five-minute bucket. The request ID is synthetic. The window holds exactly one bucket, so the response has no meta.next_cursor.

Buckets

Each bucket is labelled by its open time in UTC. Buckets open on multiples of the interval since the Unix epoch, so 5m buckets open at :00, :05, :10, and so on. A bucket with no matching events is omitted, so a quiet market returns fewer rows than its window has buckets. A bucket counts only the events inside [start, end). When start or end falls inside a bucket, that first or last bucket counts only its part of the window. Put start and end on bucket opens to get whole buckets.

Page through a window

A page holds the oldest limit buckets of the window. When the page is full and the window continues after its last bucket, meta.next_cursor contains that bucket’s open time as decimal Unix milliseconds. The continuation value is a string. Pass meta.next_cursor back unchanged. Keep the same start, end, and interval, and stop when meta.next_cursor is absent. Pages never split a bucket, and joined in order they hold the same buckets as one page large enough for the whole window. A full day of 1m buckets at the default limit is two pages: 1,000 buckets, then the other 440.
Send explicit start and end when you page. Without them, each request resolves its own defaults from the current time. Do not calculate or increment a cursor. Values that are not decimal Unix milliseconds return 400. General cursor handling is on Pagination.

When to use it

Use Order flow to compare how placement, cancellation, fill, and trigger counts change between buckets. If placements and cancellations rise while fills stay flat, the book may be churning without comparable execution. Inspect Order history for the individual orders or the L4 order book for the resulting resting depth. The interval parameter trades resolution for response size. Finer buckets show more detail but return more rows, and so more pages. Keep the venue family, symbol, window, and interval with every stored result so a later run reproduces the same view.
Order flow and the L4 order book use the same order-event source but answer different questions. L4 reconstructs the resting orders. Order flow summarizes event activity by time bucket.

How it differs

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 it live

Order flow is a REST-side aggregation, so there is no order-flow channel. For live order activity, use the WebSocket channel family matrix to stream the L4 order events (l4_orders, or the venue-prefixed variant) and aggregate the order-event activity yourself.

Export in bulk

There is no standalone order-flow export schema. Use Data Catalog exports to export the raw order events with the l4_orders (Order Events) schema ($4/GB, $12.50 minimum) and aggregate to flow downstream. Schema columns and coverage keys are on Export schemas.

Next step

For the individual orders behind these counts, continue to Order history.
Last modified on October 6, 2026