Skip to main content
See what each route family returns before you write a parser, test, warehouse schema, or agent prompt. The examples use the field names in the OpenAPI contract. Examples show returned values; they are not the schema source. OpenAPI and Endpoint Reference remain the exact type source: take types from OpenAPI or the Endpoint reference, and use these examples to check envelope handling, request IDs, pagination, venue context, and parser boundaries. When a route’s OpenAPI schema exposes data as generic objects, keep the envelope and metadata, inspect the current endpoint response, and avoid binding a fixed model from an example. Most market-data routes use this envelope:

L2 order book snapshot

Request:
Example response:
The L2 shape is aggregated by price level. px is the level price, sz is total size at that price, and n is the number of orders contributing to the level.

Trade list

Request:
Example response:
side uses venue side codes. Preserve direction, maker/taker fields, fees, cursor, and request ID when trades feed a backtest or risk view.

Empty page with cursor exhausted

Some bounded historical requests can succeed with no returned rows. Treat an empty data array as a valid response when success is true; the job decision should come from the requested window, data-quality state, and meta.has_more. A final page can be empty when the previous page was exactly full; has_more is false on it and next_cursor is absent.
Do not fabricate missing trades, books, or candles when a route returns an empty page. Store the route, symbol, window, cursor state, request ID, and data-quality decision so the downstream output can explain the gap.

Funding, open interest, and candles

Funding response:
Open-interest response:
Candle response:
Funding, open-interest, and candle routes are separate series. Store interval, route path, venue family, symbol, cursor, and request ID where the route returns one.

Liquidation event

Liquidations are not trades with a different label. Keep liquidation route, direction, side, mark price, users, cursor, and request metadata available for audits.

Hyperliquid Spot trade

Spot uses pair symbols such as HYPE-USDC. Keep Spot routes separate from core perp symbols such as HYPE.

HIP-3 builder market trade

HIP-3 symbols preserve builder prefixes such as km:. Do not strip the prefix when routing, storing rows, or comparing to Hyperliquid core symbols.

HIP-4 outcome book

For HIP-4, fields such as mid_price and mark_price are probability-like values in [0, 1], not ordinary USD prices.

L4, L3, and lifecycle routes

L4 current snapshot routes return one reconstructed book object in data; their /history routes return arrays of snapshot objects. Lighter L3 follows the same grain: the current route returns one book object, while history returns an array of snapshots. Diff and lifecycle routes are separate array response contracts; use the route’s Endpoint Reference page for their item shape. Do not normalize these route families into one shared array or object model. Read the route’s Endpoint Reference page before creating typed models for these route families. Do not copy L4 or L3 field names from another venue, export schema, or browser view into API client code.

Lighter L3 order book

Request:
Example response:
Lighter L3 represents individual-order depth. The latest L3 route returns a single object in data, not an array of books. order_index and owner_account_index are numeric Lighter indexes; price, remaining_size, and original_size are JSON numbers. These fields are not owner addresses, wallet addresses, or raw order IDs. Do not parse it as an aggregated L2 book, and keep the Lighter venue family attached to stored records.

Data freshness

Request:
Example response:
Freshness responses should travel with downstream output when the result feeds a backtest, alert, dashboard, model, or export.

Data-quality coverage response

Request:
Example response:
Data-quality coverage routes use resource-specific response bodies rather than the ordinary market-data envelope. Store the coverage response with the downstream data request ID and job tolerance. Do not require success, data, or meta.request_id from coverage bodies that do not expose those fields.

Error response

Request without an API key:
Example response:
Treat HTTP status as the control signal and error_code as the reason. The JSON body explains what failed and carries the request ID needed for logs, support, retries, or agent tasks.

Next step

Handle every failure a parser can meet with Errors.
Last modified on October 6, 2026