Place Order
We tried our best to make the trading API as easy as possible to work with. There are some essential concepts to understand that have to do with a trading flow, but the calls themselves are very straightforward.
Buying and Selling Equities
Placing an order through the Trading API is very simple. There’s no FIXML to learn, no custom formats or XML. There are five required parameters:
class- The kind of order to be placed. One of: equity, option, multileg, combo.symbol- The symbol to be ordered.duration- The time for which the order will remain in effect (Day or GTC).side- The side of the order (buy or sell).quantity- The number of shares to be ordered, in whole numbers.type- The type of order to be placed (market, limit, etc.)
A properly composed order for 100 shares of AAPL looks like this:
curl --request POST \
--url https://api.tradier.com/v1/accounts/6YA00001/orders \
--header 'accept: application/json' \
--header 'authorization: Bearer {TOKEN}' \
--header 'content-type: application/x-www-form-urlencoded' \
--data-urlencode type=market \
--data-urlencode duration=day \
--data-urlencode preview=true \
--data-urlencode class=equity \
--data-urlencode symbol=AAPL \
--data-urlencode quantity=100 \
--data-urlencode side=buy
Buying and Selling Options
Placing an order for an option is very similar to that of a stock. There is only one additional field for placing a single-leg:
option_symbolan OCC symbol (AAPL251219C00195000) for the option to be ordered.
A properly composed order for 1 contract of an AAPL option looks like this. Note that options trade in contracts, not shares — each contract typically represents 100 shares of the underlying security.
curl --request POST \
--url https://api.tradier.com/v1/accounts/6YA00001/orders \
--header 'accept: application/json' \
--header 'authorization: Bearer <TOKEN>' \
--header 'content-type: application/x-www-form-urlencoded' \
--data-urlencode type=market \
--data-urlencode duration=day \
--data-urlencode class=option \
--data-urlencode symbol=AAPL \
--data-urlencode quantity=1 \
--data-urlencode option_symbol=AAPL261002C00335000 \
--data-urlencode side=buy_to_open
Placing Multileg and Combo orders
Placing multileg and combo orders uses the same framework and parameters as explained above for single-leg orders, with only slight modifications. Legs only have three specific data points: side, quantity, and symbol. For option legs, you should send option_symbolin the case of combo orders, equity legs should have option_symbol set to null as the underlying symbol will be used.
In order to send multiple legs, we’ve adopted standard form-parameter notation: side[index], quantity[index], option_symbol[index], where index is the leg number (based at zero).
side[index]The side of the leg.quantity[index]The quantity of shares/contracts for that legoption_symbol[index]The OCC symbol (AAPL251219C00195000) for the option. Should be null for equity legs.
A properly composed multileg order looks like this:
curl -X POST "https://api.tradier.com/v1/accounts/6YA00001/orders" \
-H "Authorization: Bearer <TOKEN>" \
-H "Accept: application/json" \
-d "class=multileg" -d "symbol=AAPL" -d "type=credit" \
-d "duration=day" -d "price=1.00" -d "preview=true" \
-d "option_symbol[0]=AAPL261120P00230000" -d "side[0]=buy_to_open" -d "quantity[0]=1" \
-d "option_symbol[1]=AAPL261120P00235000" -d "side[1]=sell_to_open" -d "quantity[1]=1" \
-d "option_symbol[2]=AAPL261120C00265000" -d "side[2]=sell_to_open" -d "quantity[2]=1" \
-d "option_symbol[3]=AAPL261120C00270000" -d "side[3]=buy_to_open" -d "quantity[3]=1"
Pre/Post Market Sessions
Pre- and post-market session orders are supported; however, some restrictions apply.
Pre-market Session: 7:00 AM EST to 9:24 AM EST ; Post-market Session: 4:00 PM EST to 19:55 PM EST
Some notes about orders placed for these sessions:
- Only equity orders are permitted.
- Order type must be
limit - Orders placed in the session will expire at the end of the session
- You cannot place orders for pre/post session outside the session window
Previewing Orders
It is in the investor’s best interest to preview an order before actually placing it. A preview call will return issues and warnings associated with the order (if applicable) as well as commission information should the order be executed. Previewing is also the best way to get started using the Trading API.
By sending preview=true as a parameter to the Create Order call, you can run all validation checks against an order without actually submitting it.
curl --request POST \
--url https://api.tradier.com/v1/accounts/6YA00001/orders \
--header 'accept: application/json' \
--header 'authorization: Bearer <TOKEN>' \
--header 'content-type: application/x-www-form-urlencoded' \
--data-urlencode type=market \
--data-urlencode duration=day \
--data-urlencode preview=true \
--data-urlencode class=equity \
--data-urlencode symbol=AAPL \
--data-urlencode side=buy
{
"order": {
"status": "ok",
"commission": 0,
"cost": 332.79,
"fees": 0,
"symbol": "AAPL",
"quantity": 1,
"side": "buy",
"type": "market",
"duration": "day",
"result": true,
"order_cost": 332.79,
"margin_change": 166.395,
"request_date": "2026-10-02T13:45:06.213",
"extended_hours": false,
"class": "equity",
"strategy": "equity",
"day_trades": 0
}
}
Note: Preview orders are not required — but are recommended. There will be circumstances (i.e. algorithmic trading) where it is unreasonable to preview the order first.
On this page
- Place Order