Hyperliquid L4 Book
The Hyperliquid L4 Book data type provides order-by-order order book snapshots and updates with user attribution on the Hyperliquid L4 exchange.
Hyperliquid L4 Book
Overview
The Hyperliquid L4 Book data type provides a comprehensive, order-by-order view of the order book for a specific trading pair on the Hyperliquid L4 exchange. Each row represents a single order in the book or a change to an existing order, including the Hyperliquid user address, order type, time-in-force, and L4 status information.
[!NOTE]
This data type is available only for symbols on the
HYPERLIQUIDL4exchange. It extends the standard Full Limit Order Book format with Hyperliquid-specific fields.
File Organization
Hyperliquid L4 Book data is organized in the S3 bucket as follows:
T-LIMITBOOK_FULL/
└── D-{YYYYMMDD | YYYYMMDDHH}/
└── E-HYPERLIQUIDL4/
└── IDDI-[IDENTIFIER]+SC-[COINAPI_SYMBOL_ID]+S-[EXCHANGE_SYMBOL].csv.gzExamples:
T-LIMITBOOK_FULL/D-2026060900/E-HYPERLIQUIDL4/IDDI-47427873+SC-HYPERLIQUIDL4_PERP_BTC_USDC+S-BTC.csv.gz
Where:
T-LIMITBOOK_FULL: Indicates the data type (Full Limit Order Book)D-{YYYYMMDD | YYYYMMDDHH}defines the time partition:YYYYMMDD→ daily data (UTC)YYYYMMDDHH→ hourly data (UTC)
E-HYPERLIQUIDL4: Hyperliquid L4 exchange identifierIDDI-[IDENTIFIER]: CoinAPI's internal identifierSC-[COINAPI_SYMBOL_ID]: CoinAPI's symbol identifierS-[EXCHANGE_SYMBOL]: The symbol as identified by the exchange
File Format
Files are in CSV format, compressed with gzip. Each row represents a single order book update.
Data Fields
| Column Name | Type | Description |
|---|---|---|
| time_exchange | datetime | UTC timestamp of the update provided by the exchange or estimated using the exchange API delay. |
| time_coinapi | datetime | UTC timestamp when CoinAPI first received the update. |
| update_type | string | Describes the order book operation. See Update Types Explained for definitions. |
| is_buy | boolean | Indicates if the update is related to the bid side of the book. 0 for ask (sell), 1 for bid (buy). |
| entry_px | decimal | Price of the order. |
| entry_sx | decimal | Current size of the order. |
| order_id | string | Exchange-provided order identifier. |
| user | string | User or account identifier associated with the order, as provided by Hyperliquid. |
| tif | string | Time-in-force value. Examples: Alo, Gtc, Ioc. |
| reduce_only | boolean | Indicates whether the order is reduce-only. 0 for false, 1 for true. |
| order_type | string | Order type. Examples: Limit, Market, Take Profit Limit, Take Profit Market, Stop Market, Stop Limit. |
| cloid | string | Client order identifier, when provided by the exchange. |
| orig_size | decimal | Original order size at placement. |
| trigger_condition | string | Human-readable trigger condition. N/A for regular orders. Examples: Price above 65000 or Price below 65000 for stop, take-profit, or stop-loss orders. |
| is_trigger | boolean | Indicates whether the order is a stop, take-profit, or stop-loss order that will activate when trigger_px is reached. 0 for regular limit orders. |
| trigger_px | decimal | Price at which a trigger order activates. 0.0 for non-trigger orders. |
| is_position_tpsl | boolean | Indicates whether the order is a take-profit or stop-loss that applies to an entire position, rather than a specific order. |
| children_oids | string | Comma-separated list of order IDs for bracket child orders attached to the parent order. Empty when no children are attached. |
| is_child | boolean | Indicates whether the order is a child order in a bracket. 0 for parent orders, 1 for child orders. |
| hl4_status | string | Hyperliquid L4 order status. Present on incremental updates only. See hl4_status Values for definitions. Empty on SNAPSHOT rows. |
Example Data
Snapshot rows establish the initial order book state:
time_exchange;time_coinapi;update_type;is_buy;entry_px;entry_sx;order_id;user;tif;reduce_only;order_type;cloid;orig_size;trigger_condition;is_trigger;trigger_px;is_position_tpsl;children_oids;is_child;hl4_status
00:00:00.0050246;00:00:00.7751290;SNAPSHOT;0;63058.0;0.00362;463141850511;0x388d9e1ccaec74527f73f8c87b5928ba28c06c03;Alo;0;Limit;0x00000000000000000000019e9681853a;0.00362;N/A;0;0.0;0;;0;Incremental update examples:
00:00:00.0050246;00:00:00.8864830;SET;0;63123.0;0.026;463141856202;0xf5dd745bcf393686ceffb6a43f7e7b4c172aefad;Alo;0;Limit;0x57f9b690afe6937760d553b17a3aebc4;0.026;N/A;0;0.0;0;;;OPEN
00:00:00.0050246;00:00:00.8340728;DELETE;0;63072.0;0.01138;463141848401;0x31ca8395cf837de08b24da3f660e77761dfb974b;Alo;0;Limit;;0.01138;N/A;0;0.0;0;;;CANCELED
00:00:00.0050246;00:00:00.8889144;REJECTED;0;63057.0;0.52335;463141856209;0x2cffce91b4e0c81df18726ff66b31b2b1545e1ad;Alo;0;Limit;0x20e929c95def00cf6b53743265be0100;0.52335;N/A;0;0.0;0;;;REJECTED_ALOData Collection Process
- We maintain a real-time connection to the Hyperliquid L4 exchange.
- Every change to the order book is captured and recorded with full order-level detail.
- The data is processed, normalized, and stored in our system.
- At the end of each day (UTC), the data is aggregated into daily files and uploaded to the S3 bucket.
Update Types Explained
SNAPSHOT: Provides a full snapshot of the order book. All previous data should be discarded before processing aSNAPSHOT.SET: Order accepted and placed in the book.DELETE: Order removed from the book. Seehl4_statusfor the removal reason.REJECTED: Order rejected. Seehl4_statusfor the rejection reason.PENDING: Order is pending activation (for example, a trigger order waiting for its trigger price).
hl4_status Values
hl4_status is present on incremental updates only, alongside update_type. Snapshot rows leave this field empty.
| Value | Description |
|---|---|
OPEN | Order accepted and placed on the book. |
FILLED | Order fully executed. |
CANCELED | Order canceled by the user. |
TRIGGERED | Stop/TP/SL trigger order was activated and executed. |
REDUCE_ONLY_CANCELED | Canceled because it would increase position size (reduce-only constraint). |
SELF_TRADE_CANCELED | Canceled to prevent self-trading against own orders. |
SIBLING_FILLED_CANCELED | OCO bracket — canceled because its sibling order was filled. |
MARGIN_CANCELED | Canceled by the risk engine due to insufficient margin. |
VAULT_WITHDRAWAL_CANCELED | Canceled due to a vault withdrawal reducing available balance. |
LIQUIDATED_CANCELED | Canceled as part of a liquidation process. |
REJECTED_ALO | Rejected — Add Liquidity Only order would have crossed the spread. |
REJECTED_MARGIN | Rejected — insufficient perpetual margin. |
REJECTED_IOC | Rejected — Immediate-or-Cancel order could not be filled immediately. |
REJECTED_BALANCE | Rejected — insufficient spot balance. |
REJECTED_REDUCE | Rejected — reduce-only order would not reduce position. |
REJECTED_MIN_NTL | Rejected — order size below minimum notional value. |
REJECTED_ORACLE | Rejected — oracle price deviation too large. |
REJECTED_OI | Rejected — would exceed open interest limit. |
Corner Cases and Special Considerations
- Snapshots: Snapshots are provided at the start of each day or after a disconnection. Always process
SNAPSHOTupdates by clearing the existing book first. - Bracket Orders: Parent orders may reference child orders via
children_oids. Child orders are identified byis_child=1. - Trigger Orders: Stop, take-profit, and stop-loss orders include
trigger_condition,is_trigger, andtrigger_pxfields. - High Frequency Updates: During periods of high volatility, you may observe a very high frequency of updates.
Usage Tips
- To reconstruct the full order book, process updates sequentially, maintaining the state of the book in memory.
- Use the
time_exchangefield for accurate sequencing of updates. - Pay attention to the
update_typeandhl4_statusfields to correctly apply changes to your local order book representation. - Use the
userfield to analyze order book composition by Hyperliquid account.
For any questions or issues with the Hyperliquid L4 Book data, please contact our support team.