POST /v1/orders endpoint and the same legs array as a single-leg option — you just include 2–4 legs.
Leg count drives the shape:
2–4 legs = multi-leg option order. The maximum is 4 legs. See Order Flow.Strategies you can express
Each leg independently sets its own
side, putCall, strikePrice, maturity, and positionEffect, so you can describe any of these.
How quantity works: qty and ratioQty
This is the one concept unique to multi-leg orders.
ratioQtyon each leg is the leg’s share of the spread ratio — e.g. a 1:1 vertical hasratioQty: "1"on both legs; a 1:2 ratio spread has"1"and"2".qtyat the order level is the number of spreads (the greatest common divisor of the leg quantities). Placing 5 of a 1:1 vertical → orderqty: "5", each legratioQty: "1". The actual contracts traded per leg =qty × ratioQty.
Net price. For a multi-leg
LIMIT order, price is the net debit or credit for the whole spread, not a per-leg price. A BUY order with a positive price is a net debit; selling a spread for a credit uses the corresponding sell side.Leg fields (recap)
Same leg schema as single-leg options — repeated per leg:Example — vertical call debit spread
Buy 1 AAPL 155 call vertical expiring 2025-01-17 for a net debit of $1.50. (Buy the 150 call, sell the 155 call.)cURL
Example — calendar spread (same strike, different expirations)
Request body
Example — 1×2 ratio spread
Orderqty: "1" with leg ratios 1 and 2 → trades 1 long and 2 short contracts.
Request body
Response
Watch it fill
Multi-leg updates arrive asaccount.order events with category: "MULTI_LEG" and every leg echoed in the legs array. qty/cumQty count spreads, not individual contracts:
account.order — spread partially filled
Next steps
Single-leg option
The one-leg foundation these strategies build on.
Options contract symbols
Find the strikes and expirations to build your legs.
Order Flow
Recap how every order type fits together.
Place Order API
Interactive reference and full schema.