Skip to main content
POST

Body

application/json

Order submission request

Submit a market, limit, or stop order for a specific trading account.

Examples

Market Order (immediate execution):

Limit Order (execute at specified price or better):

Stop Order (trigger market order when price reached):

account_id
string<uuid>
required

UUID of the trading account to place order on (required)

Example:

"550e8400-e29b-41d4-a716-446655440000"

contract
string
required

Contract symbol (e.g., "ESH6" for E-mini S&P 500 March 2026)

Example:

"ESH6"

quantity
integer<int32>
required

Number of contracts to trade (positive integer)

Required range: x >= 1
Example:

2

side
string
required

Order side: "buy" (go long) or "sell" (go short/close long)

Example:

"buy"

bracket_intent
string | null

How this order's TP/SL relate to the position's existing bracket when SCALING IN (adding to an open position). Optional:

  • "position" — the levels are ticket defaults (e.g. tick offsets): consolidate into ONE stop / ONE target for the whole position. The existing position bracket grows to cover the added contracts at its own price; this order's levels are dropped for the legs that already exist.
  • "ladder" — the levels were chosen deliberately for these contracts: they become their own TP/SL legs alongside the position bracket (partial-exit ladder).
  • omitted — legacy behavior: legs at the same price as the position bracket consolidate; legs at a different price ladder.

Has no effect when the order opens a fresh position or carries no TP/SL.

Example:

"position"

order_type
string | null

Order type: "market" (default), "limit", or "stop"

Example:

"market"

price
number<double> | null

Price for limit/stop orders (required for limit/stop, ignored for market)

Example:

6050.25

stop_loss
number<double> | null

Stop loss price for bracket orders (optional). Creates a stop order to close position at this price. For buy orders: SL should be below entry price. For sell orders: SL should be above entry price.

Partial fills follow the same lifecycle as take_profit: armed on the first fill for the filled contracts, grown with later fills, kept when the entry remainder is cancelled.

Example:

6000

stop_loss_ticks
integer<int32> | null

Stop-loss distance in ticks from the entry (optional). Same anchoring semantics as take_profit_ticks. Ignored when stop_loss is provided.

Required range: x >= 0
Example:

60

take_profit
number<double> | null

Take profit price for bracket orders (optional). Creates a limit order to close position at this price. For buy orders: TP should be above entry price. For sell orders: TP should be below entry price.

Partial fills: a resting entry that fills in several executions arms its TP on the FIRST fill, sized to the contracts filled so far, and the TP grows automatically as the remainder fills. Cancelling the unfilled remainder keeps the armed TP for the open contracts. If the TP/SL closes the position while part of the entry is still unfilled, the remainder is cancelled too (the bracket strategy is complete).

Example:

6100

take_profit_ticks
integer<int32> | null

Take-profit distance in ticks from the entry (optional). The engine prices the bracket off the ACTUAL entry — the fill price for market orders, the limit/trigger price for resting orders — so a stale client-side market snapshot can never plant a bracket on the wrong side of the real market. Ignored when take_profit is provided.

Required range: x >= 0
Example:

120

Response

Order command accepted for async processing

accepted
boolean
required
command_id
string<uuid>
required
status
string
required