Skip to main content
Trading actions come from two layers. Pre-consensus events arrive before the block is committed. Confirmed events are the validator output after matching.

Confirmed: order

A new limit order resting on the book.
Key fields: side (B=buy, A=sell), px (price), sz (size), oid (order ID), tif (time in force: Alo/Gtc/Ioc).

Confirmed: order_filled

An order that was filled immediately (IOC or market order that matched). Same format as order but with "status": "filled" and sz may be "0.0" (fully consumed).

Confirmed: order_canceled

An order that was canceled. Same format with "status": "canceled".

Confirmed: order_rejected

An order that was rejected by the matching engine.
Rejection reasons: badAloPxRejected (ALO crosses spread), perpMarginRejected, insufficientSpotBalanceRejected, iocCancelRejected, reduceOnlyCanceled, reduceOnlyRejected, minTradeNtlRejected, selfTradeCanceled.

Confirmed: fill

A trade was executed. Includes PnL, fees, and direction.
Key fields: dir (Open Long/Close Short/etc.), closedPnl, fee, feeToken, crossed (taker vs maker), startPosition, twapId.

Pre-consensus: cancel

Cancel submitted before block commit. Arrives ~1 second before confirmed cancellation.

Pre-consensus: cancelByCloid

Same as cancel but uses client order IDs instead of order IDs.

Pre-consensus: batchModify

Order modification with new price and/or size. Shows what market makers are doing before the change is committed.

Pre-consensus: scheduleCancel

Dead man’s switch — cancels all orders if no heartbeat by the specified timestamp.
The data field is the Unix millisecond timestamp when the cancel triggers.