Places a sell order for an instrument. Supports various order types including limit, market, stop, and advanced order types (stop-limit, take-profit, take-profit-limit, trailing-stop, etc.).
You can specify order parameters such as price, quantity, time-in-force, post-only, reduce-only, and trigger conditions. Orders can be labeled for easier management and tracking. Market Maker Protection (MMP) can be enabled to prevent excessive quoting.
Note: For spot orders routed to Coinbase Exchange, fills come back asynchronously. It is recommended to receive fills from the user.trades channel.
📖 Related Article: Order Management Best Practices
Scope: trade:read_write
Try in API console
instrument_namestring required
Unique instrument identifier
Example:BTC-PERPETUAL
It represents the requested order size. For perpetual and inverse futures the amount is in USD units. For options and linear futures it is the underlying base currency coin. The amount is a mandatory parameter if contracts parameter is missing. If both contracts and amount parameter are passed they must match each other otherwise error is returned.
It represents the requested order size in contract units and can be passed instead of amount. The contracts is a mandatory parameter if amount parameter is missing. If both contracts and amount parameter are passed they must match each other otherwise error is returned.
type'limit' | 'stop_limit' | 'take_limit' | 'market' | 'stop_market' | 'take_market' | 'market_limit' | 'trailing_stop'
<p>The order type, default: `"limit"`</p> <p>For spot trading routed to Coinbase Exchange, only `"market"`, `"limit"` and `"stop_limit"` orders are supported. Other order types will be rejected.</p>
user defined label for the order (maximum 64 characters)
<p>The order price in base currency (Only for limit and stop_limit orders)</p> <p>When adding an order with advanced=usd, the field price should be the option price value in USD.</p> <p>When adding an order with advanced=implv, the field price should be a value of implied volatility in percentages. For example, price=100, means implied volatility of 100%</p>
time_in_force'good_til_cancelled' | 'good_til_day' | 'fill_or_kill' | 'immediate_or_cancel'
<p>Specifies how long the order remains in effect. Default `"good_til_cancelled"`</p> <ul> <li>`"good_til_cancelled"` - unfilled order remains in order book until cancelled</li> <li>`"good_til_day"` - unfilled order remains in order book till the end of the trading session</li> <li>`"fill_or_kill"` - execute a transaction immediately and completely or not at all</li> <li>`"immediate_or_cancel"` - execute a transaction immediately, and any portion of the order that cannot be immediately filled is cancelled</li> </ul> <p>For spot trading, only `"good_til_cancelled"`, `"immediate_or_cancel"` and `"fill_or_kill"` are supported. `"good_til_day"` is not supported and will be rejected.</p>
Initial display amount for iceberg order. Has to be at least 100 times minimum amount for instrument and ratio of hidden part vs visible part has to be less than 100 as well.
<p>If true, the order is considered post-only. If the new price would cause the order to be filled immediately (as taker), the price will be changed to be just above the spread.</p> <p>Only valid in combination with time_in_force=`"good_til_cancelled"`</p> <p>For spot trading routed to Coinbase Exchange, the price is never adjusted: `"post_only"` must be combined with `"reject_post_only"` set to true, and the order is rejected if it would be matched instantly.</p>
<p>If an order is considered post-only and this field is set to true then the order is put to the order book unmodified or the request is rejected.</p> <p>Only valid in combination with `"post_only"` set to true</p> <p>For spot trading routed to Coinbase Exchange, this must be set to true whenever `"post_only"` is true; otherwise the request is rejected with `post_only_not_allowed`.</p>
If true, the order is considered reduce-only which is intended to only reduce a current position
Trigger price, required for trigger orders only (Stop-loss or Take-profit orders)
The maximum deviation from the price peak beyond which the order will be triggered
trigger'index_price' | 'mark_price' | 'last_price'
Trigger type (only for trigger orders). Allowed values: "index_price", "mark_price", "last_price".
<p>Defines the trigger type. Required for `"Stop-Loss"`, `"Take-Profit"` and `"Trailing"` trigger orders</p> <p>For stop-limit orders routed to Coinbase Exchange, only `"last_price"` is allowed.</p>
advanced'usd' | 'implv'
advanced type: "usd" or "implv" (Only for options; field is omitted if not applicable).
Advanced option order type. (Only for options. Advanced USD orders are not supported for linear options.)
Order MMP flag, only for order_type 'limit'
Timestamp, when provided server will start processing request in Matching Engine only before given timestamp, in other cases timed_out error will be responded. Remember that the given timestamp should be consistent with the server's time, use <a href='#public-get_time'>/public/time</a> method to obtain current server time.
linked_order_type'one_triggers_other' | 'one_cancels_other' | 'one_triggers_one_cancels_other'
<p>The type of the linked order.</p> <ul> <li>`"one_triggers_other"` - Execution of primary order triggers the placement of one or more secondary orders.</li> <li>`"one_cancels_other"` - The execution of one order in a pair automatically cancels the other, typically used to set a stop-loss and take-profit simultaneously.</li> <li>`"one_triggers_one_cancels_other"` - The execution of a primary order triggers two secondary orders (a stop-loss and take-profit pair), where the execution of one secondary order cancels the other.</li> </ul>
trigger_fill_condition'first_hit' | 'complete_fill' | 'incremental'
<p>The fill condition of the linked order (Only for linked order types), default: `first_hit`.</p> <ul> <li>`"first_hit"` - any execution of the primary order will fully cancel/place all secondary orders.</li> <li>`"complete_fill"` - a complete execution (meaning the primary order no longer exists) will cancel/place the secondary orders.</li> <li>`"incremental"` - any fill of the primary order will cause proportional partial cancellation/placement of the secondary order. The amount that will be subtracted/added to the secondary order will be rounded down to the contract size.</li> </ul>
List of secondary orders to place or cancel when the primary order is filled. Each entry in the array defines one secondary order. amount and direction are required; all other fields are optional.
Example response
{
"result": {
"order": {
"order_id": "ETH-100234",
"instrument_name": "BTC-PERPETUAL",
"creation_timestamp": 1536569522277,
"last_update_timestamp": 1536569522277,
"starbase_last_update_timestamp": 1536569522277000000,
"block_trade": true,
"trigger_order_id": "SLIB-370",
"combo_order_id": "103148386169",
"starbase_order_id": 103148386170,
"app_name": "Example Application",
"mmp_cancelled": true,
"oto_order_ids": [
"ETH-100234"
],
"primary_order_id": "ETH-100234"
},
"trades": [
{
"instrument_name": "BTC-PERPETUAL",
"timestamp": 1517329113791,
"starbase_timestamp": 1536569522277000000,
"starbase_order_id": 103148386170,
"block_trade_id": "154",
"block_trade_leg_count": 3
}
]
}
}