Trading requests
Place new order (TRADE)
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"price": "23416.10000000",
"quantity": "0.00847000",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "15af09e41c36f3cc61378c2fbe2c33719a03dd5eba8d0f9206fbda44de717c88",
"timestamp": 1660801715431
}
}
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:
Name | Type | Mandatory | Description |
---|---|---|---|
symbol | STRING | YES | |
side | ENUM | YES | BUY or SELL |
type | ENUM | YES | |
timeInForce | ENUM | NO * | |
price | DECIMAL | NO * | |
quantity | DECIMAL | NO * | |
quoteOrderQty | DECIMAL | NO * | |
newClientOrderId | STRING | NO | Arbitrary unique ID among open orders. Automatically generated if not sent |
newOrderRespType | ENUM | NO | Select response format:
|
stopPrice | DECIMAL | NO * | |
trailingDelta | INT | NO * | See Trailing Stop order FAQ |
icebergQty | DECIMAL | NO | |
strategyId | LONG | NO | Arbitrary numeric value identifying the order within an order strategy. |
strategyType | INT | NO | Arbitrary numeric value identifying the order strategy. Values smaller than |
selfTradePreventionMode | ENUM | NO | The allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes |
pegPriceType | ENUM | NO | PRIMARY_PEG or MARKET_PEG See Pegged Orders |
pegOffsetValue | INT | NO | Price level to peg the price to (max: 100) See Pegged Orders |
pegOffsetType | ENUM | NO | Only PRICE_LEVEL is supported See Pegged Orders |
apiKey | STRING | YES | |
recvWindow | LONG | NO | The value cannot be greater than 60000 |
signature | STRING | YES | |
timestamp | LONG | YES |
Certain parameters (*) become mandatory based on the order type
:
Order type |
Mandatory parameters |
---|---|
LIMIT |
|
LIMIT_MAKER |
|
MARKET |
|
STOP_LOSS |
|
STOP_LOSS_LIMIT |
|
TAKE_PROFIT |
|
TAKE_PROFIT_LIMIT |
|
Supported order types:
Order type |
Description |
---|---|
LIMIT |
Buy or sell |
LIMIT_MAKER |
This order type is also known as a POST-ONLY order. |
MARKET |
Buy or sell at the best available market price.
|
STOP_LOSS |
Execute a
I.e., when |
STOP_LOSS_LIMIT |
Place a |
TAKE_PROFIT |
Like |
TAKE_PROFIT_LIMIT |
Like |
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
andpegOffsetValue
to request a price level other than the best one. These parameters must be specified together.
Available timeInForce
options,
setting how long the order should be active before expiration:
TIF | Description |
---|---|
GTC | Good 'til Canceled – the order will remain on the book until you cancel it, or the order is completely filled. |
IOC | Immediate or Cancel – the order will be filled for as much as possible, the unfilled quantity immediately expires. |
FOK | Fill or Kill – the order will expire unless it cannot be immediately filled for the entire quantity. |
Notes:
-
newClientOrderId
specifiesclientOrderId
value for the order.A new order with the same
clientOrderId
is accepted only when the previous one is filled or expired. -
Any
LIMIT
orLIMIT_MAKER
order can be made into an iceberg order by specifying theicebergQty
.An order with an
icebergQty
must havetimeInForce
set toGTC
. -
Trigger order price rules for
STOP_LOSS
/TAKE_PROFIT
orders:stopPrice
must be above market price:STOP_LOSS BUY
,TAKE_PROFIT SELL
stopPrice
must be below market price:STOP_LOSS SELL
,TAKE_PROFIT BUY
-
MARKET
orders usingquoteOrderQty
followLOT_SIZE
filter rules.The order will execute a quantity that has notional value as close as possible to requested
quoteOrderQty
.
Data Source: Matching Engine
Response:
Response format is selected by using the newOrderRespType
parameter.
ACK
response type:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1, // always -1 for singular orders
"clientOrderId": "4d96324ff9d44481926157ec08158a40",
"transactTime": 1660801715639
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
RESULT
response type:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1, // always -1 for singular orders
"clientOrderId": "4d96324ff9d44481926157ec08158a40",
"transactTime": 1660801715639,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1660801715639,
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000
,
"count": 1
}
]
}
FULL
response type:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "4d96324ff9d44481926157ec08158a40",
"transactTime": 1660801715793,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00847000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "198.33521500",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1660801715793,
// FULL response is identical to RESULT response, with the same optional fields
// based on the order type and parameters. FULL response additionally includes
// the list of trades which immediately filled the order.
"fills": [
{
"price": "23416.10000000",
"qty": "0.00635000",
"commission": "0.000000",
"commissionAsset": "BNB",
"tradeId": 1650422481
},
{
"price": "23416.50000000",
"qty": "0.00212000",
"commission": "0.000000",
"commissionAsset": "BNB",
"tradeId": 1650422482
}
]
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Conditional fields in Order Responses
There are fields in the order responses (e.g. order placement, order query, order cancellation) that appear only if certain conditions are met.
These fields can apply to Order lists.
The fields are listed below:
Field | Description | Visibility conditions | Examples |
---|---|---|---|
icebergQty | Quantity for the iceberg order | Appears only if the parameter icebergQty was sent in the request. | "icebergQty": "0.00000000" |
preventedMatchId | When used in combination with symbol , can be used to query a prevented match. | Appears only if the order expired due to STP. | "preventedMatchId": 0 |
preventedQuantity | Order quantity that expired due to STP | Appears only if the order expired due to STP. | "preventedQuantity": "1.200000" |
stopPrice | Price when the algorithmic order will be triggered | Appears for STOP_LOSS . TAKE_PROFIT , STOP_LOSS_LIMIT and TAKE_PROFIT_LIMIT orders. | "stopPrice": "23500.00000000" |
strategyId | Can be used to label an order that's part of an order strategy. | Appears if the parameter was populated in the request. | "strategyId": 37463720 |
strategyType | Can be used to label an order that is using an order strategy. | Appears if the parameter was populated in the request. | "strategyType": 1000000 |
trailingDelta | Delta price change required before order activation | Appears for Trailing Stop Orders. | "trailingDelta": 10 |
trailingTime | Time when the trailing order is now active and tracking price changes | Appears only for Trailing Stop Orders. | "trailingTime": -1 |
usedSor | Field that determines whether order used SOR | Appears when placing orders using SOR | "usedSor": true |
workingFloor | Field that determines whether the order is being filled by the SOR or by the order book the order was submitted to. | Appears when placing orders using SOR | "workingFloor": "SOR" |
pegPriceType | Price peg type | Only for pegged orders | "pegPriceType": "PRIMARY_PEG" |
pegOffsetType | Price peg offset type | Only for pegged orders, if requested | "pegOffsetType": "PRICE_LEVEL" |
pegOffsetValue | Price peg offset value | Only for pegged orders, if requested | "pegOffsetValue": 5 |
peggedPrice | Current price order is pegged at | Only for pegged orders, once determined | "peggedPrice": "87523.83710000" |
Test new order (TRADE)
{
"id": "6ffebe91-01d9-43ac-be99-57cf062e0e30",
"method": "order.test",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"price": "23416.10000000",
"quantity": "0.00847000",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "15af09e41c36f3cc61378c2fbe2c33719a03dd5eba8d0f9206fbda44de717c88",
"timestamp": 1660801715431
}
}
Test order placement.
Validates new order parameters and verifies your signature but does not send the order into the matching engine.
Weight:
Condition | Request Weight |
---|---|
Without computeCommissionRates | 1 |
With computeCommissionRates | 20 |
Parameters:
In addition to all parameters accepted by order.place
,
the following optional parameters are also accepted:
Name | Type | Mandatory | Description |
---|---|---|---|
computeCommissionRates | BOOLEAN | NO | Default: false See Commissions FAQ to learn more. |
Data Source: Memory
Response:
Without computeCommissionRates
:
{
"id": "6ffebe91-01d9-43ac-be99-57cf062e0e30",
"status": 200,
"result": {},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
With computeCommissionRates
:
{
"id": "6ffebe91-01d9-43ac-be99-57cf062e0e30",
"status": 200,
"result": {
"standardCommissionForOrder": { //Standard commission rates on trades from the order.
"maker": "0.00000112",
"taker": "0.00000114"
},
"specialCommissionForOrder": { //Special commission rates on trades from the order.
"maker": "0.05000000",
"taker": "0.06000000"
},
"taxCommissionForOrder": { //Tax commission rates for trades from the order
"maker": "0.00000112",
"taker": "0.00000114"
},
"discount": { //Discount on standard commissions when paying in BNB.
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000" //Standard commission is reduced by this rate when paying in BNB.
}
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
Cancel order (TRADE)
{
"id": "5633b6a2-90a9-4192-83e7-925c90b6a2fd",
"method": "order.cancel",
"params": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "33d5b721f278ae17a52f004a82a6f68a70c68e7dd6776ed0be77a455ab855282",
"timestamp": 1660801715830
}
}
Cancel an active order.
Weight: 1
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
symbol |
STRING | YES | |
orderId |
LONG | YES | Cancel order by orderId |
origClientOrderId |
STRING | Cancel order by clientOrderId |
|
newClientOrderId |
STRING | NO | New ID for the canceled order. Automatically generated if not sent |
cancelRestrictions |
ENUM | NO | Supported values: ONLY_NEW - Cancel will succeed if the order status is NEW .ONLY_PARTIALLY_FILLED - Cancel will succeed if order status is PARTIALLY_FILLED . |
apiKey |
STRING | YES | |
recvWindow |
LONG | NO | The value cannot be greater than 60000 |
signature |
STRING | YES | |
timestamp |
LONG | YES |
Notes:
-
If both
orderId
andorigClientOrderId
parameters are provided, theorderId
is searched first, then theorigClientOrderId
from that result is checked against that order. If both conditions are not met the request will be rejected. -
newClientOrderId
will replaceclientOrderId
of the canceled order, freeing it up for new orders. -
If you cancel an order that is a part of an order list, the entire order list is canceled.
-
The performance for canceling an order (single cancel or as part of a cancel-replace) is always better when only
orderId
is sent. SendingorigClientOrderId
or bothorderId
+origClientOrderId
will be slower.
Data Source: Matching Engine
Response:
When an individual order is canceled:
{
"id": "5633b6a2-90a9-4192-83e7-925c90b6a2fd",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157", // clientOrderId that was canceled
"orderId": 12569099453,
"orderListId": -1, // set only for legs of an order list
"clientOrderId": "91fe37ce9e69c90d6358c0", // newClientOrderId from request
"transactTime": 1684804350068,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.23416100",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000", // present only if stopPrice set for the order
"trailingDelta": 0, // present only if trailingDelta set for the order
"icebergQty": "0.00000000", // present only if icebergQty set for the order
"strategyId": 37463720, // present only if strategyId set for the order
"strategyType": 1000000, // present only if strategyType set for the order
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
When an order list is canceled:
{
"id": "16eaf097-bbec-44b9-96ff-e97e6e875870",
"status": 200,
"result": {
"orderListId": 19431,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "iuVNVJYYrByz6C4yGOPPK0",
"transactionTime": 1660803702431,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569099453,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY"
},
{
"symbol": "BTCUSDT",
"orderId": 12569099454,
"clientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW"
}
],
//order list order's status format is the same as for individual orders.
"orderReports": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "bX5wROblo6YeDwa9iTLeyY",
"orderId": 12569099453,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23450.50000000",
"origQty": "0.00850000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "23430.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW",
"orderId": 12569099454,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23400.00000000",
"origQty": "0.00850000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.
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 and replace order (TRADE)
{
"id": "99de1036-b5e2-4e0f-9b5c-13d751c93a1a",
"method": "order.cancelReplace",
"params": {
"symbol": "BTCUSDT",
"cancelReplaceMode": "ALLOW_FAILURE",
"cancelOrigClientOrderId": "4d96324ff9d44481926157",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"price": "23416.10000000",
"quantity": "0.00847000",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "7028fdc187868754d25e42c37ccfa5ba2bab1d180ad55d4c3a7e2de643943dc5",
"timestamp": 1660813156900
}
}
Cancel an existing order and immediately place a new order instead of the canceled one.
A new order that was not attempted (i.e. when newOrderResult: NOT_ATTEMPTED
), will still increase the unfilled order count by 1.
Weight: 1
Unfilled Order Count: 1
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
symbol |
STRING | YES | |
cancelReplaceMode |
ENUM | YES | |
cancelOrderId |
LONG | YES | Cancel order by orderId |
cancelOrigClientOrderId |
STRING | Cancel order by clientOrderId |
|
cancelNewClientOrderId |
STRING | NO | New ID for the canceled order. Automatically generated if not sent |
side |
ENUM | YES | BUY or SELL |
type |
ENUM | YES | |
timeInForce |
ENUM | NO * | |
price |
DECIMAL | NO * | |
quantity |
DECIMAL | NO * | |
quoteOrderQty |
DECIMAL | NO * | |
newClientOrderId |
STRING | NO | Arbitrary unique ID among open orders. Automatically generated if not sent |
newOrderRespType |
ENUM | NO |
Select response format:
|
stopPrice |
DECIMAL | NO * | |
trailingDelta |
DECIMAL | NO * | See Trailing Stop order FAQ |
icebergQty |
DECIMAL | NO | |
strategyId |
LONG | NO | Arbitrary numeric value identifying the order within an order strategy. |
strategyType |
INT | NO |
Arbitrary numeric value identifying the order strategy. Values smaller than 1000000 are reserved and cannot be used. |
selfTradePreventionMode |
ENUM | NO |
The allowed enums is dependent on what is configured on the symbol. Supported values: STP Modes. |
cancelRestrictions |
ENUM | NO | Supported 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 . |
apiKey |
STRING | YES | |
orderRateLimitExceededMode |
ENUM | NO | Supported values: DO_NOTHING (default)- will only attempt to cancel the order if account has not exceeded the unfilled order rate limitCANCEL_ONLY - will always cancel the order. |
pegPriceType |
ENUM | NO | PRIMARY_PEG or MARKET_PEG . See Pegged Orders" |
pegOffsetValue |
INT | NO | Price level to peg the price to (max: 100) See Pegged Orders |
pegOffsetType |
ENUM | NO | Only PRICE_LEVEL is supportedSee Pegged Orders |
recvWindow |
LONG | NO | The value cannot be greater than 60000 |
signature |
STRING | YES | |
timestamp |
LONG | YES |
Similar to the order.place
request,
additional mandatory parameters (*) are determined by the new order type
.
Available cancelReplaceMode
options:
STOP_ON_FAILURE
– if cancellation request fails, new order placement will not be attempted.ALLOW_FAILURE
– new order placement will be attempted even if the cancel request fails.
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 |
200 |
||
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
409 |
Notes:
-
If both
cancelOrderId
andcancelOrigClientOrderId
parameters are provided, thecancelOrderId
is searched first, then thecancelOrigClientOrderId
from that result is checked against that order. If both conditions are not met the request will be rejected. -
cancelNewClientOrderId
will replaceclientOrderId
of the canceled order, freeing it up for new orders. -
newClientOrderId
specifiesclientOrderId
value for the placed order.A new order with the same
clientOrderId
is accepted only when the previous one is filled or expired.The new order can reuse old
clientOrderId
of the canceled order. -
This cancel-replace operation is not transactional.
If one operation succeeds but the other one fails, the successful operation is still executed.
For example, in
STOP_ON_FAILURE
mode, if the new order placement fails, the old order is still canceled. -
Filters and order count limits are evaluated before cancellation and order placement occurs.
-
If new order placement is not attempted, your order count is still incremented.
-
Like
order.cancel
, if you cancel an individual order from an order list, the entire order list is canceled. -
The performance for canceling an order (single cancel or as part of a cancel-replace) is always better when only
orderId
is sent. SendingorigClientOrderId
or bothorderId
+origClientOrderId
will be slower.
Data Source: Matching Engine
Response:
If both cancel and placement succeed, you get the following response with "status": 200
:
{
"id": "99de1036-b5e2-4e0f-9b5c-13d751c93a1a",
"status": 200,
"result": {
"cancelResult": "SUCCESS",
"newOrderResult": "SUCCESS",
// Format is identical to "order.cancel" format.
// Some fields are optional and are included only for orders that set them.
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157", // cancelOrigClientOrderId from request
"orderId": 125690984230,
"orderListId": -1,
"clientOrderId": "91fe37ce9e69c90d6358c0", // cancelNewClientOrderId from request
"transactTime": 1684804350068,
"price": "23450.00000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.23450000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
// Format is identical to "order.place" format, affected by "newOrderRespType".
// Some fields are optional and are included only for orders that set them.
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY", // newClientOrderId from request
"transactTime": 1660813156959,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
In STOP_ON_FAILURE
mode, failed order cancellation prevents new order from being placed
and returns the following response with "status": 400
:
{
"id": "27e1bf9f-0539-4fb0-85c6-06183d36f66c",
"status": 400,
"error": {
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "NOT_ATTEMPTED",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": null
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
If cancel-replace mode allows failure and one of the operations fails,
you get a response with "status": 409
,
and the "data"
field detailing which operation succeeded, which failed, and why:
{
"id": "b220edfe-f3c4-4a3a-9d13-b35473783a25",
"status": 409,
"error": {
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157",
"orderId": 125690984230,
"orderListId": -1,
"clientOrderId": "91fe37ce9e69c90d6358c0",
"transactTime": 1684804350068,
"price": "23450.00000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.23450000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
{
"id": "ce641763-ff74-41ac-b9f7-db7cbe5e93b1",
"status": 409,
"error": {
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY",
"transactTime": 1660813156959,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1669693344508,
"fills": [],
"selfTradePreventionMode": "NONE"
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
If both operations fail, response will have "status": 400
:
{
"id": "3b3ac45c-1002-4c7d-88e8-630c408ecd87",
"status": 400,
"error": {
"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."
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
If orderRateLimitExceededMode
is DO_NOTHING
regardless of cancelReplaceMode
, and you have exceeded your unfilled order count, you will get status 429
with the following error:
{
"id": "3b3ac45c-1002-4c7d-88e8-630c408ecd87",
"status": 429,
"error": {
"code": -1015,
"msg": "Too many new orders; current limit is 50 orders per 10 SECOND."
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 50
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 50
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
If orderRateLimitExceededMode
is CANCEL_ONLY
regardless of cancelReplaceMode
, and you have exceeded your unfilled order count, you will get status 409
with the following error:
{
"id": "3b3ac45c-1002-4c7d-88e8-630c408ecd87",
"status": 409,
"error": {
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "LTCBNB",
"origClientOrderId": "GKt5zzfOxRDSQLveDYCTkc",
"orderId": 64,
"orderListId": -1,
"clientOrderId": "loehOJF3FjoreUBDmv739R",
"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 50 orders per 10 SECOND."
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 50
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 50
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.
Order Amend Keep Priority (TRADE)
{
"id": "56374a46-3061-486b-a311-89ee972eb648",
"method": "order.amend.keepPriority",
"params": {
"newQty": "5",
"origClientOrderId": "my_test_order1",
"recvWindow": 5000,
"symbol": "BTCUSDT",
"timestamp": 1741922620419,
"apiKey": "Rl1KOMDCpSg6xviMYOkNk9ENUB5QOTnufXukVe0Ijd40yduAlpHn78at3rJyJN4F",
"signature": "fa49c0c4ebc331c6ebd3fcb20deb387f60081ea858eebe6e35aa6fcdf2a82e08"
}
}
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:
Name | Type | Mandatory | Description |
---|---|---|---|
symbol | STRING | YES | |
orderId | LONG | NO* | orderId or origClientOrderId must be sent |
origClientOrderId | STRING | NO* | orderId or origClientOrderId must be sent |
newClientOrderId | STRING | NO* | The 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 . |
newQty | DECIMAL | YES | newQty must be greater than 0 and less than the order's quantity. |
recvWindow | LONG | NO | The value cannot be greater than 60000 . |
timestamp | LONG | YES |
Data Source: Matching Engine
Response:
Response for a single order:
{
"id": "56374a46-3061-486b-a311-89ee972eb648",
"status": 200,
"result":
{
"transactTime": 1741923284382,
"executionId": 16,
"amendedOrder":
{
"symbol": "BTCUSDT",
"orderId": 12,
"orderListId": -1,
"origClientOrderId": "my_test_order1",
"clientOrderId": "4zR9HFcEq8gM1tWUqPEUHc",
"price": "5.00000000",
"qty": "5.00000000",
"executedQty": "0.00000000",
"preventedQty": "0.00000000",
"quoteOrderQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1741923284364,
"selfTradePreventionMode": "NONE"
}
},
"rateLimits":
[
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Response for an order which is part of an Order list:
{
"id": "56374b46-3061-486b-a311-89ee972eb648",
"status": 200,
"result":
{
"transactTime": 1741924229819,
"executionId": 60,
"amendedOrder":
{
"symbol": "BTUCSDT",
"orderId": 23,
"orderListId": 4,
"origClientOrderId": "my_pending_order",
"clientOrderId": "xbxXh5SSwaHS7oUEOCI88B",
"price": "1.00000000",
"qty": "5.00000000",
"executedQty": "0.00000000",
"preventedQty": "0.00000000",
"quoteOrderQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1741924204920,
"selfTradePreventionMode": "NONE"
},
"listStatus":
{
"orderListId": 4,
"contingencyType": "OTO",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "8nOGLLawudj1QoOiwbroRH",
"symbol": "BTCUSDT",
"orders":
[
{
"symbol": "BTCUSDT",
"orderId": 22,
"clientOrderId": "g04EWsjaackzedjC9wRkWD"
},
{
"symbol": "BTCUSDT",
"orderId": 23,
"clientOrderId": "xbxXh5SSwaHS7oUEOCI88B"
}
]
}
},
"rateLimits":
[
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Note: The payloads above do not show all fields that can appear. Please refer to Conditional fields in Order Responses.
Cancel open orders (TRADE)
{
"id": "778f938f-9041-4b88-9914-efbf64eeacc8",
"method": "openOrders.cancelAll",
"params": {
"symbol": "BTCUSDT",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "773f01b6e3c2c9e0c1d217bc043ce383c1ddd6f0e25f8d6070f2b66a6ceaf3a5",
"timestamp": 1660805557200
}
}
Cancel all open orders on a symbol. This includes orders that are part of an order list.
Weight: 1
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
symbol | STRING | YES | |
apiKey | STRING | YES | |
recvWindow | LONG | NO | The value cannot be greater than 60000 |
signature | STRING | YES | |
timestamp | LONG | YES |
Data Source: Matching Engine
Response:
Cancellation reports for orders and order lists have the same format as in order.cancel
.
{
"id": "778f938f-9041-4b88-9914-efbf64eeacc8",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "91fe37ce9e69c90d6358c0",
"transactTime": 1684804350068,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.23416100",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000",
"trailingDelta": 0,
"trailingTime": -1,
"icebergQty": "0.00000000",
"strategyId": 37463720,
"strategyType": 1000000,
"selfTradePreventionMode": "NONE"
},
{
"orderListId": 19431,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "iuVNVJYYrByz6C4yGOPPK0",
"transactionTime": 1660803702431,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569099453,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY"
},
{
"symbol": "BTCUSDT",
"orderId": 12569099454,
"clientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "bX5wROblo6YeDwa9iTLeyY",
"orderId": 12569099453,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23450.50000000",
"origQty": "0.00850000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "23430.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW",
"orderId": 12569099454,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23400.00000000",
"origQty": "0.00850000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"selfTradePreventionMode": "NONE"
}
]
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Note: The payload above does not show all fields that can appear. Please refer to Conditional fields in Order Responses.
Order lists
Place new Order list - OCO (TRADE)
{
"id": "56374a46-3261-486b-a211-99ed972eb648",
"method": "orderList.place.oco",
"params":
{
"symbol": "LTCBNB",
"side": "BUY",
"quantity": 1,
"timestamp": 1711062760647,
"aboveType": "STOP_LOSS_LIMIT",
"abovePrice": "1.5",
"aboveStopPrice": "1.50000001",
"aboveTimeInForce": "GTC",
"belowType": "LIMIT_MAKER",
"belowPrice": "1.49999999",
"apiKey": "duwNf97YPLqhFIk7kZF0dDdGYVAXStA7BeEz0fIT9RAhUbixJtyS6kJ3hhzJsRXC",
"signature": "64614cfd8dd38260d4fd86d3c455dbf4b9d1c8a8170ea54f700592a986c30ddb"
}
}
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 beSTOP_LOSS
orSTOP_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
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
- OCOs add 2 orders to the
EXCHANGE_MAX_ORDERS
filter andMAX_NUM_ORDERS
filter.
Weight: 1
Unfilled Order Count: 2
Parameters:
Name | Type | Mandatory | Description |
---|---|---|---|
symbol | STRING | YES | |
listClientOrderId | STRING | NO | Arbitrary 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 . |
side | ENUM | YES | BUY or SELL |
quantity | DECIMAL | YES | Quantity for both orders of the order list. |
aboveType | ENUM | YES | Supported values: STOP_LOSS_LIMIT , STOP_LOSS , LIMIT_MAKER , TAKE_PROFIT , TAKE_PROFIT_LIMIT |
aboveClientOrderId | STRING | NO | Arbitrary unique ID among open orders for the above order. Automatically generated if not sent |
aboveIcebergQty | LONG | NO | Note that this can only be used if aboveTimeInForce is GTC . |
abovePrice | DECIMAL | NO | Can be used if aboveType is STOP_LOSS_LIMIT , LIMIT_MAKER , or TAKE_PROFIT_LIMIT to specify the limit price. |
aboveStopPrice | DECIMAL | NO | Can be used if aboveType is STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT , TAKE_PROFIT_LIMIT . Either aboveStopPrice or aboveTrailingDelta or both, must be specified. |
aboveTrailingDelta | LONG | NO | See Trailing Stop order FAQ. |
aboveTimeInForce | DECIMAL | NO | Required if aboveType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT . |
aboveStrategyId | LONG | NO | Arbitrary numeric value identifying the above order within an order strategy. |
aboveStrategyType | INT | NO | Arbitrary numeric value identifying the above order strategy. Values smaller than 1000000 are reserved and cannot be used. |
abovePegPriceType | ENUM | NO | See Pegged Orders |
abovePegOffsetType | ENUM | NO | |
abovePegOffsetValue | INT | NO | |
belowType | ENUM | YES | Supported values: STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT ,TAKE_PROFIT_LIMIT |
belowClientOrderId | STRING | NO | |
belowIcebergQty | LONG | NO | Note that this can only be used if belowTimeInForce is GTC . |
belowPrice | DECIMAL | NO | Can be used if belowType is STOP_LOSS_LIMIT , LIMIT_MAKER , or TAKE_PROFIT_LIMIT to specify the limit price. |
belowStopPrice | DECIMAL | NO | Can be used if belowType is STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT or TAKE_PROFIT_LIMIT . Either belowStopPrice or belowTrailingDelta or both, must be specified. |
belowTrailingDelta | LONG | NO | See Trailing Stop order FAQ. |
belowTimeInForce | ENUM | NO | Required if belowType is STOP_LOSS_LIMIT or TAKE_PROFIT_LIMIT |
belowStrategyId | LONG | NO | Arbitrary numeric value identifying the below order within an order strategy. |
belowStrategyType | INT | NO | Arbitrary numeric value identifying the below order strategy. Values smaller than 1000000 are reserved and cannot be used. |
belowPegPriceType | ENUM | NO | See Pegged Orders |
belowPegOffsetType | ENUM | NO | |
belowPegOffsetValue | INT | NO | |
newOrderRespType | ENUM | NO | Select response format: ACK , RESULT , FULL |
selfTradePreventionMode | ENUM | NO | The allowed enums is dependent on what is configured on the symbol. The possible supported values are: STP Modes. |
apiKey | STRING | YES | |
recvWindow | LONG | NO | The value cannot be greater than 60000 . |
timestamp | LONG | YES | |
signature | STRING | YES |
Data Source: Matching Engine
Response:
Response format for orderReports
is selected using the newOrderRespType
parameter.
The following example is for RESULT
response type.
See order.place
for more examples.
{
"id": "56374a46-3261-486b-a211-99ed972eb648",
"status": 200,
"result":
{
"orderListId": 2,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "cKPMnDCbcLQILtDYM4f4fX",
"transactionTime": 1711062760648,
"symbol": "LTCBNB",
"orders":
[
{
"symbol": "LTCBNB",
"orderId": 2,
"clientOrderId": "0m6I4wfxvTUrOBSMUl0OPU"
},
{
"symbol": "LTCBNB",
"orderId": 3,
"clientOrderId": "Z2IMlR79XNY5LU0tOxrWyW"
}
],
"orderReports":
[
{
"symbol": "LTCBNB",
"orderId": 2,
"orderListId": 2,
"clientOrderId": "0m6I4wfxvTUrOBSMUl0OPU",
"transactTime": 1711062760648,
"price": "1.50000000",
"origQty": "1.000000",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "1.50000001",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBNB",
"orderId": 3,
"orderListId": 2,
"clientOrderId": "Z2IMlR79XNY5LU0tOxrWyW",
"transactTime": 1711062760648,
"price": "1.49999999",
"origQty": "1.000000",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"workingTime": 1711062760648,
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits":
[
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 2
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 2
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
Place new Order list - OTO (TRADE)
{
"id": "1712544395950",
"method": "orderList.place.oto",
"params": {
"signature": "3e1e5ac8690b0caf9a2afd5c5de881ceba69939cc9d817daead5386bf65d0cbb",
"apiKey": "Rf07JlnL9PHVxjs27O5CvKNyOsV4qJ5gXdrRfpvlOdvMZbGZbPO5Ce2nIwfRP0iA",
"pendingQuantity": 1,
"pendingSide": "BUY",
"pendingType": "MARKET",
"symbol": "LTCBNB",
"recvWindow": "5000",
"timestamp": "1712544395951",
"workingPrice": 1,
"workingQuantity": 1,
"workingSide": "SELL",
"workingTimeInForce": "GTC",
"workingType": "LIMIT"
}
}