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
| Strategy | Structure | Legs |
|---|---|---|
| Vertical spread | Same expiration, different strikes (e.g. buy 150C / sell 155C) | 2 |
| Calendar (horizontal) spread | Same strike, different expirations | 2 |
| Ratio spread | Unequal leg quantities (e.g. buy 1 / sell 2) — expressed via ratioQty | 2–3 |
| Iron condor / butterfly | Four legs combining puts and calls | 3–4 |
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:| Field | Required | Notes |
|---|---|---|
securityType | yes | OPT. |
side | yes | BUY or SELL for this leg (B/S accepted). |
ratioQty | yes | This leg’s ratio (e.g. "1", "2"). |
putCall | yes* | CALL or PUT (C/P accepted). *Required for option legs. |
strikePrice | yes* | Strike, decimal string. |
maturity | yes* | YYYY-MM-DD. |
positionEffect | yes | OPEN or CLOSE (O/C accepted). |
symbol | no | Defaults to the order-level underlying. |
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.
Try it live
Interactive reference and full schema.