Skip to main content

Trading endpoints

New order (TRADE)​

POST /api/v3/order

Send in a new order.

This adds 1 order to the EXCHANGE_MAX_ORDERS filter and the MAX_NUM_ORDERS filter.

Weight: 1

Unfilled Order Count: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
sideENUMYESPlease see Enums for supported values.
typeENUMYESPlease see Enums for supported values.
timeInForceENUMNOPlease see Enums for supported values.
quantityDECIMALNO
quoteOrderQtyDECIMALNO
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent.
Orders with the same newClientOrderID can be accepted only when the previous one is filled, otherwise the order will be rejected.
strategyIdLONGNO
strategyTypeINTNOThe value cannot be less than 1000000.
stopPriceDECIMALNOUsed with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.
trailingDeltaLONGNOSee Trailing Stop order FAQ
icebergQtyDECIMALNOUsed with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.
newOrderRespTypeENUMNOMARKET and LIMIT order types default to FULL, all other orders default to ACK.
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol.
pegPriceTypeENUMNOSee Pegged Orders Info
pegOffsetValueINTNOMaximum: 100.
Price level to peg the price to (max: 100). See Pegged Orders Info
pegOffsetTypeENUMNOOnly PRICE_LEVEL is supported. See Pegged Orders Info
recvWindowDECIMALNOMaximum: 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Some additional mandatory parameters based on order type:

TypeAdditional mandatory parametersAdditional Information
LIMITtimeInForce, quantity, price
MARKETquantity or quoteOrderQtyMARKET orders using the quantity field specifies the amount of the base asset the user wants to buy or sell at the market price.
E.g. MARKET order on BTCUSDT will specify how much BTC the user is buying or selling.

MARKET orders using quoteOrderQty specifies the amount the user wants to spend (when buying) or receive (when selling) the quote asset; the correct quantity will be determined based on the market liquidity and quoteOrderQty.
E.g. Using the symbol BTCUSDT:
BUY side, the order will buy as many BTC as quoteOrderQty USDT can.
SELL side, the order will sell as much BTC needed to receive quoteOrderQty USDT.
STOP_LOSSquantity, stopPrice or trailingDeltaThis will execute a MARKET order when the conditions are met. (e.g. stopPrice is met or trailingDelta is activated)
STOP_LOSS_LIMITtimeInForce, quantity, price, stopPrice or trailingDelta
TAKE_PROFITquantity, stopPrice or trailingDeltaThis will execute a MARKET order when the conditions are met. (e.g. stopPrice is met or trailingDelta is activated)
TAKE_PROFIT_LIMITtimeInForce, quantity, price, stopPrice or trailingDelta
LIMIT_MAKERquantity, priceThis is a LIMIT order that will be rejected if the order immediately matches and trades as a taker.
This is also known as a POST-ONLY order.

Notes on using parameters for Pegged Orders:

  • These parameters are allowed for LIMIT, LIMIT_MAKER, STOP_LOSS_LIMIT, TAKE_PROFIT_LIMIT orders.
  • If pegPriceType is specified, price becomes optional. Otherwise, it is still mandatory.
  • pegPriceType=PRIMARY_PEG means the primary peg, that is the best price on the same side of the order book as your order.
  • pegPriceType=MARKET_PEG means the market peg, that is the best price on the opposite side of the order book from your order.
  • Use pegOffsetType and pegOffsetValue to request a price level other than the best one. These parameters must be specified together.

Other info:

  • Any LIMIT or LIMIT_MAKER type order can be made an iceberg order by sending an icebergQty.
  • Any order with an icebergQty MUST have timeInForce set to GTC.
  • For STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT_LIMIT and TAKE_PROFIT orders, trailingDelta can be combined with stopPrice.
  • MARKET orders using quoteOrderQty will not break LOT_SIZE filter rules; the order will execute a quantity that will have the notional value as close as possible to quoteOrderQty. Trigger order price rules against market price for both MARKET and LIMIT versions:
    • Price above market price: STOP_LOSS BUY, TAKE_PROFIT SELL
    • Price below market price: STOP_LOSS SELL, TAKE_PROFIT BUY

Response:

ACK response type:

{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // Unless it's part of an order list, value will be -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595
}

RESULT response type:

{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // Unless it's part of an order list, value will be -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "0.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": 1507725176595,
"selfTradePreventionMode": "NONE"
}

FULL response type:

{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // Unless it's part of an order list, value will be -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": 1507725176595,
"selfTradePreventionMode": "NONE",
"fills": [
{
"price": "4000.00000000",
"qty": "1.00000000",
"commission": "4.00000000",
"commissionAsset": "USDT",
"tradeId": 56
},
{
"price": "3999.00000000",
"qty": "5.00000000",
"commission": "19.99500000",
"commissionAsset": "USDT",
"tradeId": 57
},
{
"price": "3998.00000000",
"qty": "2.00000000",
"commission": "7.99600000",
"commissionAsset": "USDT",
"tradeId": 58
},
{
"price": "3997.00000000",
"qty": "1.00000000",
"commission": "3.99700000",
"commissionAsset": "USDT",
"tradeId": 59
},
{
"price": "3995.00000000",
"qty": "1.00000000",
"commission": "3.99500000",
"commissionAsset": "USDT",
"tradeId": 60
}
]
}

Test new order (TRADE)​

POST /api/v3/order/test

Test new order creation and signature/recvWindow long.

Creates and validates a new order but does not send it into the matching engine.

Weight:

ConditionWeight
Without computeCommissionRates1
With computeCommissionRates20

Parameters:

NameTypeMandatoryDescription
computeCommissionRatesBOOLEANNODefault: false
See Commissions FAQ to learn more.
symbolSTRINGYES
sideENUMYESPlease see Enums for supported values.
typeENUMYESPlease see Enums for supported values.
timeInForceENUMNOPlease see Enums for supported values.
quantityDECIMALNO
quoteOrderQtyDECIMALNO
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent. Orders with the same newClientOrderID can be accepted only when the previous one is filled, otherwise the order will be rejected.
strategyIdLONGNO
strategyTypeINTNOThe value cannot be less than 1000000.
stopPriceDECIMALNOUsed with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.
trailingDeltaLONGNOSee Trailing Stop order FAQ
icebergQtyDECIMALNOUsed with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.
newOrderRespTypeENUMNOSet the response JSON. ACK, RESULT, or FULL; MARKET and LIMIT order types default to FULL, all other orders default to ACK.
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
pegPriceTypeENUMNOPRIMARY_PEG or MARKET_PEG. See Pegged Orders
pegOffsetValueINTNOPrice level for pegging (max: 100). See Pegged Orders
pegOffsetTypeENUMNOOnly PRICE_LEVEL is supported. See Pegged Orders
recvWindowDECIMALNOThe value cannot be greater than 60000. Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Memory

Response:

Without computeCommissionRates

{}

With computeCommissionRates

{
// Standard commission rates on trades from the order.
"standardCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// Special commission rates on trades from the order.
"specialCommissionForOrder": {
"maker": "0.05000000",
"taker": "0.06000000"
},
// Tax commission rates for trades from the order.
"taxCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// Discount on standard commissions when paying in BNB.
"discount": {
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000"
}
}

