Skip to main content

Orders Dataset

Updated on
Jan 07, 2026

Overview

The orders stream contains all order status updates from the Hyperliquid exchange. This includes order placements, cancellations, fills, rejections, and other lifecycle events.

Stream Type: ORDERS
API Availability: gRPC Streaming API + JSON-RPC/WebSocket APIs
Volume: Very High - Most frequent stream with 18+ different status types

Data Structure

Each block contains an array of order status events:

{
"local_time": "2025-12-04T17:00:00.268701903",
"block_time": "2025-12-04T17:00:00.083688002",
"block_number": 817828537,
"events": [
{
"time": "2025-12-04T17:00:00.268701903",
"user": "0xeb6eda4756f831824cd28e568ef8adcff35016e3",
"hash": "0x81598918a9303dff82d30430bf015102068e00fe44335cd12522346b683417ea",
"builder": null,
"status": "open",
"order": {
"coin": "ZEC",
"side": "B",
"limitPx": "356.42",
"sz": "1.1",
"oid": 258166303284,
"timestamp": 1764867600268,
"triggerCondition": "N/A",
"isTrigger": false,
"triggerPx": "0.0",
"children": [],
"isPositionTpsl": false,
"reduceOnly": false,
"orderType": "Limit",
"origSz": "1.1",
"tif": "Gtc",
"cloid": "0x89119db7aae18b90abe620888af9aadc"
}
}
]
}

Event Fields

Field
Type
Description
time
string
Timestamp of the order status event (ISO 8601)
user
string
Ethereum address of the user who placed the order
hash
string|null
Transaction hash (null for rejected/canceled orders without blockchain tx)
builder
object|null
Builder information (e.g., {"b": "0x...", "f": 20} for builder address and fee)
status
string
Order status - see Order Statuses below
order
object
Full order details - see Order Object below

Order Object

Field
Type
Description
coin
string
Trading pair (e.g., "BTC", "ETH", "xyz:NVDA", "@162")
side
string
Order side: "B" (Buy) or "A" (Ask/Sell)
limitPx
string
Limit price as string
sz
string
Current order size (can be "0.0" if fully filled)
oid
integer
Unique order ID
timestamp
integer
Order creation timestamp (milliseconds since epoch)
triggerCondition
string
Trigger condition or "N/A" if not a trigger order
isTrigger
boolean
Whether this is a trigger/stop order
triggerPx
string
Trigger price (0.0 if not applicable)
children
array
Array of child orders (for complex order types)
isPositionTpsl
boolean
Whether this is a position-level TP/SL order
reduceOnly
boolean
Whether order can only reduce position
orderType
string
Order type: "Limit", "Market", etc.
origSz
string
Original order size at placement
tif
string
Time-in-force: "Gtc", "Alo", "Ioc", etc.
cloid
string|null
Client order ID (optional, for user reference)

Order Statuses

The following order statuses are observed in the dataset:

Success Statuses

These statuses indicate orders that have been successfully processed or are actively working on the exchange.

Status
Description
open
Order successfully placed and is active on the orderbook
filled
Order fully executed/filled
triggered
Trigger order condition met and order activated

Cancellation Statuses

Orders with these statuses were placed successfully but later canceled due to user action or system conditions.

Status
Description
canceled
Order canceled by user or system
marginCanceled
Order canceled due to insufficient margin
openInterestCapCanceled
Order canceled due to open interest cap reached
reduceOnlyCanceled
Reduce-only order canceled (likely position closed)
scheduledCancel
Order canceled on a scheduled basis
selfTradeCanceled
Order canceled to prevent self-trading
siblingFilledCanceled
Order canceled because a sibling order filled

Rejection Statuses

Orders with these statuses were rejected before being placed on the order book due to validation failures or risk constraints.

Status
Description
badAloPxRejected
ALO (Add Liquidity Only) order rejected due to bad price (would cross spread)
iocCancelRejected
IOC (Immediate or Cancel) order rejected/canceled
insufficientSpotBalanceRejected
Order rejected due to insufficient spot token balance
minTradeNtlRejected
Order rejected - notional value below minimum
oracleRejected
Order rejected due to oracle price issues
perpMarginRejected
Perpetual order rejected due to insufficient margin
perpMaxPositionRejected
Perpetual order rejected - would exceed max position size
positionFlipAtOpenInterestCapRejected
Order rejected - would flip position at OI cap
positionIncreaseAtOpenInterestCapRejected
Order rejected - would increase position at OI cap
reduceOnlyRejected
Reduce-only order rejected (would increase position)
tooAggressiveAtOpenInterestCapRejected
Order rejected - too aggressive near OI cap

