API changelog
2022-02-14
- Add commission and commissionAsset to order response objects
2022-01-20
- Implementation of /sapi endpoints for wallet operations. (not completely documented yet, refer to Binance docs as appropriate)
2020-10-06
- Add support for 2FA code on withdraw.html endpoint for use when API WITHDRAWAL is secured with 2FA (configure on the website)
2020-10-03
- Add support for many REST endpoints that were missing support
2019-10-21
- Fork Binance API docs for the TxQuick API and edit as appropriate.
2019-09-09
- New WebSocket streams for bookTickers added:
<symbol>@bookTickerand!bookTicker. Seeweb-socket-streams.mdfor details.
2019-09-03
- Faster order book data with 100ms updates:
<symbol>@depth@100msand<symbol>@depth#@100ms - Added "Update Speed:" to
web-socket-streams.md - Removed deprecated v1 endpoints as per previous announcement:
- GET api/v1/order
- GET api/v1/openOrders
- POST api/v1/order
- DELETE api/v1/order
- GET api/v1/allOrders
- GET api/v1/account
- GET api/v1/myTrades
2019-08-16 (Update 2)
- GET api/v1/depth
limitof 10000 has been temporarily removed
2019-08-16
In Q4 2017, the following endpoints were deprecated and removed from the API documentation. They have been permanently removed from the API as of this version. We apologize for the omission from the original changelog:
- GET api/v1/order
- GET api/v1/openOrders
- POST api/v1/order
- DELETE api/v1/order
- GET api/v1/allOrders
- GET api/v1/account
- GET api/v1/myTrades
Streams, endpoints, parameters, payloads, etc. described in the documents in this repository are considered official and supported. The use of any other streams, endpoints, parameters, or payloads, etc. is not supported; use them at your own risk and with no guarantees.
2019-08-15
Rest API
New order type: OCO ("One Cancels the Other")
An OCO has 2 orders: (also known as legs in financial terms)
STOP_LOSSorSTOP_LOSS_LIMITlegLIMIT_MAKERleg
Price Restrictions:
SELL Orders: Limit Price > Last Price > Stop PriceBUY Orders: Limit Price < Last Price < Stop Price- As stated, the prices must "straddle" the last traded price on the symbol. EX: If the last price is 10:
- A SELL OCO must have the limit price greater than 10, and the stop price less than 10.
- A BUY OCO must have a limit price less than 10, and the stop price greater than 10.
Quantity Restrictions:
- Both legs must have the same quantity.
ICEBERGquantities however, do not have to be the same.
Execution Order:
- If the
LIMIT_MAKERis touched, the limit maker leg will be executed first BEFORE canceling the Stop Loss Leg. - if the Market Price moves such that the
STOP_LOSSorSTOP_LOSS_LIMITwill trigger, the Limit Maker leg will be canceled BEFORE executing theSTOP_LOSSLeg.
- If the
Canceling an OCO
- Canceling either order leg will cancel the entire OCO.
- The entire OCO can be canceled via the
orderListIdor thelistClientOrderId.
New Enums for OCO:
ListStatusTypeRESPONSE- used when ListStatus is responding to a failed action. (either order list placement or cancellation)EXEC_STARTED- used when an order list has been placed or there is an update to a list's status.ALL_DONE- used when an order list has finished executing and is no longer active.
ListOrderStatusEXECUTING- used when an order list has been placed or there is an update to a list's status.ALL_DONE- used when an order list has finished executing and is no longer active.REJECT- used when ListStatus is responding to a failed action. (either order list placement or cancellation)
ContingencyTypeOCO- specifies the type of order list.
New Endpoints:
- POST api/v3/order/oco
- DELETE api/v3/orderList
- GET api/v3/orderList
recvWindowcannot exceed 60000.New
intervalLettervalues for headers:- SECOND => S
- MINUTE => M
- HOUR => H
- DAY => D
New Headers
X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter)will give your current used request weight for the (intervalNum)(intervalLetter) rate limiter. For example, if there is a one minute request rate weight limiter set, you will get aX-MBX-USED-WEIGHT-1Mheader in the response. The legacy headerX-MBX-USED-WEIGHTwill still be returned and will represent the current used weight for the one minute request rate weight limit.New Header
X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter)that is updated on any valid order placement and tracks your current order count for the interval; rejected/unsuccessful orders are not guaranteed to haveX-MBX-ORDER-COUNT-**headers in the response.- Eg.
X-MBX-ORDER-COUNT-1Sfor "orders per 1 second" andX-MBX-ORDER-COUNT-1Dfor orders per "one day"
- Eg.
GET api/v1/depth now supports
limit5000 and 10000; weights are 50 and 100 respectively.GET api/v1/exchangeInfo has a new parameter
ocoAllowed.
USER DATA STREAM
executionReportevent now contains "g" which has theorderListId; it will be set to -1 for non-OCO orders.- New Event Type
listStatus;listStatusis sent on an update to any OCO order. - New Event Type
outboundAccountPosition;outboundAccountPositionis sent any time an account's balance changes and contains the assets that could have changed by the event that generated the balance change (a deposit, withdrawal, trade, order placement, or cancellation).
NEW ERRORS
- -1131 BAD_RECV_WINDOW
recvWindowmust be less than 60000
- -1099 Not found, authenticated, or authorized
- This replaces error code -1999
NEW -2011 ERRORS
- OCO_BAD_ORDER_PARAMS
- A parameter for one of the orders is incorrect.
- OCO_BAD_PRICES
- The relationship of the prices for the orders is not correct.
- UNSUPPORTED_ORD_OCO
- OCO orders are not supported for this symbol.
2019-03-12
Rest API
- X-MBX-USED-WEIGHT header added to Rest API responses.
- Retry-After header added to Rest API 418 and 429 responses.
- When canceling the Rest API can now return
errorCode-1013 OR -2011 if the symbol'sstatusisn'tTRADING. api/v1/depthno longer has the ignored and empty[].api/v3/myTradesnow returnsquoteQty; the price * qty of for the trade.
Websocket streams
<symbol>@depthand<symbol>@depthXstreams no longer have the ignored and empty[].
System improvements
- Matching Engine stability/reliability improvements.
- Rest API performance improvements.
2018-11-13
Rest API
- Can now cancel orders through the Rest API during a trading ban.
- New filters:
PERCENT_PRICE,MARKET_LOT_SIZE,MAX_NUM_ICEBERG_ORDERS. - Added
RAW_REQUSTrate limit. Limits based on the number of requests over X minutes regardless of weight. - /api/v3/ticker/price increased to weight of 2 for a no symbol query.
- /api/v3/ticker/bookTicker increased weight of 2 for a no symbol query.
- DELETE /api/v3/order will now return an execution report of the final state of the order.
MIN_NOTIONALfilter has two new parameters:applyToMarket(whether or not the filter is applied to MARKET orders) andavgPriceMins(the number of minutes over which the price averaged for the notional estimation).intervalNumadded to /api/v1/exchangeInfo limits.intervalNumdescribes the amount of the interval. For example:intervalNum5, withintervalminute, means "every 5 minutes".
Explanation for the average price calculation:
(qty * price) of all trades / numTrades of the trades over previous 5 minutes.
If there is no trade in the last 5 minutes, it takes the first trade that happened outside of the 5min window. For example if the last trade was 20 minutes ago, that trade's price is the 5 min average.
If there is no trade on the symbol, there is no average price and market orders cannot be placed. On a new symbol with
applyToMarketenabled on theMIN_NOTIONALfilter, market orders cannot be placed until there is at least 1 trade.The current average price can be checked here:
https://api.binance.com/api/v3/avgPrice?symbol=<symbol>For example: https://api.binance.com/api/v3/avgPrice?symbol=BNBUSDT
User data stream
Last quote asset transacted quantity(as variableY) added to execution reports. Represents thelastPricelastQty(Ll).
2018-07-18
Rest API
- New filter:
ICEBERG_PARTS POST api/v3/ordernew defaults fornewOrderRespType.ACK,RESULT, orFULL;MARKETandLIMITorder types default toFULL, all other orders default toACK.- POST api/v3/order
RESULTandFULLresponses now havecummulativeQuoteQty - GET api/v3/openOrders with no symbol weight reduced to 40.
- GET api/v3/ticker/24hr with no symbol weight reduced to 40.
- Max amount of trades from GET /api/v1/trades increased to 1000.
- Max amount of trades from GET /api/v1/historicalTrades increased to 1000.
- Max amount of aggregate trades from GET /api/v1/aggTrades increased to 1000.
- Max amount of aggregate trades from GET /api/v1/klines increased to 1000.
- Rest API Order lookups now return
updateTimewhich represents the last time the order was updated;timeis the order creation time. - Order lookup endpoints will now return
cummulativeQuoteQty. IfcummulativeQuoteQtyis < 0, it means the data isn't available for this order at this time. REQUESTSrate limit type changed toREQUEST_WEIGHT. This limit was always logically request weight and the previous name for it caused confusion.
User data stream
cummulativeQuoteQtyfield added to order responses and execution reports (as variableZ). Represents the cummulative amount of thequotethat has been spent (with aBUYorder) or received (with aSELLorder). Historical orders will have a value < 0 in this field indicating the data is not available at this time.cummulativeQuoteQtydivided bycummulativeQtywill give the average price for an order.O(order creation time) added to execution reports
2018-01-23
- GET /api/v1/historicalTrades weight decreased to 5
- GET /api/v1/aggTrades weight decreased to 1
- GET /api/v1/klines weight decreased to 1
- GET /api/v1/ticker/24hr all symbols weight decreased to number of trading symbols / 2
- GET /api/v3/allOrders weight decreased to 5
- GET /api/v3/myTrades weight decreased to 5
- GET /api/v3/account weight decreased to 5
- GET /api/v1/depth limit=500 weight decreased to 5
- GET /api/v1/depth limit=1000 weight decreased to 10
- -1003 error message updated to direct users to websockets
2018-01-20
- GET /api/v1/ticker/24hr single symbol weight decreased to 1
- GET /api/v3/openOrders all symbols weight decreased to number of trading symbols / 2
- GET /api/v3/allOrders weight decreased to 15
- GET /api/v3/myTrades weight decreased to 15
- GET /api/v3/order weight decreased to 1
- myTrades will now return both sides of a self-trade/wash-trade
2018-01-14
- GET /api/v1/aggTrades weight changed to 2
- GET /api/v1/klines weight changed to 2
- GET /api/v3/order weight changed to 2
- GET /api/v3/allOrders weight changed to 20
- GET /api/v3/account weight changed to 20
- GET /api/v3/myTrades weight changed to 20
- GET /api/v3/historicalTrades weight changed to 20