Skip to main content

Order updates

Real-time order state updates. Requires authentication.

Subscribe

{"op": "subscribe", "args": ["orders"]}

Topic format: orders (per-account, not per-symbol).

Update Message

Pushed on each order state change. Each message is a full replacement of the order state — there are no partial deltas.

{
"channel": "orders",
"type": "update",
"code": "f1e2d3c4-b5a6-7890-fedc-ba9876543210",
"customer_code": "c1d2e3f4-a5b6-7890-cdef-123456789abc",
"symbol": "BTCUSD_PERP",
"action": "Buy",
"order_type": "Limit",
"status": "Filled",
"amount": "100",
"filled_amount": "100",
"limit_price": "67500.00",
"stop_price": null,
"average_fill_price": "67498.50",
"time_in_force": "GTC",
"expire_time": null,
"post_only": false,
"reference_id": "my-order-001",
"reason": null,
"created": "2025-06-15T07:30:00Z",
"finished": "2025-06-15T07:30:01Z",
"timestamp": "2025-06-15T07:30:01.456Z"
}
FieldDescription
codeUnique order identifier
customer_codeCustomer identifier
symbolInstrument symbol
actionBuy or Sell
order_typeMarket, Limit, StopLoss, or TakeProfit
statusOpen, CanceledPartiallyFilled, Filled, Canceled, Expired, or Rejected
amountOriginal order amount in contracts
filled_amountCumulative filled amount
limit_priceLimit price (null for market orders)
stop_priceStop trigger price (null for non-stop orders)
average_fill_priceVolume-weighted average fill price (null if no fills)
time_in_forceGTC, IOC, FOK, or GTD
expire_timeExpiration time for GTD orders
post_onlyWhether the order is post-only
reference_idClient-assigned order identifier
reasonRejection or cancellation reason
createdOrder creation timestamp
finishedTimestamp when order reached a terminal state
timestampServer-side event time (maps to updated in REST)

Notes:

  • There is no initial snapshot on subscribe — use REST GET /orders for current state.
  • order_type corresponds to type in the REST Order schema (renamed to avoid collision with the message type field).
  • timestamp corresponds to updated in the REST Order schema.