Cancel order (TRADE)​

DELETE /api/v3/order

Cancel an active order.

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
newClientOrderIdSTRINGNOUsed to uniquely identify this cancel. Automatically generated by default.
cancelRestrictionsENUMNOSupported values:
ONLY_NEW - Cancel will succeed if the order status is NEW.
ONLY_PARTIALLY_FILLED - Cancel will succeed if order status is PARTIALLY_FILLED. For more information please refer to Regarding cancelRestrictions.
recvWindowDECIMALNOMaximum: 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

  • Either orderId or origClientOrderId must be sent.
  • If both orderId and origClientOrderId are provided, the orderId is searched first, then the origClientOrderId from that result is checked against that order. If both conditions are not met the request will be rejected.

Response:

{
"symbol": "LTCBTC",
"orderId": 4,
"orderListId": -1, // Unless it's part of an order list, value will be -1
"origClientOrderId": "myOrder1",
"clientOrderId": "cancelMyOrder1",
"transactTime": 1684804350068,
"price": "2.00000000",
"origQty": "1.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // Quantity for the iceberg order. Appears only if the parameter `icebergQty` was sent in the request.
"preventedMatchId": 0, // When used together with `symbol`, can be used to query a prevented match. Appears only if the order expired due to STP.
"preventedQuantity": "1.200000", // Order quantity that expired due to STP. Appears only if the order expired due to STP.
"stopPrice": "23500.00000000", // Price when the algorithmic order will be triggered. Appears for `STOP_LOSS`, `TAKE_PROFIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` orders.
"strategyId": 37463720, // Can be used to label an order that's part of an order strategy. Appears if the parameter was populated in the request.
"strategyType": 1000000, // Can be used to label an order that is using an order strategy. Appears if the parameter was populated in the request.
"trailingDelta": 10, // Delta price change required before order activation. Appears for trailing stop orders.
"trailingTime": -1, // Time when the trailing order becomes active and starts tracking price changes. Appears only for trailing stop orders.
"usedSor": true, // Indicates whether the order used SOR. Appears when placing orders using SOR.
"workingFloor": "SOR", // Indicates whether the order is being filled by SOR or by the order book to which it was submitted. Appears when placing orders using SOR.
"pegPriceType": "PRIMARY_PEG", // Price peg type. Only for pegged orders.
"pegOffsetType": "PRICE_LEVEL", // Price peg offset type. Only for pegged orders, if requested.
"pegOffsetValue": 5, // Price peg offset value. Only for pegged orders, if requested.
"peggedPrice": "87523.83710000", // Current price the order is pegged at. Only for pegged orders, once determined.
"expiryReason": "INSUFFICIENT_LIQUIDITY" // Cause of the order's expiration. Returned when an order has expired.
}

Notes:

  • The payload above does not show all fields that can appear in the order response. Please refer to Conditional fields in Order Responses.
  • The performance for canceling an order (single cancel or as part of a cancel-replace) is always better when only orderId is sent. Sending origClientOrderId or both orderId + origClientOrderId will be slower.

Regarding cancelRestrictions

  • If the cancelRestrictions value is not any of the supported values, the error will be:
{
"code": -1145,
"msg": "Invalid cancelRestrictions"
}
  • If the order did not pass the conditions for cancelRestrictions, the error will be:
{
"code": -2011,
"msg": "Order was not canceled due to cancel restrictions."
}

Cancel All Open Orders on a Symbol (TRADE)​

DELETE /api/v3/openOrders

Cancels all active orders on a symbol. This includes orders that are part of an order list.

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
recvWindowDECIMALNOMaximum: 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Response:

[
{
"symbol": "BTCUSDT",
"origClientOrderId": "E6APeyTJvkMvLMYMqu1KQ4",
"orderId": 11,
"orderListId": -1,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1684804350068,
"price": "0.089853",
"origQty": "0.178622",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "A3EF2HCwxgZPFMrfwbgrhv",
"orderId": 13,
"orderListId": -1,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1684804350069,
"price": "0.090430",
"origQty": "0.178622",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"selfTradePreventionMode": "NONE"
},
{
"orderListId": 1929,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "2inzWQdDvZLHbbAmAozX2N",
"transactionTime": 1585230948299,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 20,
"clientOrderId": "CwOOIPHSmYywx6jZX77TdL"
},
{
"symbol": "BTCUSDT",
"orderId": 21,
"clientOrderId": "461cPg51vQjV3zIMOXNz39"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "CwOOIPHSmYywx6jZX77TdL",
"orderId": 20,
"orderListId": 1929,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1688005070874,
"price": "0.668611",
"origQty": "0.690354",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "0.378131",
"icebergQty": "0.017083",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "461cPg51vQjV3zIMOXNz39",
"orderId": 21,
"orderListId": 1929,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1688005070874,
"price": "0.008791",
"origQty": "0.690354",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"icebergQty": "0.639962",
"selfTradePreventionMode": "NONE"
}
]
}
]

Cancel an Existing Order and Send a New Order (TRADE)​

POST /api/v3/order/cancelReplace
  • Cancels an existing order and places a new order on the same symbol.
  • Filters and Order Count are evaluated before the processing of the cancellation and order placement occurs.
  • A new order that was not attempted (i.e. when newOrderResult: NOT_ATTEMPTED), will still increase the unfilled order count by 1.
  • You can only cancel an individual order from an orderList using this endpoint, but the result is the same as canceling the entire orderList.

Weight: 1

Unfilled Order Count: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
sideENUMYES
typeENUMYES
cancelReplaceModeENUMYESThe allowed values are:
STOP_ON_FAILURE - If the cancel request fails, the new order placement will not be attempted.
ALLOW_FAILURE - new order placement will be attempted even if cancel request fails.
timeInForceENUMNO
quantityDECIMALNO
quoteOrderQtyDECIMALNO
priceDECIMALNO
cancelNewClientOrderIdSTRINGNOUsed to uniquely identify this cancel. Automatically generated by default.
cancelOrigClientOrderIdSTRINGNOEither cancelOrderId or cancelOrigClientOrderId must be sent.

If both cancelOrderId and cancelOrigClientOrderId parameters are provided, the cancelOrderId is searched first, then the cancelOrigClientOrderId from that result is checked against that order.

If both conditions are not met the request will be rejected.
cancelOrderIdLONGNOEither cancelOrderId or cancelOrigClientOrderId must be sent.

If both cancelOrderId and cancelOrigClientOrderId parameters are provided, the cancelOrderId is searched first, then the cancelOrigClientOrderId from that result is checked against that order.

