Skip to main content
Exchange events use three data shapes: an order snapshot, an order plus one fill, or an original-and-replacement order pair.

Order snapshot events

exchange.accepted, exchange.cancelled, and exchange.rejected have the same data.order shape. The event type and order status identify the transition.
For exchange.cancelled, order.status is cancelled. cancel_reason is usually null; an immediate order with an executed portion and cancelled remainder uses unfilled_ioc_quantity. For exchange.rejected, order.status is rejected and reject_reason is a public value such as insufficient_balance, post_only_would_cross, self_trade_prevention, order_not_found, no_fill, or engine_rejected.

exchange.filled

One order can produce several fill events. data.fill.id identifies the fill; data.order is the order snapshot after that fill was applied.

exchange.replaced

A replacement event contains both snapshots. The original is cancelled and links to the replacement through replace.replaced_by_order_id. The replacement links back through replace.replaces_order_id.
Use data.order.id, data.original_order.id, or data.replacement_order.id with GET /v1/partner/exchange/orders/{order_id} for the authoritative order state. Fill history is available through GET /v1/partner/exchange/fills. Return to the webhook overview