Market Types

Orders can reference different market types via the coin field:

  • Standard perpetuals: "BTC", "ETH", "SOL", etc.
  • Prediction markets (XYZ): "xyz:NVDA", "xyz:AAPL", "xyz:TSLA", etc.
  • Spot tokens: "@162", "@198", etc.

Time-in-Force (TIF) Types

TIF
Description
Gtc
Good-Till-Cancel (remains active until filled or canceled)
Alo
Add-Liquidity-Only (will only add to book, not cross spread)
Ioc
Immediate-or-Cancel (executes immediately or cancels)
FrontendMarket
Market order from frontend interface

Example Order Events

Open Order
{
"time": "2025-12-04T17:00:00.268701903",
"user": "0xeb6eda4756f831824cd28e568ef8adcff35016e3",
"hash": "0x81598918a9303dff82d30430bf015102068e00fe44335cd12522346b683417ea",
"builder": null,
"status": "open",
"order": {
"coin": "ZEC",
"side": "B",
"limitPx": "356.42",
"sz": "1.1",
"oid": 258166303284,
"timestamp": 1764867600268,
"triggerCondition": "N/A",
"isTrigger": false,
"triggerPx": "0.0",
"children": [],
"isPositionTpsl": false,
"reduceOnly": false,
"orderType": "Limit",
"origSz": "1.1",
"tif": "Gtc",
"cloid": "0x89119db7aae18b90abe620888af9aadc"
}
}
Filled Order
{
"time": "2025-12-04T17:00:00.475982103",
"user": "0x4c96f9be0e7bd04bb2db2a5cdf0b8797be00b0da",
"hash": "0xace6f472128f05e4ae600430bf19350202770057ad8224b650af9fc4d182dfcf",
"builder": null,
"status": "filled",
"order": {
"coin": "ZEREBRO",
"side": "B",
"limitPx": "0.036676",
"sz": "0.0",
"oid": 258174064171,
"timestamp": 1764868092303,
"triggerCondition": "N/A",
"isTrigger": false,
"triggerPx": "0.0",
"children": [],
"isPositionTpsl": false,
"reduceOnly": false,
"orderType": "Limit",
"origSz": "2858.0",
"tif": "Gtc",
"cloid": null
}
}
Rejected Order
{
"time": "2025-12-04T17:00:00.105982103",
"user": "0x1234567890abcdef1234567890abcdef12345678",
"hash": null,
"builder": null,
"status": "perpMarginRejected",
"order": {
"coin": "BTC",
"side": "B",
"limitPx": "95000.0",
"sz": "10.0",
"oid": 258166123456,
"timestamp": 1764867600105,
"triggerCondition": "N/A",
"isTrigger": false,
"triggerPx": "0.0",
"children": [],
"isPositionTpsl": false,
"reduceOnly": false,
"orderType": "Limit",
"origSz": "10.0",
"tif": "Gtc",
"cloid": null
}
}

API Usage

gRPC Streaming
// Subscribe to orders
const request = {
subscribe: {
stream_type: 'ORDERS',
start_block: 0,
filters: {
"user": ["0x123..."],
"coin": ["BTC", "ETH"],
"status": ["open", "filled"]
}
}
};
JSON-RPC
# Get latest order blocks
curl -X POST https://your-endpoint.hype-mainnet.quiknode.pro/your-token/hypercore \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "hl_getLatestBlocks",
"params": {
"stream": "orders",
"count": 10
},
"id": 1
}'
WebSocket
// Subscribe to orders
ws.send(JSON.stringify({
"method": "hl_subscribe",
"params": {
"streams": ["orders"]
}
}));

Important Notes


  • High Volume: Orders stream has the highest event frequency - use filtering for specific users/coins
  • Order Lifecycle: Track complete order lifecycle from placement to completion/cancellation
  • Status Importance: Different status types indicate various success/failure conditions
  • Partial Fills: sz field shows remaining size, origSz shows original order size
  • Hash Field: null for rejected orders that don't reach the blockchain
  • Client Order IDs: Use cloid for tracking your own orders

  • Trades - See the actual fills that result from these orders
  • Book Updates - See how open orders affect the order book
  • Events - View system events that may cause order cancellations
Share this doc