Skip to main content
Every order is placed with private/order, a signed action against the TRADE_MODULE. The same payload shape describes limit and market orders, resting and immediate orders, and (with a few extra fields) trigger and algo orders. This page covers the enums and flags that shape order behaviour; see the API Reference tab for exact field types and the full request/response schemas.
Prices, amounts, and fees (limit_price, amount, max_fee, trigger_price, extra_fee) are decimal strings. The signer signs the fixed-point encoding of these values as part of the EIP-712 action — see Action signing.

Order type

order_type selects how the order interacts with the book. Default limit.
limit_price is required even for market orders — it is a component of the order signature. For a market order it acts as a worst-acceptable price bound; the unfilled remainder is cancelled instead of resting.

Time in force

time_in_force controls resting vs. immediate execution. Default gtc. Orders always expire at signature_expiry_sec regardless of time-in-force. market, ioc, and fok orders never leave a resting order in the book.

Direction

direction is buy or sell.

Order flags

reject_post_only
boolean
default:"true"
Applies to post_only orders. When true, a post-only order that would cross the book is rejected. When false, its limit price is instead adjusted to one tick away from the best bid/offer so it rests as a maker order.
reduce_only
boolean
default:"false"
When true, the order can only reduce an existing position — never increase it. If the amount exceeds the current position size, the order fills up to that size and cancels the remainder. Supported only for market orders and non-resting limit orders (ioc or fok).
mmp
boolean
default:"false"
Tags the order for Market Maker Protection. Tagged orders count toward the MMP counters and are cancelled when protection trips.
label
string
Optional client-defined tag (max 64 chars). Enables bulk cancel via private/cancel_by_label.
max_fee is the max fee per unit of volume the signer accepts; the order is rejected if the estimated fee exceeds it. Optional advanced fields include referral_code, client, reject_timestamp, extra_fee, and is_atomic_signing (EIP-1271 atomic-signing orders).

Place an order

Preview an order’s price and fee without placing it using public/order_quote (unauthenticated) or private/order_quote (authenticated). Both take the same fully-signed order payload as private/order (including nonce, signer, signature, and signature_expiry_sec) — they simply return the quote instead of resting the order.

Trigger (conditional) orders

Supply the trigger fields to submit a stop-loss or take-profit that stays dormant (order_status: untriggered) until its trigger price is reached, then enters the book.
trigger_price_type: index is defined in the schema but not yet supported by the matching engine — use mark.
Query and cancel trigger orders with private/get_trigger_orders, private/cancel_trigger_order (by order_id), and private/cancel_all_trigger_orders.

Algo orders

An algo order (e.g. slice-based execution) is submitted by supplying algo_type alongside algo_duration_sec and algo_num_slices. Its lifecycle status is algo_active. Trigger and algo fields are mutually exclusive — an order carrying both is rejected.
twap is currently the only supported algo_type; any other value is rejected.
Query and cancel algo orders with private/get_algo_orders, private/cancel_algo_order (by order_id), and private/cancel_all_algo_orders.

Replace (atomic cancel + replace)

private/replace atomically cancels an existing order and places a new one in a single call — avoiding the race where a separate cancel-then-place leaves you briefly out of the book. The payload is a private/order params object plus the cancel-target fields:

Cancelling orders

Single order

private/cancel — by order_id (plus instrument_name, subaccount_id).

By nonce

private/cancel_by_nonce — cancels the order(s) for a nonce on an instrument_name.

By instrument

private/cancel_by_instrument — all open orders on one instrument_name.

By label

private/cancel_by_label — all orders carrying a label (optionally scoped to one instrument).
private/cancel_all cancels every open order on a subaccount. Set cancel_trigger_orders and cancel_algo_orders to also clear untriggered trigger orders and active algo orders.
For multi-leg block trades, use the RFQ workflow rather than individual orders.
Order-placing and cancel methods are rate-limited under the matching class (with cancel_all under endpoint and cancel_by_label under custom); see Rate limits.