If both conditions are not met the request will be rejected.
newClientOrderIdSTRINGNOUsed to identify the new order.
strategyIdLONGNO
strategyTypeINTNOThe value cannot be less than 1000000.
stopPriceDECIMALNO
trailingDeltaLONGNOSee Trailing Stop order FAQ
icebergQtyDECIMALNO
newOrderRespTypeENUMNOAllowed values:
ACK, RESULT, FULL
MARKET and LIMIT orders types default to FULL; all other orders default to ACK
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. The possible supported values are: STP Modes.
cancelRestrictionsENUMNOSupported values:
ONLY_NEW - Cancel will succeed if the order status is NEW.
ONLY_PARTIALLY_FILLED - Cancel will succeed if order status is PARTIALLY_FILLED. For more information please refer to Regarding cancelRestrictions.
orderRateLimitExceededModeENUMNOSupported values:
DO_NOTHING (default)- will only attempt to cancel the order if account has not exceeded the unfilled order rate limit
CANCEL_ONLY - will always cancel the order
pegPriceTypeENUMNOPRIMARY_PEG or MARKET_PEG
See Pegged Orders
pegOffsetValueINTNOPrice level to peg the price to (max: 100)
See Pegged Orders
pegOffsetTypeENUMNOOnly PRICE_LEVEL is supported
See Pegged Orders.
recvWindowDECIMALNOMaximum: 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Similar to POST /api/v3/order, additional mandatory parameters are determined by type. Response format varies depending on whether the processing of the message succeeded, partially succeeded, or failed.

Request Response
cancelReplaceMode orderRateLimitExceededMode Unfilled Order Count cancelResult newOrderResult status
STOP_ON_FAILURE DO_NOTHING Within Limits ✅ SUCCESS ✅ SUCCESS 200
❌ FAILURE ➖ NOT_ATTEMPTED 400
✅ SUCCESS ❌ FAILURE 409
Exceeds Limits ✅ SUCCESS ✅ SUCCESS N/A
❌ FAILURE ➖ NOT_ATTEMPTED N/A
✅ SUCCESS ❌ FAILURE N/A
CANCEL_ONLY Within Limits ✅ SUCCESS ✅ SUCCESS 200
❌ FAILURE ➖ NOT_ATTEMPTED 400
✅ SUCCESS ❌ FAILURE 409
Exceeds Limits ❌ FAILURE ➖ NOT_ATTEMPTED 429
✅ SUCCESS ❌ FAILURE 429
ALLOW_FAILURE DO_NOTHING Within Limits ✅ SUCCESS ✅ SUCCESS 200
❌ FAILURE ❌ FAILURE 400
❌ FAILURE ✅ SUCCESS 409
✅ SUCCESS ❌ FAILURE 409
Exceeds Limits ✅ SUCCESS ✅ SUCCESS N/A
❌ FAILURE ❌ FAILURE N/A
❌ FAILURE ✅ SUCCESS N/A
✅ SUCCESS ❌ FAILURE N/A
CANCEL_ONLY Within Limits ✅ SUCCESS ✅ SUCCESS 200
❌ FAILURE ❌ FAILURE 400
❌ FAILURE ✅ SUCCESS 409
✅ SUCCESS ❌ FAILURE 409
Exceeds Limits ✅ SUCCESS ✅ SUCCESS N/A
❌ FAILURE ❌ FAILURE 400
❌ FAILURE ✅ SUCCESS N/A
✅ SUCCESS ❌ FAILURE 409

Response:

Both the cancel and the new order placement succeeded, and the account has not exceeded its unfilled order count:

{
"cancelResult": "SUCCESS",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "DnLo3vTAQcjha43lAZhZ0y", // cancelOrigClientOrderId from request
"orderId": 9,
"orderListId": -1, // Unless it's part of an order list, value will be -1
"clientOrderId": "osxN3JXAtJvKvCqGeMWMVR", // cancelNewClientOrderId from request
"transactTime": 1684804350068,
"price": "0.01000000",
"origQty": "0.000100",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // Appears only if the parameter icebergQty was sent in the request.
"preventedMatchId": 0, // Appears only if the order expired due to STP.
"preventedQuantity": "1.200000", // Order quantity that expired due to STP.
"stopPrice": "0.00000000", // Appears for STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT orders.
"strategyId": 1, // Appears only if the strategyId parameter was provided upon order placement.
"strategyType": 1000000, // Appears only if the strategyType parameter was provided upon order placement.
"trailingDelta": 10, // Delta price change required before order activation.
"trailingTime": -1, // Time when the trailing order is now active and tracking price changes.
"usedSor": true, // Field that determines whether order used SOR.
"workingFloor": "SOR", // Determines whether the order is being filled by the SOR or by the order book.
"pegPriceType": "PRIMARY_PEG", // Price peg type. Only for pegged orders.
"pegOffsetType": "PRICE_LEVEL", // Price peg offset type. Only for pegged orders, if requested.
"pegOffsetValue": 5, // Price peg offset value. Only for pegged orders, if requested.
"peggedPrice": "87523.83710000", // Current price order is pegged at. Only for pegged orders, once determined.
"expiryReason": "INSUFFICIENT_LIQUIDITY" // Cause of the order's expiration. Appears when an order has expired.
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 10,
"orderListId": -1, // Unless it's part of an order list, value will be -1
"clientOrderId": "wOceeeOzNORyLiQfw7jd8S",
"transactTime": 1652928801803,
"price": "0.02000000",
"origQty": "0.040000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1669277163808,
"fills": [],
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // Appears only if the parameter icebergQty was sent in the request.
"preventedMatchId": 0, // Appears only if the order expired due to STP.
"preventedQuantity": "1.200000", // Order quantity that expired due to STP.
"stopPrice": "0.00000000", // Appears for STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT orders.
"strategyId": 1, // Appears only if the strategyId parameter was provided upon order placement.
"strategyType": 1000000, // Appears only if the strategyType parameter was provided upon order placement.
"trailingDelta": 10, // Delta price change required before order activation.
"trailingTime": -1, // Time when the trailing order is now active and tracking price changes.
"usedSor": true, // Field that determines whether order used SOR.
"workingFloor": "SOR", // Determines whether the order is being filled by the SOR or by the order book.
"pegPriceType": "PRIMARY_PEG", // Price peg type. Only for pegged orders.
"pegOffsetType": "PRICE_LEVEL", // Price peg offset type. Only for pegged orders, if requested.
"pegOffsetValue": 5, // Price peg offset value. Only for pegged orders, if requested.
"peggedPrice": "87523.83710000", // Current price order is pegged at. Only for pegged orders, once determined.
"expiryReason": "INSUFFICIENT_LIQUIDITY" // Cause of the order's expiration. Appears when an order has expired.
}
}

Cancel order fails with STOP_ON_FAILURE, and the account has not exceeded its unfilled order count:

{
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "NOT_ATTEMPTED",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": null
}
}

Both the cancel and the new order placement fail with cancelReplaceMode=ALLOW_FAILURE, and the account has not exceeded its unfilled order count:

{
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "FAILURE",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
}

Cancel order succeeds but the new order placement fails, and the account has not exceeded its unfilled order count:

{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "86M8erehfExV8z2RC8Zo8k", // cancelOrigClientOrderId from request
"orderId": 3,
"orderListId": -1,
"clientOrderId": "G1kLo6aDv2KGNTFcjfTSFq", // cancelNewClientOrderId from request
"transactTime": 1684804350068,
"price": "0.006123",
"origQty": "10000.000000",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
}

Cancel order fails with ALLOW_FAILURE, and the account has not exceeded its unfilled order count:

{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 11,
"orderListId": -1,
"clientOrderId": "pfojJMg6IMNDKuJqDxvoxN",
"transactTime": 1648540168818
}
}
}

Using orderRateLimitExceededMode=CANCEL_ONLY, and the account has exceeded its unfilled order count:

