Idempotency-Key header.
Standard and advanced orders
Send orders toPOST /v1/orders. If type is omitted, the request is treated
as a market order for compatibility with existing clients.
The server resolves provider, symbol, and venue coin from
market_id. Do not
send those fields. expected_price records what your client observed, but it
never controls the execution price, margin calculation, or slippage reference.
Limit order example
time_in_force to gtd and provide
gtd_expires_at as a Unix timestamp in milliseconds. IOC and FOK limits use
time_in_force without an expiry.
Manage working orders
UseGET /v1/orders?account_id=...&status=working for the complete bounded set
of pending and resting orders. This view is safer for reconciliation than
searching recent history.
If the server cannot prove the snapshot is complete inside the active-order
bound, it returns 503 with Retry-After instead of returning truncated data.
PATCH /v1/orders/{order_id}changes price and optionally size.PUT /v1/orders/{order_id}/attached-exitssets or removes TP/SL attached to a resting limit entry. Sendnullto remove a leg.DELETE /v1/orders/{order_id}cancels a working order or queues cancellation when execution already owns the row.
Close and protect positions
POST /v1/positions/{position_id}/close derives the closing side, leverage,
margin mode, and reduce-only flag from the current position. It supports market,
limit, and external conditional closes. Omit size for a full close.
Use PUT /v1/positions/{position_id}/exit-orders to atomically place, modify,
and cancel multiple TP/SL levels. The request includes the position size and
current exit-order snapshot you observed. A concurrent position or order change
returns 409, so fetch fresh state and rebuild the operation.
New TP and SL operations can reference each other by operation index to form an
OCO pair. When either leg fills, the other leg is canceled.
For an isolated position, PUT /v1/positions/{position_id}/isolated-margin
sets the desired total extra_margin. Repeating the same target is safe. A
reduction uses a fresh authoritative book and rejects when it would create
unsafe liquidation risk.
TWAP and VWAP
Create both strategies withPOST /v1/twap-orders. Set strategy to twap
or vwap, then provide the duration, slice interval, and optional randomized
timing. Optional trigger and termination prices use the same behavior as the
terminal.
The slice interval must be a whole number from 30 seconds through the smaller
of 12 hours or half the selected duration. Every schedule therefore has at
least two slices.
Read active schedules with GET /v1/twap-orders?account_id=..., inspect one
parent with GET /v1/twap-orders/{id}, and stop future slices with DELETE on
that resource. An in-flight child may still settle after cancellation begins.
Scaled orders
Create a ladder withPOST /v1/scaled-orders. Provide a start price, end
price, 2 to 10 rungs, and a flat, ascending, or descending distribution.
Every rung is an ordinary limit order and independently follows the platform’s
fill and trading rules.
GET /v1/scaled-orders/{id} returns every rung’s price, size, child order ID,
and placement rejection when applicable. DELETE fences unplaced rungs and
cancels every working child.
Reconcile fills and closed positions
GET /v1/fills?account_id=... returns filled orders in settlement order with
fees, realized P&L, notional, liquidity role, and partial-fill lineage. Use
GET /v1/positions?account_id=...&status=closed for cursor-paginated closed
position records.
Treat all cursors as opaque. Order and strategy state can continue changing
after a response, so reconcile by resource ID until it reaches a terminal
status.