Place an order
Places a market order, or an immediate-or-cancel limit order, sized by value in US
dollars.
The request waits for the result, up to 5 seconds by default, so most orders come back
filled or canceled in this response. Change the wait with Prefer: wait=N (0 to 15
seconds). An order still pending after the wait keeps going; read it again later.
client_order_id makes the request safe to retry. Sending the same body with the same
client_order_id again never creates a second order: it returns the first one with
200 and Idempotent-Replayed: true. After a timeout, a dropped connection or a 503,
send the same request again.
A 201 means an order was created, whatever its status. Read status to learn what
happened. An error response means nothing was recorded, so fix the request and send it
again.
Authorizations
An API key from the account page, sent as Authorization: Bearer tapi_….
Headers
wait=N: wait up to N seconds (0 to 15) for the order to finish. The default is wait=5.
"wait=5"
Body
Your ID for the order, 1 to 64 characters of letters, digits, ., _, : and -. Unique per account, forever.
^[A-Za-z0-9._:-]{1,64}$A market symbol from GET /v1/markets. Case-insensitive, and must match exactly.
"BTC"
buy, sell market fills now at the best available prices, within 0.5% of the current price.
limit fills now at your price or better; whatever cannot fill at once is canceled.
market, limit How much to buy or sell, in USD, with at most 2 decimals. The size is this value divided by the order's price limit, rounded down to the market's size step, so the order never costs more than this.
^-?[0-9]+(\.[0-9]+)?$"250.00"
Required for limit orders, refused for market. The worst price you accept. Rounded in your favour to the market's price precision.
^-?[0-9]+(\.[0-9]+)?$When true, the order can only reduce your position. It never opens one or flips a long into a short.
Up to 20 keys of your own, returned with the order and never interpreted. Keys up to 40 characters of letters, digits, _, . and -; string values up to 500 characters.
Response
The client_order_id already names an identical order. This is that order; nothing new was placed.
"order"Our ID for the order.
Your ID for the order, 1 to 64 characters of letters, digits, ., _, : and -. Unique per account, forever.
^[A-Za-z0-9._:-]{1,64}$buy, sell market fills now at the best available prices, within 0.5% of the current price.
limit fills now at your price or better; whatever cannot fill at once is canceled.
market, limit pending: recorded, and possibly sent; the outcome is not known yet.
filled: the whole size filled.
canceled: filled partly or not at all; the rest found no price within the limit.
rejected: refused; nothing filled.
More statuses will be added. Treat a status you don't recognise as not finished.
pending, filled, canceled, rejected Why an order is canceled or rejected. null otherwise.
The value you sent. null for a close by percent or of the whole position.
The percent of a close. null otherwise.
The size sent to the market, in the market's units. null until the order is sized.
Your limit price as used. null for market orders.
The worst price the order could fill at. For market orders, 0.5% from the price when it was placed.
Always ioc (immediate or cancel) for now.
ioc A decimal number as a string, for example "250.00". Requests also accept a JSON number.
^-?[0-9]+(\.[0-9]+)?$The USD value that filled.
Total fees paid, in USD, exact to 6 decimals. Can arrive shortly after the order finishes.
What the order did to your position. null when nothing filled.
open, increase, reduce, close, flip, null What happened, in plain English. For people and language models; branch on fields, not on this text.
Up to 20 keys of your own, returned with the order and never interpreted. Keys up to 40 characters of letters, digits, _, . and -; string values up to 500 characters.
RFC 3339 in UTC with milliseconds, for example 2026-09-27T14:30:00.123Z.
RFC 3339 in UTC with milliseconds, for example 2026-09-27T14:30:00.123Z.
When the order reached a final status.
Present only with expand[]=timeline.