{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "LTCBNB",
"origClientOrderId": "GKt5zzfOxRDSQLveDYCTkc", // cancelOrigClientOrderId from request
"orderId": 64,
"orderListId": -1,
"clientOrderId": "loehOJF3FjoreUBDmv739R", // cancelNewClientOrderId from request
"transactTime": 1715779007228,
"price": "1.00",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -1015,
"msg": "Too many new orders; current limit is 1 orders per 10 SECOND."
}
}
}

Using orderRateLimitExceededMode=DO_NOTHING, and the account has exceeded its unfilled order count:

{
"code": -1015,
"msg": "Too many new orders; current limit is 1 orders per 10 SECOND."
}

Notes:

  • The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.
  • The performance for canceling an order (single cancel or as part of a cancel-replace) is always better when only orderId is sent. Sending origClientOrderId or both orderId + origClientOrderId will be slower.

Order Amend Keep Priority (TRADE)​

PUT /api/v3/order/amend/keepPriority

Reduce the quantity of an existing open order.

This adds 0 orders to the EXCHANGE_MAX_ORDERS filter and the MAX_NUM_ORDERS filter.

Read Order Amend Keep Priority FAQ to learn more.

Weight: 4

Unfilled Order Count: 0

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNOorderId or origClientOrderId must be sent
origClientOrderIdSTRINGNOorderId or origClientOrderId must be sent
newClientOrderIdSTRINGNOThe new client order ID for the order after being amended.
If not sent, one will be randomly generated.
It is possible to reuse the current clientOrderId by sending it as the newClientOrderId.
newQtyDECIMALYESnewQty must be greater than 0 and less than the order's quantity.
recvWindowDECIMALNOThe value cannot be greater than 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Response:

Response for a single order:

{
"transactTime": 1741926410255,
"executionId": 75,
"amendedOrder": {
"symbol": "BTCUSDT",
"orderId": 33,
"orderListId": -1,
"origClientOrderId": "5xrgbMyg6z36NzBn2pbT8H",
"clientOrderId": "PFaq6hIHxqFENGfdtn4J6Q",
"price": "6.00000000",
"qty": "5.00000000",
"executedQty": "0.00000000",
"preventedQty": "0.00000000",
"quoteOrderQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1741926410242,
"selfTradePreventionMode": "NONE"
}
}

Response for an order that is part of an Order list:

{
"transactTime": 1741926410255,
"executionId": 75,
"amendedOrder": {
"symbol": "BTCUSDT",
"orderId": 33,
"orderListId": -1,
"origClientOrderId": "5xrgbMyg6z36NzBn2pbT8H",
"clientOrderId": "PFaq6hIHxqFENGfdtn4J6Q",
"price": "6.00000000",
"qty": "5.00000000",
"executedQty": "0.00000000",
"preventedQty": "0.00000000",
"quoteOrderQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1741926410242,
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // Appears only if the parameter icebergQty was sent in the request.
"preventedMatchId": 0, // Appears only if the order expired due to STP.
"preventedQuantity": "1.200000", // Order quantity that expired due to STP.
"stopPrice": "0.00000000", // Appears for STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT orders.
"strategyId": 1, // Appears only if the strategyId parameter was provided upon order placement.
"strategyType": 1000000, // Appears only if the strategyType parameter was provided upon order placement.
"trailingDelta": 10, // Delta price change required before order activation.
"trailingTime": -1, // Time when the trailing order is now active and tracking price changes.
"usedSor": true, // Field that determines whether order used SOR.
"workingFloor": "SOR", // Determines whether the order is being filled by the SOR or by the order book.
"pegPriceType": "PRIMARY_PEG", // Price peg type. Only for pegged orders.
"pegOffsetType": "PRICE_LEVEL", // Price peg offset type. Only for pegged orders, if requested.
"pegOffsetValue": 5, // Price peg offset value. Only for pegged orders, if requested.
"peggedPrice": "87523.83710000", // Current price order is pegged at. Only for pegged orders, once determined.
"expiryReason": "INSUFFICIENT_LIQUIDITY" // Cause of the order's expiration. Appears when an order has expired.
},
"listStatus": {
"orderListId": 1,
"contingencyType": "OTO",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "AT7FTxZXylVSwRoZs52mt3",
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 8,
"clientOrderId": "GkwwHZUUbFtZOoH1YsZk9Q"
},
{
"symbol": "BTCUSDT",
"orderId": 9,
"clientOrderId": "UQ1Np3bmQ71jJzsSDW9Vpi"
}
]
}
}

Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.

New OCO - Deprecated (TRADE)​

POST /api/v3/order/oco

Send in a new OCO.

  • Price Restrictions:
    • SELL: Limit Price > Last Price > Stop Price
    • BUY: Limit Price < Last Price < Stop Price
  • Quantity Restrictions:
    • Both legs must have the same quantity.
    • ICEBERG quantities however do not have to be the same
  • OCO adds 2 orders to the EXCHANGE_MAX_ORDERS filter and the MAX_NUM_ORDERS filter.

Weight: 1

Unfilled Order Count: 2

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOA unique Id for the entire orderList
sideENUMYES
quantityDECIMALYES
limitClientOrderIdSTRINGNOA unique Id for the limit order
priceDECIMALYES
limitStrategyIdLONGNO
limitStrategyTypeINTNOThe value cannot be less than 1000000.
limitIcebergQtyDECIMALNOUsed to make the LIMIT_MAKER leg an iceberg order.
trailingDeltaLONGNO
stopClientOrderIdSTRINGNOA unique Id for the stop loss/stop loss limit leg
stopPriceDECIMALYES
stopStrategyIdLONGNO
stopStrategyTypeINTNOThe value cannot be less than 1000000.
stopLimitPriceDECIMALNOIf provided, stopLimitTimeInForce is required.
stopIcebergQtyDECIMALNOUsed with STOP_LOSS_LIMIT leg to make an iceberg order.
stopLimitTimeInForceENUMNOValid values are GTC/FOK/IOC
newOrderRespTypeENUMNOFormat of the JSON response. Supported values: Order Response Type
selfTradePreventionModeENUMNOThe allowed values are dependent on what is configured on the symbol. Supported values: STP Modes
recvWindowDECIMALNOThe value cannot be greater than 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Response:

{
"orderListId": 0,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "JYVpp3F0f5CAG15DhtrqLp",
"transactionTime": 1563417480525,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 2,
"clientOrderId": "Kk7sqHb9J6mJWTMDVW7Vos"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"clientOrderId": "xTXKaGYd4bluPVp78IVRvl"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 2,
"orderListId": 0,
"clientOrderId": "Kk7sqHb9J6mJWTMDVW7Vos",
"transactTime": 1563417480525,
"price": "0.000000",
"origQty": "0.624363",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS",
"side": "BUY",
"stopPrice": "0.960664",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"orderListId": 0,
"clientOrderId": "xTXKaGYd4bluPVp78IVRvl",
"transactTime": 1563417480525,
"price": "0.036435",
"origQty": "0.624363",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"workingTime": 1563417480525,
"selfTradePreventionMode": "NONE"
}
]
}

New Order list - OCO (TRADE)​

