Sell Order
Method: private/sell
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| instrumentName | string | true | Instrument name |
| quantity | string | false | It represents the requested order size. For perpetual and inverse futures the amount is in USD units. For options and linear futures and it is the underlying base currency coin |
| contracts | string | false | 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 | string | false | The order type, default: "limit". Allowed values: "limit", "stop_limit", "take_limit", "market", "stop_market", "take_market", "market_limit", "trailing_stop" |
| label | string | false | user defined label for the order (maximum 64 characters) |
| price | string | false | The order price in base currency (Only for limit and stop_limit orders). When adding an order with advanced=usd, the field price should be the option price value in USD. 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% |
| timeInforce | string | false | Specifies how long the order remains in effect. Default "good_til_cancelled". Allowed values: "good_til_cancelled" - unfilled order remains in order book until cancelled; "good_til_day" - unfilled order remains in order book till the end of the trading session; "fill_or_kill" - execute a transaction immediately and completely or not at all; "immediate_or_cancel" - execute a transaction immediately, and any portion of the order that cannot be immediately filled is cancelled |
| displayAmount | string | false | 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. |
| postOnly | boolean | false | 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 below the spread. Only valid in combination with time_in_force="good_til_cancelled" |
| rejectPostOnly | boolean | false | 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. Only valid in combination with "post_only" set to true |
| reduceOnly | boolean | false | If true, the order is considered reduce-only which is intended to only reduce a current position |
| triggerPrice | string | false | Trigger price, required for trigger orders only (Stop-loss or Take-profit orders) |
| triggerOffset | string | false | The maximum deviation from the price peak beyond which the order will be triggered |
| trigger | string | false | Defines the trigger type. Required for "Stop-Loss", "Take-Profit" and "Trailing" trigger orders |
| advanced | string | false | Advanced option order type. (Only for options. Advanced USD orders are not supported for linear options.) |
| mmp | boolean | false | Order MMP flag, only for order_type 'limit' |
| validUntil | integer | false | 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 /public/time method to obtain current server time |
| linkedOrderType | string | false | The type of the linked order. Allowed values: "one_triggers_other" - Execution of primary order triggers the placement of one or more secondary orders; "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; "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. |
| triggerFillCondition | string | false | The fill condition of the linked order (Only for linked order types), default: first_hit. Allowed values: "first_hit" - any execution of the primary order will fully cancel/place all secondary orders; "complete_fill" - a complete execution (meaning the primary order no longer exists) will cancel/place the secondary orders; "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 |
| otocoConfig | array of objects | false | List of trades to create or cancel when this order is filled |
otocoConfig Object
| Parameter | Type | Required | Description |
|---|---|---|---|
| quantity | string | false | It represents the requested trade size. For perpetual and inverse futures the amount is in USD units. For options and linear futures and it is the underlying base currency coin |
| side | string | true | Direction of trade from the maker perspective |
| type | string | false | The order type. Allowed values: "limit", "stop_limit", "take_limit", "market", "stop_market", "take_market", "market_limit", "trailing_stop" |
| label | string | false | user defined label for the order (maximum 64 characters) |
| price | string | false | The order price in base currency (Only for limit and stop_limit orders). When adding an order with advanced=usd, the field price should be the option price value in USD. 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% |
| reduceOnly | boolean | false | If true, the order is considered reduce-only which is intended to only reduce a current position |
| timeInforce | string | false | Specifies how long the order remains in effect. Default "good_til_cancelled". Allowed values: "good_til_cancelled", "good_til_day", "fill_or_kill", "immediate_or_cancel" |
| postOnly | boolean | false | 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 below the spread. Only valid in combination with time_in_force="good_til_cancelled" |
| rejectPostOnly | boolean | false | 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. Only valid in combination with "post_only" set to true |
| triggerPrice | string | false | Trigger price, required for trigger orders only (Stop-loss or Take-profit orders) |
| triggerOffset | string | false | The maximum deviation from the price peak beyond which the order will be triggered |
| trigger | string | false | Defines the trigger type. Required for "Stop-Loss", "Take-Profit" and "Trailing" trigger orders |
Request Example
{
"rid": 20002,
"method": "private/sell",
"params": {
"instrumentName": "BTC-PERPETUAL",
"quantity": "10",
"contracts": null,
"type": "limit",
"label": "test-limit-sell",
"price": "50000",
"timeInforce": "good_til_cancelled",
"displayAmount": null,
"postOnly": null,
"rejectPostOnly": null,
"reduceOnly": null,
"triggerPrice": null,
"triggerOffset": null,
"trigger": null,
"advanced": null,
"mmp": null,
"validUntil": null,
"linkedOrderType": null,
"triggerFillCondition": null,
"otocoConfig": null
}
}
Response
order Object
| Name | Type | Description |
|---|---|---|
| quote | boolean | if order is a quote. Present only if true. |
| triggered | boolean | Whether the trigger order has been triggered |
| mobile | boolean | optional field with value true added only when created with Mobile Application |
| implv | string | Implied volatility in percent. (Only if advanced="implv") |
| refreshAmount | string | The initial display amount of iceberg order. Iceberg order display amount will be refreshed to that value after match consuming actual display amount. Absent for other types of orders |
| usd | string | Option price in USD (Only if advanced="usd") |
| otoOrderIds | array of string | The Ids of the orders that will be triggered if the order is filled |
| api | boolean | true if created with API |
| averagePrice | string | Average fill price of the order |
| advanced | string | advanced type: "usd" or "implv" (Only for options; field is omitted if not applicable) |
| orderId | string | Unique order identifier |
| postOnly | boolean | true for post-only orders only |
| filledQuantity | string | Filled amount of the order. For perpetual and futures the filled_amount is in USD units, for options - in units or corresponding cryptocurrency contracts, e.g., BTC or ETH. |
| trigger | string | Trigger type (only for trigger orders). Allowed values: "index_price", "mark_price", "last_price". |
| triggerOrderId | string | Id of the trigger order that created the order (Only for orders that were created by triggered orders) |
| side | string | Direction: buy, or sell |
| contracts | string | It represents the order size in contract units. (Optional, may be absent in historical data) |
| isSecondaryOto | boolean | true if the order is an order that can be triggered by another order, otherwise not present. |
| replaced | boolean | true if the order was edited (by user or - in case of advanced options orders - by pricing engine), otherwise false. |
| mmpGroup | string | Name of the MMP group supplied in the private/mass_quote request. Only present for quote orders. |
| mmp | boolean | true if the order is a MMP order, otherwise false |
| lastUpdatedAt | long | The timestamp (milliseconds since the Unix epoch) |
| createdAt | long | The timestamp (milliseconds since the Unix epoch) |
| cancelReason | string | Enumerated reason behind cancel |
| mmpCancelled | boolean | true if order was cancelled by mmp trigger (optional) |
| quoteId | string | The same QuoteID as supplied in the private/mass_quote request. Only present for quote orders |
| orderState | string | Order state: "open", "filled", "rejected", "cancelled", "untriggered" |
| isRebalance | boolean | Optional (only for spot). true if order was automatically created during cross-collateral balance restoration |
| rejectPostOnly | boolean | 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. Only valid in combination with "post_only" set to true |
| label | string | User defined label |
| isLiquidation | boolean | Optional (not added for spot). true if order was automatically created during liquidation |
| price | string | Price in base currency or "market_price" in case of open trigger market orders |
| web | boolean | true if created via Deribit frontend (optional) |
| timeInforce | string | Order time in force: "good_til_cancelled", "good_til_day", "fill_or_kill" or "immediate_or_cancel" |
| triggerReferencePrice | string | The price of the given trigger at the time when the order was placed (Only for trailing trigger orders) |
| displayAmount | string | The actual display amount of iceberg order. Absent for other types of orders. |
| orderType | string | Order type: "limit", "market", "stop_limit", "stop_market" |
| isPrimaryOtoco | boolean | true if the order is an order that can trigger an OCO pair, otherwise not present. |
| originalOrderType | string | Original order type. Optional field |
| blockTrade | boolean | true if order made from block_trade trade, added only in that case. |
| triggerPrice | string | Trigger price (Only for future trigger orders) |
| ocoRef | string | Unique reference that identifies a one_cancels_others (OCO) pair. |
| triggerOffset | string | The maximum deviation from the price peak beyond which the order will be triggered (Only for trailing trigger orders) |
| quoteSetId | string | Identifier of the QuoteSet supplied in the private/mass_quote request. Only present for quote orders. |
| autoReplaced | boolean | Options, advanced orders only - true if last modification of the order was performed by the pricing engine, otherwise false |
| reduceOnly | boolean | Optional (not added for spot). 'true for reduce-only orders only' |
| quantity | string | It represents the requested order size. For perpetual and inverse futures the amount is in USD units. For options and linear futures and it is the underlying base currency coin. |
| riskReducing | boolean | true if the order is marked by the platform as a risk reducing order (can apply only to orders placed by PM users), otherwise false |
| instrumentName | string | Unique instrument identifier |
| triggerFillCondition | string | The fill condition of the linked order (Only for linked order types), default: first_hit. Allowed values: "first_hit" - any execution of the primary order will fully cancel/place all secondary orders; "complete_fill" - a complete execution (meaning the primary order no longer exists) will cancel/place the secondary orders; "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 |
| primaryOrderId | string | Unique order identifier |
trades Array
| Name | Type | Description |
|---|---|---|
| tradeId | string | Unique (per currency) trade identifier |
| tickDirection | integer | Direction of the "tick" (0 = Plus Tick, 1 = Zero-Plus Tick, 2 = Minus Tick, 3 = Zero-Minus Tick). |
| feeCurrency | string | Currency, i.e "BTC", "ETH", "USDC" |
| api | boolean | true if user order was created with API |
| advanced | string | Advanced type of user order: "usd" or "implv" (only for options; omitted if not applicable) |
| orderId | string | Id of the user order (maker or taker), i.e. subscriber's order id that took part in the trade |
| liquidity | string | Describes what was role of users order: "M" when it was maker order, "T" when it was taker order |
| postOnly | boolean | true if user order is post-only |
| side | string | Direction: buy, or sell |
| contracts | string | Trade size in contract units (optional, may be absent in historical trades) |
| mmp | boolean | true if user order is MMP |
| indexPrice | string | Index Price at the moment of trade |
| label | string | User defined label (presented only when previously set for order by user) |
| blockTradeId | string | Block trade id - when trade was part of a block trade |
| price | string | Price in base currency |
| comboId | string | Optional field containing combo instrument name if the trade is a combo trade |
| matchingId | string | Always null |
| orderType | string | Order type: "limit", "market", or "liquidation" |
| tradeAllocations | array of object | List of allocations for Block RFQ pre-allocation |
| profitLoss | string | Profit and loss in base currency. |
| timestamp | long | The timestamp of the trade (milliseconds since the UNIX epoch) |
| iv | string | Option implied volatility for the price (Option only) |
| state | string | Order state: "open", "filled", "rejected", "cancelled", "untriggered" or "archive" (if order was archived) |
| underlyingPrice | string | Underlying price for implied volatility calculations (Options only) |
| blockRfqQuoteId | string | ID of the Block RFQ quote - when trade was part of the Block RFQ |
| quoteSetId | string | QuoteSet of the user order (optional, present only for orders placed with private/mass_quote) |
| markPrice | string | Mark Price at the moment of trade |
| blockRfqId | string | ID of the Block RFQ - when trade was part of the Block RFQ |
| comboTradeId | string | Optional field containing combo trade identifier if the trade is a combo trade |
| reduceOnly | boolean | true if user order is reduce-only |
| quantity | string | Trade amount. For perpetual and inverse futures the amount is in USD units. For options and linear futures and it is the underlying base currency coin |
| liquidation | string | Optional field (only for trades caused by liquidation): "M" when maker side of trade was under liquidation, "T" when taker side was under liquidation, "MT" when both sides of trade were under liquidation |
| tradeSeq | integer | The sequence number of the trade within instrument |
| riskReducing | boolean | true if user order is marked by the platform as a risk reducing order (can apply only to orders placed by PM users) |
| instrumentName | string | Unique instrument identifier |
| legs | array | Optional field containing leg trades if trade is a combo trade (present when querying for only combo trades and in combo_trades events) |
Response Example
{
"rid": 20002,
"result": {
"order": {
"api": true,
"averagePrice": "0.0",
"orderId": "66538663841",
"postOnly": false,
"filledQuantity": "0.0",
"side": "sell",
"contracts": "1.0",
"replaced": false,
"mmp": false,
"lastUpdatedAt": 1760338245356,
"createdAt": 1760338245356,
"orderState": "Open",
"label": "test-limit-sell",
"isLiquidation": false,
"price": "50000",
"web": false,
"timeInForce": "good_til_cancelled",
"orderType": "limit",
"reduceOnly": false,
"quantity": "10.0",
"riskReducing": false,
"instrumentName": "BTC-PERPETUAL"
},
"trades": []
}
}