Skip to main content

Trading

Private trading endpoints manage order placement and lifecycle. All order operations (create, amend, cancel) are asynchronous — the REST response confirms the request was received, but order lifecycle updates arrive via WebSocket subscriptions.

Order Management Workflow

Create Order Call private/create-order to submit a new order. The response returns an order_id and client_oid, but the order may still be pending acceptance by the matching engine. Subscribe to user.order or user.order.{instrument_name} to receive real-time order status updates.

Amend Order Call private/amend-order to modify price or quantity on an existing order. Behind the scenes, amend performs a cancel-then-create operation. The new order loses queue priority unless you are only reducing quantity.

Cancel Order Call private/cancel-order to cancel a single order by order_id or client_oid, or private/cancel-all-orders to cancel all orders for a given instrument.

Order Types

TypeDescription
LIMITLimit order with specified price. Rests on the order book until filled or canceled.
MARKETMarket order that executes immediately at best available price.

For trigger orders (stop-loss, take-profit) and multi-leg strategies (OCO, OTO, OTOCO), see Advanced Order Management.

Time in Force

ValueDescription
GOOD_TILL_CANCELOrder remains active until filled or explicitly canceled. Default for limit orders.
IMMEDIATE_OR_CANCELOrder fills immediately (partial or full), unfilled portion is canceled.
FILL_OR_KILLOrder must fill entirely and immediately, or the entire order is canceled.

Execution Instructions

Execution instructions are passed as an array in exec_inst. Multiple instructions can be combined.

InstructionDescription
POST_ONLYOrder is rejected if it would take liquidity. Ensures maker fee.
SMART_POST_ONLYIf the order would take liquidity, it is repriced to the best maker level instead of being rejected.
REDUCE_ONLYOrder can only reduce an existing position, not increase or open a new position.

Order Statuses

StatusDescription
PENDINGOrder submitted, awaiting processing by the matching engine.
NEWOrder accepted by the matching engine, not yet on the order book.
ACTIVEOrder is live on the order book, waiting to be filled.
FILLEDOrder has been completely filled.
CANCELEDOrder was canceled (by user request, or by system).
EXPIREDOrder expired due to time-in-force constraints.
REJECTEDOrder was rejected (e.g., invalid parameters, risk checks failed).

Querying Orders and Trades

Real-Time Order and Trade Updates

Subscribe to the following WebSocket channels for real-time updates:

ChannelDescription
user.orderOrder lifecycle events across all instruments
user.order.{instrument_name}Order updates for a specific instrument
user.tradeTrade execution events across all instruments
user.trade.{instrument_name}Trade execution events for a specific instrument

These subscriptions require authentication and eliminate the need for polling REST endpoints.