POST /api/v3/orderList/oco

Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.

  • An OCO has 2 orders called the above order and below order.
  • One of the orders must be a LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT order and the other must be STOP_LOSS or STOP_LOSS_LIMIT order.
  • Price restrictions
    • If the OCO is on the SELL side:
      • LIMIT_MAKER/TAKE_PROFIT_LIMIT price > Last Traded Price > STOP_LOSS/STOP_LOSS_LIMIT stopPrice
      • TAKE_PROFIT stopPrice > Last Traded Price > STOP_LOSS/STOP_LOSS_LIMIT stopPrice
    • If the OCO is on the BUY side:
      • LIMIT_MAKER/TAKE_PROFIT_LIMIT price < Last Traded Price < stopPrice
      • TAKE_PROFIT stopPrice < Last Traded Price < STOP_LOSS/STOP_LOSS_LIMIT stopPrice * OCOs add 2 orders to the EXCHANGE_MAX_ORDERS filter and the MAX_NUM_ORDERS filter.
  • OCOs add 2 orders to the EXCHANGE_MAX_ORDERS filter and the MAX_NUM_ORDERS filter.

Weight: 1

Unfilled Order Count: 2

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOArbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. listClientOrderId is distinct from the aboveClientOrderId and the belowClientOrderId.
sideENUMYES
quantityDECIMALYESQuantity for both orders of the order list.
aboveTypeENUMYES
aboveClientOrderIdSTRINGNOArbitrary unique ID among open orders for the above order. Automatically generated if not sent.
aboveIcebergQtyLONGNONote that this can only be used if aboveTimeInForce is GTC.
abovePriceDECIMALNOCan be used if aboveType is STOP_LOSS_LIMIT, LIMIT_MAKER, or TAKE_PROFIT_LIMIT to specify the limit price.
aboveStopPriceDECIMALNOCan be used if aboveType is STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT. Either aboveStopPrice or aboveTrailingDelta or both, must be specified.
aboveTrailingDeltaLONGNOSee Trailing Stop order FAQ
aboveTimeInForceENUMNORequired if aboveType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT.
aboveStrategyIdLONGNOArbitrary numeric value identifying the above order within an order strategy.
aboveStrategyTypeINTNOArbitrary numeric value identifying the above order strategy. Values smaller than 1000000 are reserved and cannot be used.
abovePegPriceTypeENUMNOPRIMARY_PEG or MARKET_PEG. See Pegged Orders
abovePegOffsetTypeENUMNO
abovePegOffsetValueINTNO
belowTypeENUMYESSupported values: STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT
belowClientOrderIdSTRINGNOArbitrary unique ID among open orders for the below order. Automatically generated if not sent.
belowIcebergQtyLONGNONote that this can only be used if belowTimeInForce is GTC.
belowPriceDECIMALNOCan be used if belowType is STOP_LOSS_LIMIT, LIMIT_MAKER, or TAKE_PROFIT_LIMIT to specify the limit price.
belowStopPriceDECIMALNOCan be used if belowType is STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT. Either belowStopPrice or belowTrailingDelta or both, must be specified.
belowTrailingDeltaLONGNOSee Trailing Stop order FAQ
belowTimeInForceENUMNORequired if belowType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT.
belowStrategyIdLONGNOArbitrary numeric value identifying the below order within an order strategy.
belowStrategyTypeINTNOArbitrary numeric value identifying the below order strategy. Values smaller than 1000000 are reserved and cannot be used.
belowPegPriceTypeENUMNOSee Pegged Orders
belowPegOffsetTypeENUMNO
belowPegOffsetValueINTNO
newOrderRespTypeENUMNOSelect response format: ACK, RESULT, FULL.
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
recvWindowDECIMALNOThe value cannot be greater than 60000. Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Response:

{
"orderListId": 1,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "lH1YDkuQKWiXVXHPSKYEIp",
"transactionTime": 1710485608839,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 10,
"clientOrderId": "44nZvqpemY7sVYgPYbvPih"
},
{
"symbol": "LTCBTC",
"orderId": 11,
"clientOrderId": "NuMp0nVYnciDiFmVqfpBqK"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 10,
"orderListId": 1,
"clientOrderId": "44nZvqpemY7sVYgPYbvPih",
"transactTime": 1710485608839,
"price": "1.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "1.00000000",
"workingTime": -1,
"icebergQty": "1.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 11,
"orderListId": 1,
"clientOrderId": "NuMp0nVYnciDiFmVqfpBqK",
"transactTime": 1710485608839,
"price": "3.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"workingTime": 1710485608839,
"selfTradePreventionMode": "NONE"
}
]
}

New Order list - OTO (TRADE)​

POST /api/v3/orderList/oto

Place an OTO.

  • An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.
  • The first order is called the working order and must be LIMIT or LIMIT_MAKER. Initially, only the working order goes on the order book.
  • The second order is called the pending order. It can be any order type except for MARKET orders using parameter quoteOrderQty. The pending order is only placed on the order book when the working order gets fully filled.
  • If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.
  • When the order list is placed, if the working order gets immediately fully filled, the placement response will show the working order as FILLED but the pending order will still appear as PENDING_NEW. You need to query the status of the pending order again to see its updated status.
  • OTOs add 2 orders to the EXCHANGE_MAX_NUM_ORDERS filter and MAX_NUM_ORDERS filter.

Weight: 1

Unfilled Order Count: 2

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOArbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. listClientOrderId is distinct from the workingClientOrderId and the pendingClientOrderId.
newOrderRespTypeENUMNOFormat of the JSON response. Supported values: Order Response Type
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
workingTypeENUMYESSupported values: LIMIT, LIMIT_MAKER
workingSideENUMYESSupported values: Order Side
workingClientOrderIdSTRINGNOArbitrary unique ID among open orders for the working order. Automatically generated if not sent.
workingPriceDECIMALYES
workingQuantityDECIMALYESSets the quantity for the working order.
workingIcebergQtyDECIMALNOThis can only be used if workingTimeInForce is GTC, or if workingType is LIMIT_MAKER.
workingTimeInForceENUMNOSupported values: Time In Force
workingStrategyIdLONGNOArbitrary numeric value identifying the working order within an order strategy.
workingStrategyTypeINTNOArbitrary numeric value identifying the working order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingTypeENUMYESSupported values: Order Types. Note that MARKET orders using quoteOrderQty are not supported.
workingPegPriceTypeENUMNOSee Pegged Orders
workingPegOffsetTypeENUMNO
workingPegOffsetValueINTNO
pendingSideENUMYESSupported values: Order Side
pendingClientOrderIdSTRINGNOArbitrary unique ID among open orders for the pending order. Automatically generated if not sent.
pendingPriceDECIMALNO
pendingStopPriceDECIMALNO
pendingTrailingDeltaDECIMALNO
pendingQuantityDECIMALYESSets the quantity for the pending order.
pendingIcebergQtyDECIMALNOThis can only be used if pendingTimeInForce is GTC or if pendingType is LIMIT_MAKER.
pendingTimeInForceENUMNOSupported values: Time In Force
pendingStrategyIdLONGNOArbitrary numeric value identifying the pending order within an order strategy.
pendingStrategyTypeINTNOArbitrary numeric value identifying the pending order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingPegPriceTypeENUMNOSee Pegged Orders
pendingPegOffsetTypeENUMNO
pendingPegOffsetValueINTNO
recvWindowDECIMALNOThe value cannot be greater than 60000. Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Mandatory parameters based on pendingType or workingType

