CHANGELOG for Binance's API
Last Updated: 2025-11-14
2025-11-14
- All Market Tickers Stream (
!ticker@arr) has been deprecated; This means this will be removed both from the documentation and from our systems at a later date. More details to follow. - Please use
<symbol>@tickeror!miniTicker@arrinstead.
2025-11-12
- The steps on how to manage a local order book correctly has been corrected.
2025-11-11
SBE Market Data
- At 2025-11-26 07:00 UTC, the update speed of
<symbol>@depthand<symbol>@depth20streams will be changed to 50ms.- This change will apply automatically to all users of SBE Market Data and doesn't require any action.
- The total amount of data received per second will be increased (up to 2x).
- SPOT Testnet will have these changes at 2025-11-11 07:00 UTC.
- SBE Market Data has been updated to reflect these changes.
2025-11-10
- "Last Updated" dates will be removed from all documents except for CHANGELOG.
- Moving forward, CHANGELOG will be the source of reference for when changes were made to any document.
2025-10-28
Notice: The following changes will be deployed on 2025-10-28, starting at 04:00 UTC and may take several hours to complete:
- An optional parameter,
symbolStatus, has been added to the following endpoints:- REST API
GET /api/v3/depthGET /api/v3/ticker/priceGET /api/v3/ticker/bookTickerGET /api/v3/ticker/24hrGET /api/v3/ticker/tradingDayGET /api/v3/ticker
- WebSocket API
depthticker.priceticker.bookticker.24hrticker.tradingDayticker
- REST API
- When the parameter
symbolStatus=<STATUS>is provided, only symbols whose trading status matches the specifiedSTATUSwill be included in the response:_- If a single symbol is specified using the
symbol=<SYMBOL>parameter and its trading status does not match the givenSTATUS, the endpoint will return error code-1220 SYMBOL_DOES_NOT_MATCH_STATUS. - If multiple symbols are specified using the
symbols=[...]parameter, the response will be an array that excludes any symbols whose trading status does not matchSTATUS. If no symbols from the symbols parameter have a trading status that matchesSTATUS, the response is an empty array. - For endpoints where the
symbolandsymbolsparameters are optional, omitting these parameters is treated as if all symbols had been specified in thesymbols=[...]parameter. See the previous line for the behavior ofsymbolStatus=<STATUS>.
- If a single symbol is specified using the
2025-10-24
SBE
- SBE: schema 3:1 (spot_3_1.xml) has been updated to support listenToken Subscription Methods for Margin Trading.
REST and WebSocket API
Following the announcement from 2025-04-07, all documentation related with listenKey for use on wss://stream.binance.com has been removed.
We remind you that you should instead get user data updates by subscribing to the User Data Stream on the WebSocket API. This will offer better performance (lower latency).
Please refer to the list of requests and methods below for more information.
The features will remain available until a future retirement announcement is made.
-
REST API
POST /api/v3/userDataStreamPUT /api/v3/userDataStreamDELETE /api/v3/userDataStream
-
WebSocket API
userDataStream.startuserDataStream.pinguserDataStream.stop
2025-10-21
REST and WebSocket API:
- Reminder that SBE 2:1 schema will be retired on 2025-10-24, 6 months after being deprecated.
- The SBE lifecycle for Production has been updated to reflect this change.
2025-10-08
FIX API
- Updated QuickFIX Schema for FIX Market Data:
- Updated
RecvWindow(25000)to reflect microsecond support announced on 2025-08-12. - Updated InstrumentList
<y>message:- Added fields:
StartPriceRange,EndPriceRange. - Made the following fields optional:
MinTradeVol(562),MaxTradeVol(1140),MinQtyIncrement(25039),MarketMinTradeVol(25040),MarketMaxTradeVol(25041),MarketMinQtyIncrement(25042),MinPriceIncrement(969).
- Added fields:
- The changes to InstrumentList
are breaking changes, and will roll out at around 2025-10-23 07:00 UTC. Please update to the new schema before then. - SPOT Testnet has the breaking changes already enabled.
- Updated
2025-09-29
Notice: The following changes will be deployed on 2025-09-29, starting at 10:00 UTC and may take several hours to complete.
- Added an endpoint to retrieve the list of filters relevant to an account on a given symbol. This is the only endpoint that shows if an account has
MAX_ASSETfilters applied to it.- REST API:
GET /api/v3/myFilters - WebSocket API:
myFilters
- REST API:
- Comments in SBE: schema 3:1 (spot_3_1.xml) have been added, modified, and removed. Although there is no need for users of
3:1to update to this version of the file, we advise updating to maintain consistency. - Added documentation for filter
MAX_ASSET.
2025-09-18
- Updated documentation for
recvWindowto reflect microsecond support announced on 2025-08-12.- REST API: Timing Security
- WebSocket API: Timing Security
2025-09-12
- The QuickFix schema for FIX Order Entry has been updated to support Pegged Orders.
- Updated FIX API Documentation for
RecvWindowin
2025-08-28
- Updated SBE FAQ section regarding legacy support to include more details on schema compatibility and explain
NonRepresentableandNonRepresentableMessage.
2025-08-26
- Updated "Request Security" documentation for REST API and WebSocket API with no functional changes.
2025-08-25
- SBE: schema 3:1 (spot_3_1.xml) will be updated on 2025-08-25 at 05:00 UTC
- The following fields have been renamed because the SbeTool code generator has been found to generate Java code that does not compile.
- Although only users impacted by this issue need to update the schema, we advise all users to upgrade to the latest version to maintain consistency.
- Message
MaxAssetFilter- field
limitExponentrenamed toqtyExponent - field
limitrenamed tomaxQty
- field
- The following fields have been renamed because the SbeTool code generator has been found to generate Java code that does not compile.
2025-08-19
userDataStream.subscribereturnssubscriptionIdin the responses.
This was missed in the previous changelog entry.
2025-08-12
Notice: The changes in this section will be gradually rolled out, and will take approximately up to two weeks to complete.
General Changes
- New error codes
-1120and1211. See Errors for more information. - The following requests have a new structure called
specialCommission. See Commission Rates.- REST API
GET /api/v3/account/commissionPOST /api/v3/order/testwithcomputeCommissionRates=truePOST /api/v3/sor/order/testwithcomputeCommissionRates=true
- WebSocket API
account.commissionorder.testwithcomputeCommissionRates=truesor.order.testwithcomputeCommissionRates=true
- REST API
- SBE: A new schema 3:1 (spot_3_1.xml) is available.
- The current schema 3:0 (spot_3_0.xml) is deprecated and will retire in 6 months as per our schema deprecation policy.
- Changes in schema 3:1:
ExchangeInfoResponse: new fieldpegInstructionsAllowedExecutionReportEvent: new fieldspricePeg,pricePegOffsetLevel,peggedPriceUserDataStreamSubscribeResponse: new fieldsubscriptionId- New field
subscriptionIdfor all user data stream events. - Field
apiKeyrenamed tologgedOnApiKeyforWebSocketSessionLogonResponse,WebSocketSessionStatusResponseandWebSocketSessionLogoutResponse OrderTestWithCommissionsResponse: 2 new fieldsspecialCommissionForOrderMakerandspecialCommissionForOrderTakerAccountCommissionResponse: 4 new fieldsspecialCommissionMaker,specialCommissionTaker,specialCommissionBuyerandspecialCommissionSeller- Support for
EXCHANGE_MAX_NUM_ORDER_LISTS,MAX_NUM_ORDER_LISTS, andMAX_NUM_ORDER_AMENDSfilters. ExecutionReportEvent: fieldsrejectReasonandorigClientOrderIdnow show their default values in SBE format to match the JSON format.NonRepresentableMessage: New message added to represent a message that cannot be represented in this schema ID and version. Receipt of this message indicates that something should be available, but it is not representable using the SBE schema currently in use.
- Orders with cumulative quantity of 0 in the final state
EXPIRED_IN_MATCH(i.e., the order expired due to STP) will be archived after 90 days. - Query order lists requests will first query the data in the cache, and if it cannot be found, will query the database.
- REST API:
GET /api/v3/openOrderLists - WebSocket API:
openOrderLists.status
- REST API:
WebSocket API
- A single WebSocket connection can subscribe to multiple User Data Streams at once.
- Only one subscription per account is allowed on a single connection.
- Method
userDataStream.subscribe.signaturehas been added that allows you to subscribe to the User Data Stream without needing to login first.- This also doesn’t require an Ed25519 API Key, and can work with any API Key type.
- For SBE support, you need to use at least schema 3:1.
- Method
session.subscriptionshas been added to list all active subscriptions for the current session. - The meaning of the field
userDataStreamin the session requests has changed slightly.- Previously, this returned
trueif you were subscribed to the user data stream of your logged-on account. - Now returns
trueif you have at least one active user data stream subscription, otherwisefalse.
- Previously, this returned
userDataStream.unsubscribesupports closing multiple subscriptions.- When called with no parameter, this will close all subscriptions.
- When called with
subscriptionId, this will attempt to close the subscription matching that Id, if it exists. - The authorization for this request has been changed to
NONE.
- Field
subscriptionIdhas been added to the User Data Stream events payload when listening through the WebSocket API. This will identify which subscription the event is coming from.
FIX API
- When a client sends a reject message, the FIX API will no longer send the client back a Reject
<3>message. - Error messages are now clearer when a tag is invalid, missing a value, or when the field value is empty or malformed.
-
{"code": -1169, "msg": "Invalid tag number."} -
{"code": -1177, "msg": "Tag specified without a value."} -
{"code": -1102, "msg": "Field value was empty or malformed."}
-
Future Changes
The following changes will be available on 2025-08-27 starting at 07:00 UTC:
- Exchange Information requests will emit a new field,
pegInstructionsAllowed. - Bug fix: The Matching Engine will no longer accept order lists that exceed the order count filter limits. Affected filters:
MAX_NUM_ORDERSMAX_ALGO_ORDERSMAX_ICEBERG_ORDERSEXCHANGE_MAX_NUM_ORDERSEXCHANGE_MAX_ALGO_ORDERSEXCHANGE_MAX_ICEBERG_ORDERS
The following changes will be available on 2025-08-28 starting at 07:00 UTC:
- The pegged orders functionality will be available.
pegInstructionsAllowedwill be set totruefor all symbols, enabling the use of pegged orders for all APIs.- The following conditional fields
pegPriceType,pegOffSetType,pegOffsetValues, andpeggedPricewill appear in responses of the following requests if the order is a pegged order:- REST API
GET /api/v3/orderGET /api/v3/orderListGET /api/v3/openOrderListGET /api/v3/allOrdersDELETE /api/v3/orderDELETE /api/v3/orderListDELETE /api/v3/openOrdersPUT /api/v3/order/amend/keepPriority
- WebSocket API
order.statusorderList.statusallOrdersorder.cancelorderList.cancelopenOrders.cancelAllorder.amend.keepPriority
- REST API
- FIX API
OrdType(40)supports new valueP(PEGGED)- Tags
PegOffsetValue(211),PegPriceType(1094),PegMoveType(835), andPegOffsetType(836)have been added to the following messages:- NewOrderSingle
<D> - NewOrderList
<E> - OrderCancelRequestAndNewOrderSingle
<XCN>
- NewOrderSingle
- When placing an order, the
ExecutionReport<8>message will echo backPegInstructions, with an extra optional fieldPeggedPrice (839).
- New error messages for pegged orders are added. Please see the Errors document for more information.
- Changes with
recvWindowwill be enabled.- A third check is performed after your message leaves our message broker, just before it is sent to the Matching Engine.
- This does not cover potential delays inside the Matching Engine itself.
recvWindowsupports microseconds.- The value is still specified in milliseconds, but it can now include a decimal component for higher precision.
- This means the parameter can now support up to three decimal places (e.g., 6000.346).
- APIs affected:
- FIX API
- REST API
- WebSocket API
- A third check is performed after your message leaves our message broker, just before it is sent to the Matching Engine.
- New
MAX_NUM_ORDER_LISTSfilter will be enabled, limiting the number of order lists to 20 per symbol. - New
MAX_NUM_ORDER_AMENDSfilter will be enabled, limiting each order to a maximum of 10 amendments.
2025-08-07
- Updated FIX API documentation
- FIX Market Data limits: The subscription limit has always been present but was undocumented.
- On message processing order: Reworded and reformatted.
2025-07-03
- Beginning at 2025-07-08 07:00 UTC, WebSocket Streams will be upgraded.
- During the upgrade, existing and new connections may be disconnected in less than 24 hours.
- The upgrade may take up to 2 hours; We apologize for the inconvenience.
2025-06-04
REST and WebSocket API:
- Reminder that SBE 2:0 schema will be retired on 2025-06-12, 6 months after being deprecated.
- The SBE lifecycle for Production has been updated to reflect this change.
2025-05-28
- Documented API timeout value and error under General API Information for each API:
2025-05-22
Notice: The following changes will happen at 2025-06-06 7:00 UTC.
- The previous behavior of
recvWindowon FIX, REST, and WebSocket APIs will be augmented by an additional check.- To review, the existing behavior is:
- If
timestampis greater thanserverTime+ 1 second at receipt of the request, the request is rejected. Rejection by this check increments message limits (FIX API) and IP limits (REST and WebSocket APIs), but not Unfilled Order Count (order placement endpoints of all APIs). - If the difference between
timestampandserverTimeat receipt of the request is greater thanrecvWindow, the request is rejected. Rejection by this check increments message limits (FIX API) and IP limits (REST and WebSocket APIs) but not Unfilled Order Count (order placement endpoints of all APIs).
- If
- The additional check is:
- Just before a request is forwarded to the Matching Engine, if the difference between
timestampand the currentserverTimeis greater thanrecvWindow, the request is rejected. Rejection by this check increments message limits (FIX API), IP limits (REST and WebSocket APIs), and Unfilled Order Count (order placement endpoints of all APIs).
- Just before a request is forwarded to the Matching Engine, if the difference between
- The documentation for Timing security has been updated to reflect the additional check.
- To review, the existing behavior is:
- Fixed a bug in FIX Market Data message InstrumentList
<y>. Previously, the value ofNoRelatedSym(146)could have been incorrect.
2025-04-29
- Features that currently require an Ed25519 API key will soon be opened up to HMAC and RSA keys.
- For example, subscribing to User Data Stream in WebSocket API will be possible with any API key type before listenKeys are removed.
- Users are still encouraged to migrate to Ed25519 API keys as they are more secure and performant on Binance Spot Trading.
- More details to come.
2025-04-25
- The following request weights have been increased from 1 to 4:
- REST API:
PUT /api/v3/order/amend/keepPriority - WebSocket API:
order.amend.keepPriority - The documentation for both REST and WebSocket API has been updated to reflect these changes.
- REST API:
- Clarified that
SEQNUMin the FIX-API is a 32-bit unsigned integer that rolls over. This has been theSEQNUMdata type since the inception of the FIX-API.
2025-04-21
Clarification on the release of Order Amend Keep Priority and STP Decrement:
- At 2025-05-07 07:00 UTC
- Order Amend Keep Priority will be enabled on all symbols.
- STP Decrement will be allowed on all symbols.
- At 2025-04-24, 07:00 UTC, the field
amendAllowedwill become visible on Exchange Information requests, but the feature will not be enabled yet. - SPOT Testnet has both features enabled/allowed on all symbols.
2025-04-08
Notice: The changes in this section will be gradually rolled out, and will take a week to complete.
- New Error code
-2039where if querying an order with bothorderIdandorigClientOrderIdand no order is found with this combination.- Affected requests:
- REST API:
GET /api/v3/order - WebSocket API:
order.status
- REST API:
- Affected requests:
- The Errors Documentation has also been updated with the new error messages for code
-1034when the FIX connection rate limits have exceeded. (More details can be found in yesterday's update)
2025-04-07
General Changes
Notice: The changes in this section will be gradually rolled out, and will take a week to complete.
- FIX Market Data connection limits were increased from 5 to 100 on January 16, 2025. This was not previously highlighted in changelog.
- New Error code
-2038for order amend keep priority requests that fail. - New messages for error code
-1034. - If the unfilled order count for
intervalNum:DAYis exceeded, the unfilled order count forintervalNum:SECONDis no longer incremented. - Previously, the request weight for myTrades was 20 regardless of the parameters provided. Now, if you provide
orderId, the request weight is 5.- REST API:
GET /api/v3/myTrades - WebSocket API:
myTrades
- REST API:
- Change when querying and deleting orders:
- When neither
orderIdnororigClientOrderIdare present, the request is now rejected with-1102instead of-1128. - Affected requests:
- REST API:
GET /api/v3/orderDELETE /api/v3/order
- WebSocket API
order.statusorder.cancel
- FIX API
- OrderCancelRequest
<F>
- OrderCancelRequest
- REST API:
- When neither
FIX API
Notice: The following changes will occur during April 21, 2025.
- FIX API verifies that
EncryptMethod(98)is 0 at Logon<A>. - FIX Order Entry connection limits will be a maximum of 10 concurrent connections per account.
- The connection rate limits are now enforced. Note that these limits are checked independently for both the account and the IP address.
- FIX Order Entry: 15 connection attempts within 30 seconds
- FIX Drop Copy: 15 connection attempts within 30 seconds
- FIX Market Data: 300 connection attempts within 300 seconds
- News
<B>contains a countdown until disconnection in the Headline field.- Following the completion of this update, when the server enters maintenance, a
Newsmessage will be sent to clients every 10 seconds for 10 minutes. After this period, clients will be logged out and their sessions will be closed.
- Following the completion of this update, when the server enters maintenance, a
- OrderCancelRequest
<F>and OrderCancelRequestAndNewOrderSingle<XCN>now allow bothorderIdandclientOrderId. - The QuickFix schema for FIX OE is updated to support the Order Amend Keep Priority feature and new STP mode,
DECREMENT.
User Data Streams
- Receiving user data streams on wss://stream.binance.com:9443 using a
listenKeyis now deprecated.- This feature will be removed from our systems at a later date.
- Instead, you should get user data updates by subscribing to the User Data Stream on the WebSocket API.
- This should offer slightly better performance (lower latency).
- This requires the use of an Ed25519 API Key.
- In a future update, information about the base WebSocket endpoint for the User Data Streams will be removed.
- In a future update, the following requests will be removed from the documentation:
POST /api/v3/userDataStreamPUT /api/v3/userDataStreamDELETE /api/v3/userDataStreamuserDataStream.startuserDataStream.pinguserDataStream.stop
- The User Data Stream documentation will remain as reference for the payloads you can receive.
Future Changes
The following changes will occur at April 24, 2025, 07:00 UTC:
Order Amend Keep Priority becomes available. (Note that the symbol has to have the feature enabled to be used.)- UPDATE 2025-04-21: The exact date "Order Amend Keep Priority" will be enabled has not yet been determined.
- New field
amendAllowedbecomes visible in Exchange Information responses.- REST API:
GET /api/v3/exchangeInfo - WebSocket API:
exchangeInfo
- REST API:
- FIX API: New Order Entry Messages OrderAmendKeepPriorityRequest and OrderAmendReject
- REST API:
PUT /api/v3/order/amend/keepPriority - WebSocket API:
order.amend.keepPriority
STP modeDECREMENTbecomes visible in Exchange Information if the symbol has it configured.- UPDATE 2025-04-21: The exact date
DECREMENTSTP will be enabled has not yet been determined. - Instead of expiring only the maker, only the taker, or unconditionally both orders, STP decrement decreases the available quantity of both orders and increases the
prevented quantityof both orders by the amount of the prevented match. - This expires the order with less available quantity as (
filled quantity+prevented quantity) equalsorder quantity. Both orders expire if their available quantities are equal. It is called a "decrement" because it reduces available quantity.
- UPDATE 2025-04-21: The exact date
- Behavior when querying and/or canceling with
orderIdandorigClientOrderId/cancelOrigClientOrderId:- The behavior when both parameters were provided was not consistent across all endpoints.
- Moving forward, when both parameters are provided, the order is first searched for using its
orderId, and if found,origClientOrderId/cancelOrigClientOrderIdis checked against that order. If both conditions pass, the request succeeds. If both conditions are not met the request is rejected. - Affected requests:
- REST API:
GET /api/v3/orderDELETE /api/v3/orderPOST /api/v3/order/cancelReplace
- WebSocket API:
order.statusorder.cancelorder.cancelReplace
- FIX API
- OrderCancelRequest
<F> - OrderCancelRequestAndNewOrderSingle
<XCN>
- OrderCancelRequest
- REST API:
- Behavior when canceling with
listOrderIdandlistClientOrderId:- The behavior when both parameters were provided was not consistent across all endpoints.
- Moving forward, when both parameters are passed, the order list is first searched for using its
listOrderId, and if found,listClientOrderIdis checked against that order list. If both conditions are not met the request is rejected. - Affected requests:
- REST API
DELETE /api/v3/orderList
- WebSocket API
orderList.cancel
- REST API
- SBE: A new schema 3:0 (spot_3_0.xml) is now available.
- The current schema 2:1 (spot_2_1.xml) is now deprecated and will be retired in 6 months as per our schema deprecation policy.
- Note that trying to use schema 3:0 before it is released will result in an error.
- Changes in schema 3:0:
- Support for Order Amend Keep Priority:
- Added field
amendAllowedto ExchangeInfoResponse. - New Messages
OrderAmendmentsResponseandOrderAmendKeepPriorityResponse
- Added field
- All enums now have a
NON_REPRESENTABLEvariant. This will be used to encode new enum values in the future, which would be incompatible with 3:0. - New enum variant
DECREMENTforselfTradePreventionModeandallowedSelfTradePreventionModes symbolStatusenum valuesAUCTION_MATCH,PRE_TRADINGandPOST_TRADINGhave been removed.- Fields
usedSor,orderCapacity,workingFloor,preventedQuantity, andmatchTypeare no longer optional. - Field
orderCreationTimeinExecutionReportEventis now optional.
- Support for Order Amend Keep Priority:
- When using deprecated schema 2:1 on the WebSocket API to listen to the User Data Stream:
ListStatusEventfieldlistStatusTypewill be rendered asExecStartedwhen it should have beenUpdated. Upgrade to schema 3:0 to get the correct value.ExecutionReportEventfieldselfTradePreventionModewill be rendered asNonewhen it should have beenDecrement. This only happens whenexecutionTypeisTradePrevention.ExecutionReportEventfieldorderCreationTimewill be rendered as -1 when it has no value.
- All schemas below 3:0 are unable to represent responses for Order Amend Keep Priority requests and any response that could contain the STP mode
DECREMENT(e.g. Exchange Information, order placement, order cancelation, or querying the status of your order). When a response cannot be represented in the requested schema, an error is returned.
2025-04-03
- Following SPOT Testnet's latest announcement, updating the URL in the WebSocket API to the latest URL for SPOT Testnet.
2025-03-31
- Added a clarification on the performance of canceling an order.
2025-03-10
- Notice: The following changes will happen on 2025-03-13 09:00 UTC
- FIX Drop Copy sessions will have a limit of 60 messages per minute.
- FIX Market Data sessions will have a limit of 2000 messages per minute.
- The FIX API documentation has been updated to reflect the upcoming changes.
- SBE Market Data Streams will be available on March 18 2025, 07:00 UTC. These streams offer a smaller payload and should offer better latency than the equivalent JSON streams for a subset of latency-sensitive market data streams.
- Streams available in SBE format:
- Real-time: trade stream
- Real-time: best bid/ask
- Every 100 ms: diff. depth
- Every 100 ms: partial book depth
- For more information please refer to the SBE Market Data Streams.
- Streams available in SBE format:
2025-03-05
- Notice: The following changes will happen on March 10, 2025 12:00 UTC.
The following request weights will be increased from 2 to 4:- REST API:
GET /api/v3/aggTrade - WebSocket API:
trades.aggregate
- REST API:
- The documentation for both REST and WebSocket API has been updated to reflect the upcoming changes.
2025-02-12
- Notice: These changes will take effect on February 26, 2025 05:00 UTC. Please ensure you have downloaded the latest schema before then.
AggressorSide (2446)will be rendered in the FIX Market Data Trade Stream. The QuickFix schema file has also been updated.
2025-01-28
- Notice: These changes will be gradually rolled out between February 3, 2025 and February 14, 2025.
The following changes will apply to WebSocket Market Data Streams, User Data Streams, and the WebSocket API:
- Our WebSocket services will send a ping frame every 20 seconds instead of 3 minutes.
- The allowed pong delay will be every 1 minute instead of 10 minutes.
- The documentation for these services have been updated to reflect the change.
2025-01-09
- FIX Market Data will be available at January 16, 05:00 UTC. The FIX API documentation has been updated regarding this feature.
- Please refer to this link for the QuickFIX Schema for FIX Market Data.
2024-12-17
General Changes:
The system now supports microseconds in all related time and/or timestamp fields. Microsecond support is opt-in, by default the requests and responses still use milliseconds. Examples in documentation are also using milliseconds for the foreseeable future.
WebSocket Streams
- A new optional parameter
timeUnitcan be used in the connection URL to select the time unit.- For example:
/stream?streams=btcusdt@trade&timeUnit=millisecond - Supported values are:
MILLISECONDmillisecondMICROSECONDmicrosecond
- If the time unit is not selected, milliseconds will be used by default.
- For example:
REST API
- A new optional header
X-MBX-TIME-UNITcan be sent in the request to select the time unit.- Supported values:
MILLISECONDmillisecondMICROSECONDmicrosecond
- The time unit affects timestamp fields in JSON responses (e.g.,
time,transactTime).- SBE responses continue to be in microseconds regardless of time unit.
- If the time unit is not selected, milliseconds will be used by default.
- Supported values:
- Timestamp parameters (e.g.
startTime,endTime,timestamp)can now be passed in milliseconds or microseconds.
WebSocket API
- A new optional parameter
timeUnitcan be used in the connection URL to select the time unit.- Supported values:
MILLISECONDmillisecondMICROSECONDmicrosecond
- The time unit affects timestamp fields in JSON responses (e.g.,
time,transactTime).- SBE responses continue to be in microseconds regardless of time unit.
- If the time unit is not selected, milliseconds will be used by default.
- Supported values:
- Timestamp parameters (e.g.
startTime,endTime,timestamp)can now be passed in milliseconds or microseconds.
User Data Streams
- A new optional parameter
timeUnitcan be used in the connection URL to select the time unit.- Supported values
MILLISECONDMICROSECOND.microsecondmillisecond
- Supported values
2024-12-09
Notice: The changes below will be rolled out starting at 2024-12-12 and may take approximately a week to complete.
General Changes
- Timestamp parameters now reject values too far into the past or the future. To be specific, the parameter will be rejected if:
timestampbefore 2017-01-01 (less than 1483228800000)timestampis more than 10 seconds after the current time (e.g., if current time is 1729745280000 then it is an error to use 1729745291000 or greater)
- If
startTimeand/orendTimevalues are outside of range, the values will be adjusted to fit the correct range. - The field for quote order quantity (
origQuoteOrderQty) has been added to responses that previously did not have it. Note that for order placement endpoints the field will only appear for requests withnewOrderRespTypeset toRESULTorFULL.- Please refer to the table below for affected requests with:
origQuoteOrderQty:
- Please refer to the table below for affected requests with:
| Service | Request |
|---|---|
| REST | POST /api/v3/order |
POST /api/v3/sor/order | |
POST /api/v3/order/oco | |
POST /api/v3/orderList/oco | |
POST /api/v3/orderList/oto | |
POST /api/v3/orderList/otoco | |
DELETE /api/v3/order | |
DELETE /api/v3/orderList | |
POST /api/v3/order/cancelReplace | |
| WebSocket API | order.place |
sor.order.place | |
orderList.place | |
orderList.place.oco | |
orderList.place.oto | |
orderList.place.otoco | |
order.cancel | |
orderList.cancel | |
order.cancelReplace |
SBE
- A new schema 2:1 spot_2_1.xml has been released. The current schema 2:0 spot_2_0.xml will thus be deprecated, and retired from the API in 6 months as per our schema deprecation policy.
- Schema 2:1 is a backward compatible update of schema 2:0. You will always receive payloads in 2:1 format when you request either schema 2:0 or 2:1.
- Changes in SBE schema 2:1:
- New field
origQuoteOrderQtyin order placement/cancellation responses (Note: Decoders generated using the 2:0 schema will skip this field.):NewOrderResultResponseNewOrderFullResponseCancelOrderResponseNewOrderListResultResponseNewOrderListFullResponseCancelOrderListResponse
- WebSocket API only: New field
userDataStreamin session status responses:WebSocketSessionLogonResponseWebSocketSessionStatusResponseWebSocketSessionLogoutResponse
- WebSocket API only: New messages for User Data Stream support:
UserDataStreamSubscribeResponseUserDataStreamUnsubscribeResponseBalanceUpdateEventEventStreamTerminatedEventExecutionReportEventExternalLockUpdateEventListStatusEventOutboundAccountPositionEvent
- New field
WebSocket API
- You can now subscribe to User Data Stream events through your WebSocket API connection.
- Note: This feature is only available for users of the Ed25519 API keys.
- Note: New SBE schema 2:1 is required for User Data Stream subscriptions in SBE format.
- New requests:
userDataStream.subscribeuserDataStream.unsubscribe
- Changes to
session.logon,session.status, andsession.logout- Added a new field
userDataStreamindicating if the user data stream subscription is active.
- Added a new field
- Fixed a bug where you wouldn't receive a new listenKey using
userDataStream.startaftersession.logon
User Data Stream
- WebSocket API only: New event
eventStreamTerminatedis emitted when you either logout from your websocket session or you have unsubscribed from the user data stream. - New event
externalLockUpdateis sent when your spot wallet balance is locked/unlocked by an external system.
FIX API
- The schema has been updated with a new Administrative message News <B>, which can be used for all FIX services. Receiving this message indicates that your connection is about to be closed.
The following changes will occur between 2024-12-16 to 2024-12-20:
- Fixed a bug that prevented orders from being placed when submitting OCOs on the
BUYside without providing astopPrice. TAKE_PROFITandTAKE_PROFIT_LIMITsupport has been added for OCOs.- Previously OCOs could only be composed by the following order types:
LIMIT_MAKER+STOP_LOSSLIMIT_MAKER+STOP_LOSS_LIMIT
- Now OCOs can be composed of the following order types:
LIMIT_MAKER+STOP_LOSSLIMIT_MAKER+STOP_LOSS_LIMITTAKE_PROFIT+STOP_LOSSTAKE_PROFIT+STOP_LOSS_LIMITTAKE_PROFIT_LIMIT+STOP_LOSSTAKE_PROFIT_LIMIT+STOP_LOSS_LIMIT
- This is supported by the following requests:
POST /api/v3/orderList/ocoPOST /api/v3/orderList/otocoorderList.place.ocoorderList.place.otocoNewOrderList<E>
- Error code -1167 will be obsolete after this update and will be removed from the documentation in a later update.
- Previously OCOs could only be composed by the following order types:
2024-10-18
REST and WebSocket API:
- Reminder that SBE 1:0 schema will be disabled on 2024-10-25, 6 months after being deprecated, as per our SBE policy.
- The SBE lifecycle for Prod has been updated to reflect this change.
2024-10-17
Changes to Exchange Information (i.e. GET /api/v3/exchangeInfo from REST and exchangeInfo for WebSocket API).
- A new optional parameter
showPermissionSetscan be used to hide the permissions frompermissionsSets; This can be used for a reduced payload size. - A new optional parameter
symbolStatuscan now be used to only show symbols with the specified status. (e.g.TRADING,HALT,BREAK)
2024-08-26
- Spot Unfilled Order Count Rules have been updated to explain how to decrease your unfilled order count when placing orders.
2024-08-16
Notice: The changes below are being rolled out gradually, and may take approximately a week to complete.
General Changes:
- New error messages have been added when quote quantity market orders (aka reverse market orders) are rejected in low-liquidity situations.
2024-08-01
- FIX API and Drop Copy Sessions will be available on August 8, 05:00 UTC.
2024-07-26
- FIX API and Drop Copy Sessions has been added to the documentation.
- The release date to the live exchange has not been determined.
2024-07-22
General changes:
- Fixed a bug where klines had incorrect timestamps.
- REST API:
GET /api/v3/klinesandGET /api/v3/uiKlineswithtimeZoneparameter - WebSocket API:
klinesanduiKlineswithtimeZoneparameter - WebSocket Streams:
<symbol>@kline_<interval>@+08:00streams
- REST API:
2024-06-11
- On June 11, 05:00 UTC, One-Triggers-the-Other (OTO) orders and One-Triggers-a-One-Cancels-The-Other (OTOCO) orders will be enabled. (Note this may take a few hours to be rolled out to all servers.)
- New requests have been added:
- REST API:
POST /api/v3/orderList/otoPOST /api/v3/orderList/otoco
- WebSocket API:
orderList.place.otoorderList.place.otoco
- REST API:
- New requests have been added:
- On June 18, 05:00 UTC, Buyer order ID
band Seller order IDawill be removed from the Trade Streams (i.e.<symbol>@trade). (Note that this may take a few hours to be rolled out to all servers.)- WebSocket Streams has been updated regarding this change.
- To monitor if your order was part of a trade, please listen to the User Data Streams
2024-06-06
This will be available by June 6, 11:59 UTC.
REST API
orderRateLimitExceededModehas been added toPOST /api/v3/order/cancelReplace.
WebSocket API
orderRateLimitExceededModehas been added toorder.cancelReplace.
2024-05-30
WebSocket Streams:
- Kline/Candlestick streams can now support a UTC+8 timezone offset. (e.g.
btcusdt@kline_1d@+08:00)
2024-04-10
The following changes have been postponed to take effect on April 25, 05:00 UTC
General changes:
- Symbol permission information in Exchange Information responses has moved from field
permissionsto fieldpermissionSets. - Field
permissionswill be empty and will be removed in a future release. - Previously,
"permissions":["SPOT","MARGIN"]meant that you could place an order on the symbol if your account hadSPOTorMARGINpermissions. The equivalent is"permissionSets":[["SPOT","MARGIN"]]. (Note the extra set of square brackets.) Each array of permissions inside thepermissionSetsarray is called a "permission set". - Symbol permissions can now be more complex.
"permissionSets":[["SPOT","MARGIN"],["TRD_GRP_004","TRD_GRP_005"]]means that you may place an order on the symbol if your account has SPOT or MARGIN permissions andTRD_GRP_004orTRD_GRP_005permissions. There may be an arbitrary number of permission sets in a symbol'spermissionSets.
REST API
otoAllowedwill now appear onGET /api/v3/exchangeInfo, that indicates if One-Triggers-the-Other (OTO) orders are supported on that symbol.
WebSocket API
otoAllowedwill now appear onexchangeInfo, that indicates if One-Triggers-the-Other (OTO) orders are supported on that symbol.
SBE
- A new schema 2:0 spot_2_0.xml has been released. The current schema 1:0 spot_1_0.xml will thus be deprecated, and retired from the API in 6 months as per our schema deprecation policy.
- When using schema 1:0 on REST API or WebSocket API, group "permissions" in message "ExchangeInfoResponse" will always be empty. Upgrade to schema 2:0 to find permission information in group "permissionSets". See General changes above for more details.
- Deprecated OCO requests will still be supported by the latest schema.
- Note that trying to use schema 2:0 before it is actually released will result in an error.
2024-04-02
Notice: The changes below are being rolled out gradually, and will take approximately a week to complete.
General changes:
GET /api/v3/accounthas a new optional parameteromitZeroBalances, which if enabled hides all zero balances.account.statushas a new optional parameteromitZeroBalanceswhich if enabled hides all zero balances.- The weight of the following requests has been increased from 10 to 25 (This will take effect on April 4, 2024):
GET /api/v3/tradesGET /api/v3/historicalTradestrades.recenttrades.historical
User Data Stream:
- New event
listenKeyExpiredthat will be emitted in the streams if thelistenKeyexpired.
REST API
- The
POST /api/v3/order/ocoendpoint is now deprecated on the REST API. You should use the newPOST /api/v3/orderList/ocoendpoint instead. Note that this new endpoint uses different parameters.
WebSocket API
- The
orderList.placerequest is now deprecated on the WebSocket API. You should now use the neworderList.place.ocorequest instead. Note that this new request uses different parameters.
The following will take effect approximately a week after the release date:
General changes:
- Symbol permission information in Exchange Information responses has moved from field
permissionsto fieldpermissionSets. - Field
permissionswill be empty and will be removed in a future release. - Previously,
"permissions":["SPOT","MARGIN"]meant that you could place an order on the symbol if your account hadSPOTorMARGINpermissions. The equivalent is"permissionSets":[["SPOT","MARGIN"]]. (Note the extra set of square brackets.) Each array of permissions inside thepermissionSetsarray is called a "permission set". - Symbol permissions can now be more complex.
"permissionSets":[["SPOT","MARGIN"],["TRD_GRP_004","TRD_GRP_005"]]means that you may place an order on the symbol if your account has SPOT or MARGIN permissions andTRD_GRP_004orTRD_GRP_005permissions. There may be an arbitrary number of permission sets in a symbol'spermissionSets.
REST API
otoAllowedwill now appear onGET /api/v3/exchangeInfo, that indicates if One-Triggers-the-Other (OTO) orders are supported on that symbol.
WebSocket API
otoAllowedwill now appear onexchangeInfo, that indicates if One-Triggers-the-Other (OTO) orders are supported on that symbol.
SBE
- A new schema 2:0 spot_2_0.xml has been released. The current schema 1:0 spot_1_0.xml will thus be deprecated, and retired from the API in 6 months as per our schema deprecation policy.
- When using schema 1:0 on REST API or WebSocket API, group "permissions" in message "ExchangeInfoResponse" will always be empty. Upgrade to schema 2:0 to find permission information in group "permissionSets". See General changes above for more details.
- Deprecated OCO requests will still be supported by the latest schema.
- Note that trying to use schema 2:0 before it is actually released will result in an error.
2024-02-28
This will take effect on March 5, 2024.
Simple Binary Encoding (SBE) will be added to the live exchange, both for the Rest API and WebSocket API.
For more information on SBE, please refer to the FAQ
2024-02-08
The SPOT WebSocket API can now support SBE on SPOT Testnet.
The SBE schema has been updated with WebSocket API metadata without incrementing either schemaId or version.
Users using SBE only on the REST API may continue to use the SBE schema with git commit hash 128b94b2591944a536ae427626b795000100cf1d or update to the newly-published SBE schema.
Users who want to use SBE on the WebSocket API must use the newly-published SBE schema.
The FAQ for SBE has been updated.
2023-12-08
Simple Binary Encoding (SBE) has been added to SPOT Testnet.
This will be added to the live exchange at a later date.
For more information on what SBE is, please refer to the FAQ
2023-12-04
Notice: The changes below are being rolled out gradually, and will take approximately a week to complete.
General Changes:
- Error message
Precision is over the maximum defined for this asset.has been changed toParameter '%s' has too much precision.- This error message is returned when a parameter has more precision than allowed:
e.g. if
base assetprecision is 6 andquantity=0.1234567then this error message will appear. - This affects all requests with the following parameters:
quantityquoteOrderQtyicebergQtylimitIcebergQtystopIcebergQtypricestopPricestopLimitPrice
- This error message is returned when a parameter has more precision than allowed:
e.g. if
- Requests for open OCO now correctly return results in ascending order. This affects the following requests:
- REST API:
GET /api/v3/openOrderList - WebSocket API:
openOrderList.status
- REST API:
- Requests for all OCO now correctly return results in ascending order when
startTimeorfromIdare specified. This affects the following requests:- REST API:
GET /api/v3/allOrderList - WebSocket API:
allOrderLists
- REST API:
- Fixed a bug where order query requests would incorrectly return
-2026 ORDER_ARCHIVEDerror for newly placed orders.- REST API:
GET /api/v3/order - WebSocket API:
order.status
- REST API:
REST API
- New endpoint
GET /api/v3/account/commission - New endpoint
GET /api/v3/ticker/tradingDay GET /api/v3/avgPriceresponse has a new fieldcloseTime, indicating the last trade time.GET /api/v3/klinesand/api/v3/uiKlineshave a new optional parametertimeZone.POST /api/v3/order/testandPOST /api/v3/sor/order/testhave a new optional parametercomputeCommissionRates.- Changes regarding invalid endpoints being sent:
- Previously, if you query an non-existing endpoint (e.g.
curl -X GET "https://api.binance.com/api/v3/exchangie) you would get a HTTP 404 code with the response<html><body><h2>404 Not found</h2></body></html> - From now on the HTML response will only appear if the Accept request header has
text/htmlfor this situation. The HTTP code will remain the same.
- Previously, if you query an non-existing endpoint (e.g.
WebSocket API
- New request
account.commission - New requests to allow session authentication: (Note that these requests can only be used with Ed25519 keys.)
session.logonsession.logoutsession.status
- New request
ticker.tradingDay avgPriceresponse has a new fieldcloseTime, indicating the last trade time.klinesanduiKlineshave a new optional parametertimeZone.order.testandsor.order.testhave a new optional parametercomputeCommissionRates.- Fixed a bug where unsolicited pongs sent before the ping would cause disconnection.
WebSocket Streams
- New stream
<symbol>@avgPrice idnow supports the same values as used foridin the WebSocket API:- 64-bit signed integers (previously this was unsigned)
- Alphanumeric strings, max of 36 in length
null
- Fixed a bug where unsolicited pongs sent before the ping would cause disconnection.
User Data Streams
- When an event of type
executionReporthas an execution type (x) ofTRADE_PREVENTION, fieldsl,LandYwill now always be 0. New fieldspl,pLandpYwill describe the prevented execution quantity, prevented execution price, and prevented execution notional instead. These new fields show the values of what wouldl,LandYhave been if the taker order didn't have self-trade prevention enabled.
The following will take effect approximately a week after the release date:
- Symbol Permissions will only affect order placement, not cancellation.
permissionsstill apply to Cancel-Replace orders (i.e. The cancellation won't be allowed if your account does have the permission to place an order using this request.)
2023-10-19
Effective on 2023-10-19 00:00 UTC
- The request weights of the following requests have been increased:
| REST API | WebSocket API | Condition | Previous Request Weight | New Request Weight |
|---|---|---|---|---|
GET /api/v3/trades |
trades.recent |
N/A | 2 | 10 |
GET /api/v3/depth |
depth |
Limit 1-100 | 2 | 5 |
| Limit 101-500 | 10 | 25 | ||
| Limit 501-1000 | 20 | 50 | ||
| Limit 1001-5000 | 100 | 250 |
2023-10-03
- Order decrement feature went live at 06:15 UTC.
- For more information on this feature, please refer to our FAQ
2023-08-25
- For WebSocket API, removed
RAW REQUESTSrate limit inexchangeInfo, replaced it withCONNECTIONSrate limit, which is the limit for new Websocket connections.
The following changes will be effective from 2023-08-25 at UTC 00:00.
- The
CONNECTIONSrate limit for WebSocket API has been adjusted to 300 every 5 minutes. - The
REQUEST_WEIGHTrate limit for both REST and WebSocket API has been adjusted to 6,000 every minute. - The
RAW_REQUESTSrate limit for REST API has been adjusted to 61,000 every 5 minutes. - Previously, connecting to WebSocket API used to cost 1 weight. The cost is now 2.
- The weights to the following requests for both REST API and WebSocket API have been adjusted.
Please refer to the table for more details:
| Request | Previous Request Weight | New Request Weight |
|---|---|---|
GET /api/v3/order order.status | 2 | 4 |
GET /api/v3/orderList orderList.status | 2 | 4 |
GET /api/v3/openOrders openOrders.status - With symbol | 3 | 6 |
GET /api/v3/openOrders openOrders.status - Without symbol | 40 | 80 |
GET /api/v3/openOrderList openOrderLists.status | 3 | 6 |
GET /api/v3/allOrders allOrders | 10 | 20 |
GET /api/v3/allOrderList allOrderLists | 10 | 20 |
GET /api/v3/myTrades myTrades | 10 | 20 |
GET /api/v3/myAllocations myAllocations | 10 | 20 |
GET /api/v3/myPreventedMatches myPreventedMatches - Using preventedMatchId | 1 | 2 |
GET /api/v3/myPreventedMatches myPreventedMatches - Using orderId | 10 | 20 |
GET /api/v3/account account.status | 10 | 20 |
GET /api/v3/rateLimit/order account.rateLimits.orders | 20 | 40 |
GET /api/v3/exchangeInfo exchangeInfo | 10 | 20 |
GET /api/v3/depthdepth - Limit 1-100 | 1 | 2 |
GET /api/v3/depth depth - Limit 101-500 | 5 | 10 |
GET /api/v3/depth depth - Limit 501-1000 | 10 | 20 |
GET /api/v3/depth depth - Limit 1001-5000 | 50 | 100 |
GET /api/v3/aggTrades trades.aggregate | 1 | 2 |
GET /api/v3/trades trades.recent | 1 | 2 |
GET /api/v3/historicalTrades trades.historical | 5 | 10 |
GET /api/v3/klines klines | 1 | 2 |
GET /api/v3/uiKlines uiKlines | 1 | 2 |
GET /api/v3/ticker/bookTicker ticker.book - With symbol | 1 | 2 |
GET /api/v3/ticker/bookTicker ticker.book - Without symbol or With symbols | 2 | 4 |
GET /api/v3/ticker/priceticker.price - With symbol | 1 | 2 |
GET /api/v3/ticker/priceticker.price - Without symbol or With symbols | 2 | 4 |
GET /api/v3/ticker/24hr ticker.24hr - With symbol or With symbols using 1-20 symbols | 1 | 2 |
GET /api/v3/ticker/24hr ticker.24hr - With symbols using 21-100 symbols | 20 | 40 |
GET /api/v3/ticker/24hr ticker.24hr - Without symbol or symbols using 101 or more symbols | 40 | 80 |
GET /api/v3/avgPrice avgPrice | 1 | 2 |
GET /api/v3/ticker ticker | 2 | 4 |
GET /api/v3/ticker ticker - Maximum weight for this request | 100 | 200 |
POST /api/v3/userDataStream userDataStream.start | 1 | 2 |
PUT /api/v3/userDataStream userDataStream.ping | 1 | 2 |
DELETE /api/v3/userDataStreamuserDataStream.stop | 1 | 2 |
2023-08-08
Smart Order Routing (SOR) has been added to the APIs. For more information please refer to our FAQ. Please wait for future announcements on when the feature will be enabled.
REST API
- Changes to
GET /api/v3/exchangeInfo:- New field in response:
sors, describing SORs enabled on the exchange.
- New field in response:
- Changes to
GET /api/v3/myPreventedMatches- New field
makerSymbolwill appear in the response for all prevented matches.
- New field
- New endpoints for order placement using SOR:
POST /api/v3/sor/orderPOST /api/v3/sor/order/test
- New endpoint
GET /api/v3/myAllocations
WEBSOCKET API
- Changes to
exchangeInfo:- New field in response:
sors, describing SORs enabled on the exchange.
- New field in response:
- Changes to
myPreventedMatches:- New field
makerSymbolwill appear in the response for all prevented matches.
- New field
- New requests for order placement using SOR:
sor.order.placesor.order.test
- New request
myAllocations
USER DATA STREAM
- Changes to
executionReport:- These fields are only relevant for orders placed using SOR:
- New field
bformatchType - New field
aforallocId - New field
kforworkingFloor
- New field
- This field is only relevant for orders expiring due to STP:
- New field
CsforcounterSymbol
- New field
- These fields are only relevant for orders placed using SOR:
2023-07-18
- New API key type – Ed25519 – is now supported. (UI support will be released this week.)
- Ed25519 API keys are an alternative to RSA API keys, using asymmetric cryptography to authenticate your requests on the API.
- We recommend switching to Ed25519 for improved performance and security.
For more information, please refer to the API Key Types.
- Documentation has been updated with how to sign a payload with Ed25519 keys.