This API is in private preview. Target September 2026; timing is subject to change.
{
"method": "subscribe",
"subscription": {
"type": "builderOrderUpdates",
"builders": ["0x2222222222222222222222222222222222222222"]
}
}{
"channel": "subscriptionResponse",
"data": {
"subscriptionId": "sub_01",
"type": "builderOrderUpdates"
}
}{
"channel": "builderOrderUpdates",
"subscriptionId": "sub_01",
"blockHeight": 123456,
"blockTime": 1780000000000,
"cursor": "<opaque cursor>",
"data": {
"orders": [{
"time": "2024-01-01T00:00:00.000000000",
"user": "0x1111111111111111111111111111111111111111",
"hash": "0xabc...def",
"builder": { "b": "0x2222222222222222222222222222222222222222", "f": 100 },
"status": "open",
"txIndex": 3,
"statusTimestamp": 1780000000000,
"order": {
"oid": 12345,
"coin": "BTC",
"side": "B",
"limitPx": "100000.0",
"sz": "0.10",
"timestamp": 1780000000000,
"triggerCondition": "N/A",
"isTrigger": false,
"triggerPx": "0.0",
"children": [],
"isPositionTpsl": false,
"reduceOnly": false,
"orderType": "Limit",
"origSz": "0.10",
"tif": "Gtc",
"cloid": null
}
}]
}
}| Field | Type | Description |
|---|---|---|
| orders | array | Order status records. |
| orders[] | object | Order status record. |
| orders[].time | string | Time the node recorded the order-status event. |
| orders[].user | string | User identifier. |
| orders[].hash | string | null | Populated for open; null for every other observed status. Rejected and canceled orders have no submitted transaction. |
| orders[].builder | object | null | Builder metadata when the order was placed through a builder; null otherwise. |
| orders[].status | string | Current state of the order. See the observed values below. |
| orders[].txIndex | integer | Index of the transaction within its block. |
| orders[].statusTimestamp | integer | Milliseconds timestamp for the status update. |
| orders[].order | object | Order fields. |
| orders[].order.oid | integer | Identifier assigned to the order. |
| orders[].order.coin | string | Market symbol for the order. |
| orders[].order.side | string | Side code: A is ask/sell; B is bid/buy. |
| orders[].order.limitPx | string | Limit price for the order. |
| orders[].order.sz | string | Current resting size of the order. |
| orders[].order.timestamp | integer | Milliseconds timestamp when the order was created. |
| orders[].order.triggerCondition | string | Human-readable trigger condition, not a programmatic enum. Non-trigger orders use the literal "N/A"; use triggerPx for the machine-readable price. |
| orders[].order.isTrigger | boolean | Whether the order is a trigger order. |
| orders[].order.triggerPx | string | Machine-readable trigger price; "0.0" when isTrigger is false. |
| orders[].order.children | array | Child orders associated with the order. |
| orders[].order.isPositionTpsl | boolean | Whether the order is a position take-profit or stop-loss order. |
| orders[].order.reduceOnly | boolean | Whether execution can only reduce the position. |
| orders[].order.orderType | string | Display string: Limit, Stop Limit, Stop Market, Market, Take Profit Market, or Take Profit Limit. |
| orders[].order.origSz | string | Original order size. |
| orders[].order.tif | string | null | Time-in-force: Alo, Ioc, Gtc, FrontendMarket, or LiquidationMarket; null when not set. |
| orders[].order.cloid | string | null | Client-supplied order identifier, when present. |
This list reflects values observed in node output and is not guaranteed exhaustive. Clients must tolerate unknown status strings rather than branch exhaustively.
| Status | Meaning |
|---|---|
open | Order is open. |
canceled | Order was canceled. |
badAloPxRejected | Rejected under add-liquidity-only price handling. |
perpMarginRejected | Rejected by perpetual-margin checks. |
iocCancelRejected | Observed immediate-or-cancel rejection status; the precise condition is not documented here. |
filled | Order was filled. |
insufficientSpotBalanceRejected | Rejected for insufficient spot balance. |
tooManyOpenOrdersRejected | Rejected because too many orders were already open. |
positionIncreaseAtOpenInterestCapRejected | Rejected because it would increase position at the open-interest cap. |
reduceOnlyCanceled | Canceled because its reduce-only condition could no longer be met. |
reduceOnlyRejected | Rejected because its reduce-only condition could not be met. |
minTradeNtlRejected | Rejected below the minimum trade notional. |
selfTradeCanceled | Canceled to prevent a self-trade. |
tooAggressiveAtOpenInterestCapRejected | Rejected as too aggressive at the open-interest cap. |
positionFlipAtOpenInterestCapRejected | Rejected because it would flip position at the open-interest cap. |
triggered | Trigger condition was met. |
siblingFilledCanceled | Canceled after a paired order filled. |
openInterestCapCanceled | Canceled at the open-interest cap. |
marginCanceled | Canceled for margin reasons. |
liquidatedCanceled | Canceled because the position was liquidated. |
outcomeSettledCanceled | Canceled because the outcome market settled. |
openInterestIncreaseRejected | Rejected because it would increase open interest. |
{
"method": "unsubscribe",
"subscription": {
"type": "builderOrderUpdates",
"builders": ["0x2222222222222222222222222222222222222222"]
}
}To resume a stream, supply cursor in the subscription object. The cursor is opaque: clients store and return it unmodified, and its format may change.