Depending on the pendingType or workingType, some optional parameters will become mandatory.

TypeAdditional mandatory parametersAdditional information
workingType = LIMITworkingTimeInForce
pendingType = LIMITpendingPrice, pendingTimeInForce
pendingType = STOP_LOSS or TAKE_PROFITpendingStopPrice and/or pendingTrailingDelta
pendingType = STOP_LOSS_LIMIT or TAKE_PROFIT_LIMITpendingPrice, pendingStopPrice and/or pendingTrailingDelta, pendingTimeInForce

Response:

{
"orderListId": 0,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "yl2ERtcar1o25zcWtqVBTC",
"transactionTime": 1712289389158,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 4,
"clientOrderId": "Bq17mn9fP6vyCn75Jw1xya"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"clientOrderId": "arLFo0zGJVDE69cvGBaU0d"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 4,
"orderListId": 0,
"clientOrderId": "Bq17mn9fP6vyCn75Jw1xya",
"transactTime": 1712289389158,
"price": "1.00000000",
"origQty": "1.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1712289389158,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"orderListId": 0,
"clientOrderId": "arLFo0zGJVDE69cvGBaU0d",
"transactTime": 1712289389158,
"price": "0.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "MARKET",
"side": "BUY",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}

Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.

New Order list - OTOCO (TRADE)​

POST /api/v3/orderList/otoco

Place an OTOCO.

  • An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.
  • The first order is called the working order and must be LIMIT or LIMIT_MAKER. Initially, only the working order goes on the order book.
    • The behavior of the working order is the same as the OTO.
  • OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets fully filled.
    • The rules of the pending above and pending below follow the same rules as the Order list OCO.
  • OTOCOs add 3 orders to the EXCHANGE_MAX_NUM_ORDERS filter and MAX_NUM_ORDERS filter.

Weight: 1

Unfilled Order Count: 3

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOArbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. listClientOrderId is distinct from the workingClientOrderId, pendingAboveClientOrderId, and the pendingBelowClientOrderId.
newOrderRespTypeENUMNOFormat of the JSON response. Supported values: Order Response Type
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
workingTypeENUMYESSupported values: LIMIT, LIMIT_MAKER
workingSideENUMYESSupported values: Order Side
workingClientOrderIdSTRINGNOArbitrary unique ID among open orders for the working order. Automatically generated if not sent.
workingPriceDECIMALYES
workingQuantityDECIMALYESSets the quantity for the working order.
workingIcebergQtyDECIMALNOThis can only be used if workingTimeInForce is GTC, or if workingType is LIMIT_MAKER.
workingTimeInForceENUMNOSupported values: Time In Force
workingStrategyIdLONGNOArbitrary numeric value identifying the working order within an order strategy.
workingStrategyTypeINTNOArbitrary numeric value identifying the working order strategy. Values smaller than 1000000 are reserved and cannot be used.
workingPegPriceTypeENUMNOSee Pegged Orders
workingPegOffsetTypeENUMNO
workingPegOffsetValueINTNO
pendingSideENUMYESSupported values: Order Side
pendingQuantityDECIMALYESSets the quantity for the pending orders.
pendingAboveTypeENUMYESSupported values: STOP_LOSS_LIMIT, STOP_LOSS, LIMIT_MAKER, TAKE_PROFIT, TAKE_PROFIT_LIMIT
pendingAboveClientOrderIdSTRINGNOArbitrary unique ID among open orders for the pending above order. Automatically generated if not sent.
pendingAbovePriceDECIMALNOCan be used if pendingAboveType is STOP_LOSS_LIMIT, LIMIT_MAKER, or TAKE_PROFIT_LIMIT to specify the limit price.
pendingAboveStopPriceDECIMALNOCan be used if pendingAboveType is STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT.
pendingAboveTrailingDeltaDECIMALNOSee Trailing Stop order FAQ
pendingAboveIcebergQtyDECIMALNOThis can only be used if pendingAboveTimeInForce is GTC or if pendingAboveType is LIMIT_MAKER.
pendingAboveTimeInForceENUMNORequired if pendingAboveType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT.
pendingAboveStrategyIdLONGNOArbitrary numeric value identifying the pending above order within an order strategy.
pendingAboveStrategyTypeINTNOArbitrary numeric value identifying the pending above order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingAbovePegPriceTypeENUMNOSee Pegged Orders
pendingAbovePegOffsetTypeENUMNO
pendingAbovePegOffsetValueINTNO
pendingBelowTypeENUMNOSupported values: STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT
pendingBelowClientOrderIdSTRINGNOArbitrary unique ID among open orders for the pending below order. Automatically generated if not sent.
pendingBelowPriceDECIMALNOCan be used if pendingBelowType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT to specify the limit price.
pendingBelowStopPriceDECIMALNOCan be used if pendingBelowType is STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT. Either pendingBelowStopPrice or pendingBelowTrailingDelta or both, must be specified.
pendingBelowTrailingDeltaDECIMALNOSee Trailing Stop order FAQ
pendingBelowIcebergQtyDECIMALNOThis can only be used if pendingBelowTimeInForce is GTC, or if pendingBelowType is LIMIT_MAKER.
pendingBelowTimeInForceENUMNORequired if pendingBelowType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT.
pendingBelowStrategyIdLONGNOArbitrary numeric value identifying the pending below order within an order strategy.
pendingBelowStrategyTypeINTNOArbitrary numeric value identifying the pending below order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingBelowPegPriceTypeENUMNOSee Pegged Orders
pendingBelowPegOffsetTypeENUMNO
pendingBelowPegOffsetValueINTNO
recvWindowDECIMALNOThe value cannot be greater than 60000. Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Mandatory parameters based on pendingAboveType, pendingBelowType or workingType

Depending on the pendingAboveType/pendingBelowType or workingType, some optional parameters will become mandatory.

TypeAdditional mandatory parametersAdditional information
workingType = LIMITworkingTimeInForce
pendingAboveType= LIMIT_MAKERpendingAbovePrice
pendingAboveType = STOP_LOSS/TAKE_PROFITpendingAboveStopPrice and/or pendingAboveTrailingDelta
pendingAboveType=STOP_LOSS_LIMIT/TAKE_PROFIT_LIMITpendingAbovePrice, pendingAboveStopPrice and/or pendingAboveTrailingDelta, pendingAboveTimeInForce
pendingBelowType= LIMIT_MAKERpendingBelowPrice
pendingBelowType= STOP_LOSS/TAKE_PROFITpendingBelowStopPrice and/or pendingBelowTrailingDelta
pendingBelowType=STOP_LOSS_LIMIT/TAKE_PROFIT_LIMITpendingBelowPrice, pendingBelowStopPrice and/or pendingBelowTrailingDelta, pendingBelowTimeInForce

Response:

{
"orderListId": 1,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "RumwQpBaDctlUu5jyG5rs0",
"transactionTime": 1712291372842,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 6,
"clientOrderId": "fM9Y4m23IFJVCQmIrlUmMK"
},
{
"symbol": "LTCBTC",
"orderId": 7,
"clientOrderId": "6pcQbFIzTXGZQ1e2MkGDq4"
},
{
"symbol": "LTCBTC",
"orderId": 8,
"clientOrderId": "r4JMv9cwAYYUwwBZfbussx"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 6,
"orderListId": 1,
"clientOrderId": "fM9Y4m23IFJVCQmIrlUmMK",
"transactTime": 1712291372842,
"price": "1.00000000",
"origQty": "1.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1712291372842,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 7,
"orderListId": 1,
"clientOrderId": "6pcQbFIzTXGZQ1e2MkGDq4",
"transactTime": 1712291372842,
"price": "1.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "IOC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "6.00000000",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 8,
"orderListId": 1,
"clientOrderId": "r4JMv9cwAYYUwwBZfbussx",
"transactTime": 1712291372842,
"price": "3.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}

Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.

New Order List - OPO (TRADE)​

POST /api/v3/orderList/opo

Place an OPO.

  • OPOs add 2 orders to the EXCHANGE_MAX_NUM_ORDERS`` filter and MAX_NUM_ORDERS`` filter.

Weight: 1

Unfilled Order Count: 2

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOArbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. listClientOrderId is distinct from the workingClientOrderId and the pendingClientOrderId.
newOrderRespTypeENUMNOFormat of the JSON response. Supported values: Order Response Type
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
workingTypeENUMYESSupported values: LIMIT, LIMIT_MAKER
workingSideENUMYESSupported values: Order Side
workingClientOrderIdSTRINGNOArbitrary unique ID among open orders for the working order. Automatically generated if not sent.
workingPriceDECIMALYESPrice for the working order.
workingQuantityDECIMALYESSets the quantity for the working order.
workingIcebergQtyDECIMALNOThis can only be used if workingTimeInForce is GTC, or if workingType is LIMIT_MAKER.
workingTimeInForceENUMNOSupported values: Time In Force
workingStrategyIdLONGNOArbitrary numeric value identifying the working order within an order strategy.
workingStrategyTypeINTNOArbitrary numeric value identifying the working order strategy. Values smaller than 1000000 are reserved and cannot be used.
workingPegPriceTypeENUMNOSee Pegged Orders
workingPegOffsetTypeENUMNO
workingPegOffsetValueINTNO
pendingTypeENUMYESSupported values: Order Types. Note that MARKET orders using quoteOrderQty are not supported.
pendingSideENUMYESSupported values: Order Side
pendingClientOrderIdSTRINGNOArbitrary unique ID among open orders for the pending order. Automatically generated if not sent.
pendingPriceDECIMALNOPrice for the pending order.
pendingStopPriceDECIMALNOStop price for the pending order.
pendingTrailingDeltaDECIMALNOTrailing delta for the pending order.
pendingIcebergQtyDECIMALNOThis can only be used if pendingTimeInForce is GTC or if pendingType is LIMIT_MAKER.
pendingTimeInForceENUMNOSupported values: Time In Force
pendingStrategyIdLONGNOArbitrary numeric value identifying the pending order within an order strategy.
pendingStrategyTypeINTNOArbitrary numeric value identifying the pending order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingPegPriceTypeENUMNOSee Pegged Orders
pendingPegOffsetTypeENUMNO
pendingPegOffsetValueINTNO
recvWindowDECIMALNOMaximum: 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Response:

{
"orderListId": 0,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "H94qCqO27P74OEiO4X8HOG",
"transactionTime": 1762998011671,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 2,
"clientOrderId": "JX6xfdjo0wysiGumfHNmPu"
},
{
"symbol": "BTCUSDT",
"orderId": 3,
"clientOrderId": "2ZJCY0IjOhuYIMLGN8kU8S"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"orderId": 2,
"orderListId": 0,
"clientOrderId": "JX6xfdjo0wysiGumfHNmPu",
"transactTime": 1762998011671,
"price": "102264.00000000",
"origQty": "0.00060000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1762998011671,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 3,
"orderListId": 0,
"clientOrderId": "2ZJCY0IjOhuYIMLGN8kU8S",
"transactTime": 1762998011671,
"price": "0.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}

Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.

New Order List - OPOCO (TRADE)​

POST /api/v3/orderList/opoco

Place an OPOCO.

Weight: 1

Unfilled Order Count: 3

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOArbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. listClientOrderId is distinct from the workingClientOrderId, pendingAboveClientOrderId, and the pendingBelowClientOrderId.
newOrderRespTypeENUMNOFormat of the JSON response. Supported values: Order Response Type
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
workingTypeENUMYES
workingSideENUMYESSupported values: Order Side
workingClientOrderIdSTRINGNOArbitrary unique ID among open orders for the working order. Automatically generated if not sent.
workingPriceDECIMALYESPrice for the working order.
workingQuantityDECIMALYESSets the quantity for the working order.
workingIcebergQtyDECIMALNOThis can only be used if workingTimeInForce is GTC, or if workingType is LIMIT_MAKER.
workingTimeInForceENUMNOSupported values: Time In Force
workingStrategyIdLONGNOArbitrary numeric value identifying the working order within an order strategy.
workingStrategyTypeINTNOArbitrary numeric value identifying the working order strategy. Values smaller than 1000000 are reserved and cannot be used.
workingPegPriceTypeENUMNOSee Pegged Orders
workingPegOffsetTypeENUMNOSee Pegged Orders
workingPegOffsetValueINTNOPrice level for pegging (max: 100). See Pegged Orders
pendingSideENUMYESSupported values: Order Side
pendingAboveTypeENUMYESSupported values: STOP_LOSS_LIMIT, STOP_LOSS, LIMIT_MAKER, TAKE_PROFIT, TAKE_PROFIT_LIMIT
pendingAboveClientOrderIdSTRINGNOArbitrary unique ID among open orders for the pending above order. Automatically generated if not sent.
pendingAbovePriceDECIMALNOCan be used if pendingAboveType is STOP_LOSS_LIMIT, LIMIT_MAKER, or TAKE_PROFIT_LIMIT to specify the limit price.
pendingAboveStopPriceDECIMALNOCan be used if pendingAboveType is STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT.
pendingAboveTrailingDeltaDECIMALNOSee Trailing Stop order FAQ
pendingAboveIcebergQtyDECIMALNOThis can only be used if pendingAboveTimeInForce is GTC or pendingAboveType is LIMIT_MAKER.
pendingAboveTimeInForceENUMNORequired if pendingAboveType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT.
pendingAboveStrategyIdLONGNOArbitrary numeric value identifying the pending above order within an order strategy.
pendingAboveStrategyTypeINTNOArbitrary numeric value identifying the pending above order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingAbovePegPriceTypeENUMNOSee Pegged Orders
pendingAbovePegOffsetTypeENUMNOSee Pegged Orders
pendingAbovePegOffsetValueINTNOPrice level for pegging (max: 100). See Pegged Orders
pendingBelowTypeENUMNOSupported values: STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT
pendingBelowClientOrderIdSTRINGNOArbitrary unique ID among open orders for the pending below order. Automatically generated if not sent.
pendingBelowPriceDECIMALNOCan be used if pendingBelowType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT to specify the limit price.
pendingBelowStopPriceDECIMALNOCan be used if pendingBelowType is STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT. Either pendingBelowStopPrice or pendingBelowTrailingDelta or both, must be specified.
pendingBelowTrailingDeltaDECIMALNOSee Trailing Stop order FAQ
pendingBelowIcebergQtyDECIMALNOThis can only be used if pendingBelowTimeInForce is GTC or pendingBelowType is LIMIT_MAKER.
pendingBelowTimeInForceENUMNOSupported values: Time In Force
pendingBelowStrategyIdLONGNOArbitrary numeric value identifying the pending below order within an order strategy.
pendingBelowStrategyTypeINTNOArbitrary numeric value identifying the pending below order strategy. Values smaller than 1000000 are reserved and cannot be used.
pendingBelowPegPriceTypeENUMNOSee Pegged Orders
pendingBelowPegOffsetTypeENUMNO
pendingBelowPegOffsetValueINTNO
recvWindowDECIMALNOThe value cannot be greater than 60000. Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Response:

{
"orderListId": 2,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "bcedxMpQG6nFrZUPQyshoL",
"transactionTime": 1763000506354,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 9,
"clientOrderId": "OLSBhMWaIlLSzZ9Zm7fnKB"
},
{
"symbol": "BTCUSDT",
"orderId": 10,
"clientOrderId": "mfif39yPTHsB3C0FIXznR2"
},
{
"symbol": "BTCUSDT",
"orderId": 11,
"clientOrderId": "yINkaXSJeoi3bU5vWMY8Z8"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"orderId": 9,
"orderListId": 2,
"clientOrderId": "OLSBhMWaIlLSzZ9Zm7fnKB",
"transactTime": 1763000506354,
"price": "102496.00000000",
"origQty": "0.00170000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1763000506354,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 10,
"orderListId": 2,
"clientOrderId": "mfif39yPTHsB3C0FIXznR2",
"transactTime": 1763000506354,
"price": "101613.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "10100.00000000",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 11,
"orderListId": 2,
"clientOrderId": "yINkaXSJeoi3bU5vWMY8Z8",
"transactTime": 1763000506354,
"price": "104261.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}

Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.

Cancel Order list (TRADE)​

DELETE /api/v3/orderList

Cancel an entire Order list

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderListIdLONGNOEither orderListId or listClientOrderId must be provided
listClientOrderIdSTRINGNOEither orderListId or listClientOrderId must be provided
newClientOrderIdSTRINGNOUsed to uniquely identify this cancel. Automatically generated by default.
recvWindowDECIMALNOMaximum: 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Notes:

  • Canceling an individual order from an order list will cancel the entire order list.
  • If both orderListId and listClientOrderId parameters are provided, the orderListId is searched first, then the listClientOrderId from that result is checked against that order. If both conditions are not met the request will be rejected.

Response:

{
"orderListId": 0,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "C3wyj4WVEktd7u9aVBRXcN",
"transactionTime": 1574040868128,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 2,
"clientOrderId": "pO9ufTiFGg3nw2fOdgeOXa"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"clientOrderId": "TXOvglzXuaubXAaENpaRCB"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"origClientOrderId": "pO9ufTiFGg3nw2fOdgeOXa",
"orderId": 2,
"orderListId": 0,
"clientOrderId": "unfWT8ig8i0uj6lPuYLez6",
"transactTime": 1688005070874,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "1.00000000", // Appears for STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT orders.
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"origClientOrderId": "TXOvglzXuaubXAaENpaRCB",
"orderId": 3,
"orderListId": 0,
"clientOrderId": "unfWT8ig8i0uj6lPuYLez6",
"transactTime": 1688005070874,
"price": "3.00000000",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"selfTradePreventionMode": "NONE"
}
]
}

New order using SOR (TRADE)​

POST /api/v3/sor/order

Places an order using smart order routing (SOR).

This adds 1 order to the EXCHANGE_MAX_ORDERS filter and the MAX_NUM_ORDERS filter.

Read SOR FAQ to learn more.

Weight: 1

Unfilled Order Count: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
sideENUMYES
typeENUMYES
timeInForceENUMNO
quantityDECIMALYES
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent.
Orders with the same newClientOrderID can be accepted only when the previous one is filled, otherwise the order will be rejected.
strategyIdLONGNO
strategyTypeINTNOThe value cannot be less than 1000000.
icebergQtyDECIMALNOUsed with LIMIT to create an iceberg order.
newOrderRespTypeENUMNOSet the response JSON. ACK, RESULT, or FULL. Default to FULL
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. The possible supported values are: STP Modes.
recvWindowDECIMALNOThe value cannot be greater than 60000.
Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client time and is validated by the server for signed endpoints.

Data Source: Matching Engine

Note: POST /api/v3/sor/order only supports LIMIT and MARKET orders. quoteOrderQty is not supported.

Response:

{
"symbol": "BTCUSDT",
"orderId": 2,
"orderListId": -1,
"clientOrderId": "sBI1KM6nNtOfj5tccZSKly",
"transactTime": 1689149087774,
"price": "31000.00000000",
"origQty": "0.50000000",
"executedQty": "0.50000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "14000.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1689149087774,
"fills": [
{
"matchType": "ONE_PARTY_TRADE_REPORT",
"price": "28000.00000000",
"qty": "0.50000000",
"commission": "0.00000000",
"commissionAsset": "BTC",
"tradeId": -1,
"allocId": 0
}
],
"workingFloor": "SOR",
"selfTradePreventionMode": "NONE",
"usedSor": true
}

Test new order using SOR (TRADE)​

POST /api/v3/sor/order/test

Test new order creation and signature/recvWindow using smart order routing (SOR). Creates and validates a new order but does not send it into the matching engine.

Weight:

ConditionWeight
Without computeCommissionRates1
With computeCommissionRates20

Parameters:

NameTypeMandatoryDescription
computeCommissionRatesBOOLEANNODefault: false.
symbolSTRINGYES
sideENUMYESPlease see Enums for supported values.
typeENUMYESPlease see Enums for supported values.
timeInForceENUMNOPlease see Enums for supported values.
quantityDECIMALYES
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent. Orders with the same newClientOrderID can be accepted only when the previous one is filled, otherwise the order will be rejected.
strategyIdLONGNO
strategyTypeINTNOThe value cannot be less than 1000000.
icebergQtyDECIMALNOUsed with LIMIT to create an iceberg order.
newOrderRespTypeENUMNOSet the response JSON. ACK, RESULT, or FULL. Default to FULL.
selfTradePreventionModeENUMNOThe allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes
recvWindowDECIMALNOThe value cannot be greater than 60000. Supports up to three decimal places of precision (e.g., 6000.346) so that microseconds may be specified.
timestampLONGYESUnix timestamp used to sign the request, in milliseconds or microseconds. The value must reflect the current client
time and is validated by the server for signed endpoints.

Data Source: Memory

Response:

Without computeCommissionRates

{}

With computeCommissionRates

{
// Standard commission rates on trades from the order.
"standardCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// Tax commission rates for trades from the order.
"taxCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// Discount on standard commissions when paying in BNB.
"discount": {
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000"
}
}