CHANGELOG for Binance's API
Last Updated: 2025-06-04
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
recvWindow
on FIX, REST, and WebSocket APIs will be augmented by an additional check.- To review, the existing behavior is:
- If
timestamp
is 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
timestamp
andserverTime
at 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
timestamp
and the currentserverTime
is 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
SEQNUM
in the FIX-API is a 32-bit unsigned integer that rolls over. This has been theSEQNUM
data 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
amendAllowed
will 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
-2039
where if querying an order with bothorderId
andorigClientOrderId
and 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
-1034
when 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
-2038
for order amend keep priority requests that fail. - New messages for error code
-1034
. - If the unfilled order count for
intervalNum:DAY
is exceeded, the unfilled order count forintervalNum:SECOND
is 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
orderId
nororigClientOrderId
are present, the request is now rejected with-1102
instead of-1128
. - Affected requests:
- REST API:
GET /api/v3/order
DELETE /api/v3/order
- WebSocket API
order.status
order.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
News
message 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 bothorderId
andclientOrderId
. - 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
listenKey
is 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/userDataStream
PUT /api/v3/userDataStream
DELETE /api/v3/userDataStream
userDataStream.start
userDataStream.ping
userDataStream.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
amendAllowed
becomes 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 modeDECREMENT
becomes visible in Exchange Information if the symbol has it configured.- UPDATE 2025-04-21: The exact date
DECREMENT
STP 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 quantity
of 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
orderId
andorigClientOrderId/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
/cancelOrigClientOrderId
is 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/order
DELETE /api/v3/order
POST /api/v3/order/cancelReplace
- WebSocket API:
order.status
order.cancel
order.cancelReplace
- FIX API
- OrderCancelRequest
<F>
- OrderCancelRequestAndNewOrderSingle
<XCN>
- OrderCancelRequest
- REST API:
- Behavior when canceling with
listOrderId
andlistClientOrderId
:- 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,listClientOrderId
is 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
amendAllowed
to ExchangeInfoResponse. - New Messages
OrderAmendmentsResponse
andOrderAmendKeepPriorityResponse
- Added field
- All enums now have a
NON_REPRESENTABLE
variant. This will be used to encode new enum values in the future, which would be incompatible with 3:0. - New enum variant
DECREMENT
forselfTradePreventionMode
andallowedSelfTradePreventionModes
symbolStatus
enum valuesAUCTION_MATCH
,PRE_TRADING
andPOST_TRADING
have been removed.- Fields
usedSor
,orderCapacity
,workingFloor
,preventedQuantity
, andmatchType
are no longer optional. - Field
orderCreationTime
inExecutionReportEvent
is 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:
ListStatusEvent
fieldlistStatusType
will be rendered asExecStarted
when it should have beenUpdated
. Upgrade to schema 3:0 to get the correct value.ExecutionReportEvent
fieldselfTradePreventionMode
will be rendered asNone
when it should have beenDecrement
. This only happens whenexecutionType
isTradePrevention
.ExecutionReportEvent
fieldorderCreationTime
will 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
timeUnit
can be used in the connection URL to select the time unit.- For example:
/stream?streams=btcusdt@trade&timeUnit=millisecond
- Supported values are:
MILLISECOND
millisecond
MICROSECOND
microsecond
- If the time unit is not selected, milliseconds will be used by default.
- For example:
REST API
- A new optional header
X-MBX-TIME-UNIT
can be sent in the request to select the time unit.- Supported values:
MILLISECOND
millisecond
MICROSECOND
microsecond
- 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
timeUnit
can be used in the connection URL to select the time unit.- Supported values:
MILLISECOND
millisecond
MICROSECOND
microsecond
- 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
timeUnit
can be used in the connection URL to select the time unit.- Supported values
MILLISECOND
MICROSECOND
.microsecond
millisecond
- 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:
timestamp
before 2017-01-01 (less than 1483228800000)timestamp
is 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
startTime
and/orendTime
values 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 withnewOrderRespType
set toRESULT
orFULL
.- 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
origQuoteOrderQty
in order placement/cancellation responses (Note: Decoders generated using the 2:0 schema will skip this field.):NewOrderResultResponse
NewOrderFullResponse
CancelOrderResponse
NewOrderListResultResponse
NewOrderListFullResponse
CancelOrderListResponse
- WebSocket API only: New field
userDataStream
in session status responses:WebSocketSessionLogonResponse
WebSocketSessionStatusResponse
WebSocketSessionLogoutResponse
- WebSocket API only: New messages for User Data Stream support:
UserDataStreamSubscribeResponse
UserDataStreamUnsubscribeResponse
BalanceUpdateEvent
EventStreamTerminatedEvent
ExecutionReportEvent
ExternalLockUpdateEvent
ListStatusEvent
OutboundAccountPositionEvent
- 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.subscribe
userDataStream.unsubscribe
- Changes to
session.logon
,session.status
, andsession.logout
- Added a new field
userDataStream
indicating 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.start
aftersession.logon
User Data Stream
- WebSocket API only: New event
eventStreamTerminated
is emitted when you either logout from your websocket session or you have unsubscribed from the user data stream. - New event
externalLockUpdate
is 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
BUY
side without providing astopPrice
. TAKE_PROFIT
andTAKE_PROFIT_LIMIT
support has been added for OCOs.- Previously OCOs could only be composed by the following order types:
LIMIT_MAKER
+STOP_LOSS
LIMIT_MAKER
+STOP_LOSS_LIMIT
- Now OCOs can be composed of the following order types:
LIMIT_MAKER
+STOP_LOSS
LIMIT_MAKER
+STOP_LOSS_LIMIT
TAKE_PROFIT
+STOP_LOSS
TAKE_PROFIT
+STOP_LOSS_LIMIT
TAKE_PROFIT_LIMIT
+STOP_LOSS
TAKE_PROFIT_LIMIT
+STOP_LOSS_LIMIT
- This is supported by the following requests:
POST /api/v3/orderList/oco
POST /api/v3/orderList/otoco
orderList.place.oco
orderList.place.otoco
NewOrderList<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
showPermissionSets
can be used to hide the permissions frompermissionsSets
; This can be used for a reduced payload size. - A new optional parameter
symbolStatus
can 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/klines
andGET /api/v3/uiKlines
withtimeZone
parameter - WebSocket API:
klines
anduiKlines
withtimeZone
parameter - WebSocket Streams:
<symbol>@kline_<interval>@+08:00
streams
- 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/oto
POST /api/v3/orderList/otoco
- WebSocket API:
orderList.place.oto
orderList.place.otoco
- REST API:
- New requests have been added:
- On June 18, 05:00 UTC, Buyer order ID
b
and Seller order IDa
will 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
orderRateLimitExceededMode
has been added toPOST /api/v3/order/cancelReplace
.
WebSocket API
orderRateLimitExceededMode
has 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
permissions
to fieldpermissionSets
. - Field
permissions
will 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 hadSPOT
orMARGIN
permissions. The equivalent is"permissionSets":[["SPOT","MARGIN"]]
. (Note the extra set of square brackets.) Each array of permissions inside thepermissionSets
array 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_004
orTRD_GRP_005
permissions. There may be an arbitrary number of permission sets in a symbol'spermissionSets
.
REST API
otoAllowed
will now appear onGET /api/v3/exchangeInfo
, that indicates if One-Triggers-the-Other (OTO) orders are supported on that symbol.
WebSocket API
otoAllowed
will 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/account
has a new optional parameteromitZeroBalances
, which if enabled hides all zero balances.account.status
has a new optional parameteromitZeroBalances
which 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/trades
GET /api/v3/historicalTrades
trades.recent
trades.historical
User Data Stream:
- New event
listenKeyExpired
that will be emitted in the streams if thelistenKey
expired.
REST API
- The
POST /api/v3/order/oco
endpoint is now deprecated on the REST API. You should use the newPOST /api/v3/orderList/oco
endpoint instead. Note that this new endpoint uses different parameters.
WebSocket API
- The
orderList.place
request is now deprecated on the WebSocket API. You should now use the neworderList.place.oco
request 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
permissions
to fieldpermissionSets
. - Field
permissions
will 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 hadSPOT
orMARGIN
permissions. The equivalent is"permissionSets":[["SPOT","MARGIN"]]
. (Note the extra set of square brackets.) Each array of permissions inside thepermissionSets
array 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_004
orTRD_GRP_005
permissions. There may be an arbitrary number of permission sets in a symbol'spermissionSets
.
REST API
otoAllowed
will now appear onGET /api/v3/exchangeInfo
, that indicates if One-Triggers-the-Other (OTO) orders are supported on that symbol.
WebSocket API
otoAllowed
will 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 asset
precision is 6 andquantity=0.1234567
then this error message will appear. - This affects all requests with the following parameters:
quantity
quoteOrderQty
icebergQty
limitIcebergQty
stopIcebergQty
price
stopPrice
stopLimitPrice
- 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
startTime
orfromId
are 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_ARCHIVED
error 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/avgPrice
response has a new fieldcloseTime
, indicating the last trade time.GET /api/v3/klines
and/api/v3/uiKlines
have a new optional parametertimeZone
.POST /api/v3/order/test
andPOST /api/v3/sor/order/test
have 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/html
for 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.logon
session.logout
session.status
- New request
ticker.tradingDay
avgPrice
response has a new fieldcloseTime
, indicating the last trade time.klines
anduiKlines
have a new optional parametertimeZone
.order.test
andsor.order.test
have a new optional parametercomputeCommissionRates
.- Fixed a bug where unsolicited pongs sent before the ping would cause disconnection.
WebSocket Streams
- New stream
<symbol>@avgPrice
id
now supports the same values as used forid
in 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
executionReport
has an execution type (x
) ofTRADE_PREVENTION
, fieldsl
,L
andY
will now always be 0. New fieldspl
,pL
andpY
will describe the prevented execution quantity, prevented execution price, and prevented execution notional instead. These new fields show the values of what wouldl
,L
andY
have 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.
permissions
still 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 REQUESTS
rate limit inexchangeInfo
, replaced it withCONNECTIONS
rate limit, which is the limit for new Websocket connections.
The following changes will be effective from 2023-08-25 at UTC 00:00.
- The
CONNECTIONS
rate limit for WebSocket API has been adjusted to 300 every 5 minutes. - The
REQUEST_WEIGHT
rate limit for both REST and WebSocket API has been adjusted to 6,000 every minute. - The
RAW_REQUESTS
rate 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/depth depth - 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/price ticker.price - With symbol | 1 | 2 |
GET /api/v3/ticker/price ticker.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/userDataStream userDataStream.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
makerSymbol
will appear in the response for all prevented matches.
- New field
- New endpoints for order placement using SOR:
POST /api/v3/sor/order
POST /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
makerSymbol
will appear in the response for all prevented matches.
- New field
- New requests for order placement using SOR:
sor.order.place
sor.order.test
- New request
myAllocations
USER DATA STREAM
- Changes to
executionReport
:- These fields are only relevant for orders placed using SOR:
- New field
b
formatchType
- New field
a
forallocId
- New field
k
forworkingFloor
- New field
- This field is only relevant for orders expiring due to STP:
- New field
Cs
forcounterSymbol
- 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.
2023-07-11
Notice: The change below are being rolled out, and will take approximately a week to complete.
General Changes:
- Changes to error messages:
- Previously, when duplicate symbols were passed to requests that do not allow it, the error would be "Mandatory parameter symbols was not sent, was empty/null, or malformed."
- Now, the error message is "Symbol is present multiple times in the list", with a new error code
-1151
- This affects the following requests:
GET /api/v3/exchangeInfo
GET /api/v3/ticker/24hr
GET /api/v3/ticker/price
GET/api/v3/ticker/bookTicker
exchangeInfo
ticker.24hr
ticker.price
ticker.book
- Fixed a bug where some non-archived orders being queried would receive the error code that their order was archived.
Rest API
- Changes to
GET /api/v3/account
:- New field
preventSor
will appear in the response. - New field
uid
that shows the User Id/Account will appear in the response.
- New field
- Changes to
GET /api/v3/historicalTrades
:- Changed security type from
MARKET_DATA
toNONE
. - This means that the
X-MBX-APIKEY
header is no longer necessary and is now ignored.
- Changed security type from
Websocket API
- Changes to
account.status
:- New field
preventSor
will appear in the response. - New field
uid
that shows the User Id/Account will appear in the response.
- New field
- Changes to
trades.historical
:- Changed security type from
MARKET_DATA
toNONE
. - This means that the
apiKey
parameter is no longer necessary and is now ignored.
- Changed security type from
The following changes will take effect approximately a week from the release date::
- Fixed multiple bugs with orders that use
type=MARKET
andquoteOrderQty
, also known as “reverse market orders”:- Reverse market orders are no longer partially filled, or filled for zero or negative quantity under extreme market conditions.
MARKET_LOT_SIZE
filter now correctly rejects reverse market orders that go over the symbol'smaxQty
.
- Fixed a bug where OCO orders using
trailingDelta
could have an incorrecttrailingTime
value after either leg of the OCO is touched. - New field
transactTime
will appear in order cancellation responses. This affects the following requests:DELETE /api/v3/order
POST /api/v3/order/cancelReplace
DELETE /api/v3/openOrders
DELETE /api/v3/orderList
order.cancel
order.cancelReplace
openOrders.cancelAll
orderList.cancel
2023-06-06
- A new endpoint is now available for redundancy: https://api-gcp.binance.com/
- This is using the GCP (Google Cloud Platform) CDN and may have slower performance compared to
api1
-api4
endpoints.
- This is using the GCP (Google Cloud Platform) CDN and may have slower performance compared to
2023-05-26
Notice: The change below are being rolled out, and will take approximately a week to complete.
- The following base endpoints may give better performance but have less stability than https://api.binance.com:
2023-05-24
- The previous market data URLs have been deprecated. Please update your code immediately to prevent interruption of our services.
- API Market data from
data.binance.com
can now be accessed fromdata-api.binance.vision
. - Websocket Market Data from
data-stream.binance.com
can now be accessed fromdata-stream.binance.vision
.
- API Market data from
2023-03-13
Notice: All changes are being rolled out gradually to all our servers, and may take a week to complete.
GENERAL CHANGES
- The error messages for certain issues have been improved for easier troubleshooting.
Situation | Old Error Message | New Error Message |
---|---|---|
An account cannot place or cancel an order, due to trading ability disabled. | This action is disabled on this account. | This account may not place or cancel orders. |
When the permissions configured on the symbol do not match the permissions on the account. | This symbol is not permitted for this account. | |
When the account tries to place an order on a symbol it has no permissions for. | This symbol is restricted for this account. | |
Placing an order when symbol is not TRADING. | Unsupported order combination. | This order type is not possible in this trading phase. |
Placing an order with timeinForce=IOC or FOK on a trading phase that does not support it. | Limit orders require GTC for this phase. |
- Fixed error message for querying archived orders:
- Previously, if an archived order (i.e. order with status
CANCELED
orEXPIRED
whereexecutedQty
== 0 that occurred more than 90 days in the past.) is queried, the error message would be:
{
"code": -2013,
"msg": "Order does not exist."
}- Now, the error message is:
{
"code": -2026,
"msg": "Order was canceled or expired with no executed qty over 90 days ago and has been archived."
} - Previously, if an archived order (i.e. order with status
- Behavior for API requests with
startTime
andendTime
:- Previously some requests failed if the
startTime
==endTime
. - Now, all API requests that accept
startTime
andendTime
allow the parameters to be equal. This applies to the following requests:- Rest API
GET /api/v3/aggTrades
GET /api/v3/klines
GET /api/v3/allOrderList
GET /api/v3/allOrders
GET /api/v3/myTrades
- Websocket API
trades.aggregate
klines
allOrderList
allOrders
myTrades
- Rest API
- Previously some requests failed if the
- Users connected to the websocket API will now be disconnected if their IP is banned due to violation of the IP rate limits (status
418
).
The following changes will take effect approximately a week from the release date, but the rest of the documentation has been updated to reflect the future changes:
- Changes to Filter Evaluation:
- Previous behavior:
LOT_SIZE
andMARKET_LOT_SIZE
required that (quantity
-minQty
) %stepSize
== 0. - New behavior: This has now been changed to (
quantity
%stepSize
) == 0.
- Previous behavior:
- Bug fix with reverse
MARKET
orders (i.e.,MARKET
usingquoteOrderQty
):- Previous behavior: Reverse market orders would always have the status
FILLED
even if the order did not fully fill due to low liquidity. - New behavior: If the reverse market order did not fully fill due to low liquidity the order status will be
EXPIRED
, andFILLED
only if the order was completely filled.
- Previous behavior: Reverse market orders would always have the status
REST API
- Changes to
DELETE /api/v3/order
andPOST /api/v3/order/cancelReplace
:- A new optional parameter
cancelRestrictions
that determines whether the cancel will succeed if the order status isNEW
orPARTIALLY_FILLED
. - If the order cancellation fails due to
cancelRestrictions
, the error will be:
{
"code": -2011,
"msg": "Order was not canceled due to cancel restrictions."
} - A new optional parameter
WEBSOCKET API
- Changes to
order.cancel
andorder.cancelReplace
:- A new optional parameter
cancelRestrictions
that determines whether the cancel will succeed if the order status isNEW
orPARTIALLY_FILLED
. - If the order cancellation fails due to
cancelRestrictions
, the error will be:
{
"code": -2011,
"msg": "Order was not canceled due to cancel restrictions."
} - A new optional parameter
2023-02-17
Changes to Websocket Limits
The WS-API and Websocket Stream now only allows 300 connections requests every 5 minutes.
This limit is per IP address.
Please be careful when trying to open multiple connections or reconnecting to the Websocket API.
2023-01-26
As per the announcement, Self Trade Prevention will be enabled at 2023-01-26 08:00 UTC.
Please refer to GET /api/v3/exchangeInfo
from the Rest API or exchangeInfo
from the Websocket API on the default and allowed modes.
2023-01-23
New API cluster has been added. Note that all endpoints are functionally equal, but may vary in performance.
2023-01-19
ACTUAL RELEASE DATE TBD
New Feature: Self-Trade Prevention (aka STP) will be added to the system at a later date. This will prevent orders from matching with orders from the same account, or accounts under the same tradeGroupId
.
Please refer to GET /api/v3/exchangeInfo
from the Rest API or exchangeInfo
from the Websocket API on the status.
"defaultSelfTradePreventionMode": "NONE", //If selfTradePreventionMode not provided, this will be the value passed to the engine
"allowedSelfTradePreventionModes": [ //What the allowed modes of selfTradePrevention are
"NONE",
"EXPIRE_TAKER",
"EXPIRE_BOTH",
"EXPIRE_MAKER"
]
Additional details on the functionality of STP is explained in the STP FAQ document.
REST API
- New order status:
EXPIRED_IN_MATCH
- This means that the order expired due to STP being triggered. - New endpoint:
GET /api/v3/myPreventedMatches
- This queries the orders that expired due to STP being triggered.
- New optional parameter
selfTradePreventionMode
has been added to the following endpoints:POST /api/v3/order
POST /api/v3/order/oco
POST /api/v3/cancelReplace
- New responses that will appear for all order placement endpoints if there was a prevented match (i.e. if an order could have matched with an order of the same account, or the accounts are in the same
tradeGroupId
):tradeGroupId
- This will only appear if account is configured to atradeGroupId
and if there was a prevented match.preventedQuantity
- Only appears if there was a prevented match.- An array
preventedMatches
with the following fields:preventedMatchId
makerOrderId
price
takerPreventedQuantity
- This will only appear ifselfTradePreventionMode
set isEXPIRE_TAKER
orEXPIRE_BOTH
.makerPreventedQuantity
- This will only appear ifselfTradePreventionMode
set isEXPIRE_MAKER
orEXPIRE_BOTH
.
- New fields
preventedMatchId
andpreventedQuantity
that can appear in the order query endpoints if the order had expired due to an STP trigger:GET /api/v3/order
GET /api/v3/openOrders
GET /api/v3/allOrders
WEBSOCKET API
- New order status:
EXPIRED_IN_MATCH
- This means that the order expired due to STP being triggered. - New optional parameter
selfTradePreventionMode
has been added to the following requests:order.place
orderList.place
order.cancelReplace
- New request:
myPreventedMatches
- This queries the orders that expired due to STP being triggered. - New responses that will appear for all order placement endpoints if there was a prevented match (i.e. if an order could have matched with an order of the same account, or the accounts are in the same
tradeGroupId
):tradeGroupId
- This will only appear if account is configured to atradeGroupId
and if there was a prevented match.preventedQuantity
- Only appears if there was a prevented match.- An array
preventedMatches
with the following fields:preventedMatchId
makerOrderId
price
takerPreventedQuantity
- This will only appear ifselfTradePreventionMode
set isEXPIRE_TAKER
orEXPIRE_BOTH
.makerPreventedQuantity
- This will only appear ifselfTradePreventionMode
set isEXPIRE_MAKER
orEXPIRE_BOTH
.
- New fields
preventedMatchId
andpreventedQuantity
that can appear in the order query requests if the order had expired due to STP trigger:order.status
openOrders.status
allOrders
USER DATA STREAM
- New execution Type:
TRADE_PREVENTION
- New fields for
executionReport
(These fields will only appear if the order has expired due to STP trigger)u
-tradeGroupId
v
-preventedMatchId
U
-counterOrderId
A
-preventedQuantity
B
-lastPreventedQuantity
2022-12-28
- SPOT WebSocket API documentation has been updated to show how to sign a request using an RSA key.
2022-12-26
- Spot WebSocket API is now available on the live exchange.
- Spot Websocket API can be accessed through this URL:
wss://ws-api.binance.com/ws-api/v3
2022-12-15
- New RSA signature
- Documentation has been updated to show how to create RSA keys.
- For security reasons, we recommend to use RSA keys instead of HMAC keys when generating an API key.
- We accept
PKCS#8
(BEGIN PUBLIC KEY). - More details on how to upload your RSA public key will be added at a later date.
- SPOT WebSocket API is now available on SPOT Testnet.
- WebSocket API allows placing orders, canceling orders, etc. through a WebSocket connection.
- WebSocket API is a separate service from WebSocket Market Data streams. I.e., placing orders and listening to market data requires two separate WebSocket connections.
- WebSocket API is subject to the same Filter and Rate Limit rules as REST API.
- WebSocket API and REST API are functionally equivalent: they provide the same features, accept the same parameters, return the same status and error codes.
WEBSOCKET API WILL BE AVAILABLE ON THE LIVE EXCHANGE AT A LATER DATE.
2022-12-13
REST API
Some error messages on error code -1003
have changed.
- Previous error message:
Too much request weight used; current limit is %s request weight per %s %s. Please use the websocket for live updates to avoid polling the API.
has been updated to:
Too much request weight used; current limit is %s request weight per %s. Please use WebSocket Streams for live updates to avoid polling the API.
- Previous error message
Way too much request weight used; IP banned until %s. Please use the websocket for live updates to avoid bans.
has been updated to:
Way too much request weight used; IP banned until %s. Please use WebSocket Streams for live updates to avoid bans.
2022-12-05
Notice: These changes are being rolled out gradually to all our servers, and will take approximately a week to complete.
WEBSOCKET
!bookTicker
will be removed by December 7, 2022. Please use the Individual Book Ticker Streams instead (<symbol>@bookTicker
).- Multiple
<symbol>@bookTicker
streams can be subscribed to over one connection. (E.g.wss://stream.binance.com:9443/stream?streams=btcusdt@bookTicker/bnbbtc@bookTicker
)
- Multiple
REST API
- New error code
-1135
- This error code will occur if a parameter requiring a JSON object is invalid.
- New error code
-1108
- This error will occur if a value to a parameter being sent was too large, potentially causing overflow.
- This error code can occur in the following endpoints:
POST /api/v3/order
POST /api/v3/order/cancelReplace
POST /api/v3/order/oco
- Changes to
GET /api/v3/aggTrades
- Previous behavior:
startTime
andendTime
had to be used in combination and could only be an hour apart. - New behavior:
startTime
andendTime
can be used individually and the 1 hour limit has been removed.- When using
startTime
only, this will return trades from that time, up to thelimit
provided. - When using
endTime
only, this will return trades before that time, up to thelimit
provided. - If
limit
not provided, regardless of used in combination or sent individually, the endpoint will use the default limit.
- When using
- Previous behavior:
- Changes to
GET /api/v3/myTrades
-
Fixed a bug where
symbol
+orderId
combination would return all trades even if the number of trades went beyond the500
default limit. -
Previous behavior: The API would send specific error messages depending on the combination of parameters sent. E.g:
{
"code": -1106,
"msg": "Parameter X was sent when not required."
} -
New behavior: If the combinations of optional parameters to the endpoint were not supported, then the endpoint will respond with the generic error:
{
"code": -1128,
"msg": "Combination of optional parameters invalid."
} -
Added a new combination of supported parameters:
symbol
+orderId
+fromId
. -
The following combinations of parameters were previously supported but no longer accepted, as these combinations were only taking
fromId
into consideration, ignoringstartTime
andendTime
:symbol
+fromId
+startTime
symbol
+fromId
+endTime
symbol
+fromId
+startTime
+endTime
-
Thus, these are the supported combinations of parameters:
symbol
symbol
+orderId
symbol
+startTime
symbol
+endTime
symbol
+fromId
symbol
+startTime
+endTime
symbol
+orderId
+fromId
-
Note: These new fields will appear approximately a week from the release date.
- Changes to
GET /api/v3/exchangeInfo
- New fields
defaultSelfTradePreventionMode
andallowedSelfTradePreventionModes
- New fields
- Changes to the Order Placement Endpoints/Order Query/Order Cancellation Endpoints:
- New field
selfTradePreventionMode
will appear in the response. - Affects the following endpoints:
POST /api/v3/order
POST /api/v3/order/oco
POST /api/v3/order/cancelReplace
GET /api/v3/order
DELETE /api/v3/order
DELETE /api/v3/orderList
- New field
- Changes to
GET /api/v3/account
- New field
requireSelfTradePrevention
will appear in the response.
- New field
- New field
workingTime
, indicating when the order started working on the order book, will appear in the following endpoints:POST /api/v3/order
GET /api/v3/order
POST /api/v3/order/cancelReplace
POST /api/v3/order/oco
GET /api/v3/order
GET /api/v3/openOrders
GET /api/v3/allOrders
- Field
trailingTime
, indicating the time when the trailing order is active and tracking price changes, will appear for the following order types (TAKE_PROFIT
,TAKE_PROFIT_LIMIT
,STOP_LOSS
,STOP_LOSS_LIMIT
iftrailingDelta
parameter was provided) for the following endpoints:POST /api/v3/order
GET /api/v3/order
GET /api/v3/openOrders
GET /api/v3/allOrders
POST /api/v3/order/cancelReplace
DELETE /api/v3/order
- Field
commissionRates
will appear in theGET /api/v3/acccount
response
USER DATA STREAM
- eventType
executionReport
has new fieldsV
-selfTradePreventionMode
D
-trailing_time
(Appears if the trailing stop order is active)W
-workingTime
(Appears ifisWorking
=true
)
2022-12-02
- Added a new market data base URL
https://data.binance.com
. - Added a new WebSocket URL
wss://data-stream.binance.com
.
2022-09-30
Scheduled changes to the removal of !bookTicker
around November 2022.
- The All Book Tickers stream (
!bookTicker
) is set to be removed in November 2022. - More details of the actual removal date will be announced at a later time.
- Please use the Individual Book Ticker Streams instead. (
<symbol>@bookTicker
). - Multiple
<symbol>@bookTicker
streams can be subscribed to over one connection.- Example: wss://stream.binance.com:9443/stream?streams=btcusdt@bookTicker/bnbbtc@bookTicker
2022-09-15
Note that these are rolling changes, so it may take a few days for it to rollout to all our servers.
- Changes to
GET /api/v3/exchangeInfo
- New optional parameter
permissions
added to display all symbols with the permissions matching the parameter provided. (eg.SPOT
,MARGIN
) - If not provided, the default value will be
["SPOT","MARGIN","LEVERAGED"]
.- This means the request
GET /api/v3/exchangeInfo
without any parameters will show all symbols that can be used forSPOT
,MARGIN
, and/orLEVERAGED
trading. - To search for symbols that can be traded on other permissions (e.g.
TRD_GRP_004
, etc), then this needs to be searched for explicitly. (e.g.permissions
=TRD_GRP_004
)
- This means the request
- Cannot be combined with
symbol
orsymbols
- New optional parameter
2022-08-23
Note that these are rolling changes, so it may take a few days for it to rollout to all our servers.
- Changes to
GET /api/v3/ticker
andGET /api/v3/ticker/24hr
- New optional parameter
type
added - Supported values for parameter
type
areFULL
andMINI
FULL
is the default value and the response that is currently being returned from the endpointMINI
omits the following fields from the response:priceChangePercent
,weightedAvgPrice
,bidPrice
,bidQty
,askPrice
,askQty
, andlastQty
- New optional parameter
- New error code
-1008
- This is sent whenever the servers are overloaded with requests.
- New field
brokered
has been added toGET /api/v3/account
- New kline interval:
1s
- New endpoint added:
GET /api/v3/uiKlines
2022-08-08
REST API
- Changes to
POST /api/v3/order
andPOST /api/v3/order/cancelReplace
- New optional fields
strategyId
andstrategyType
strategyId
is a parameter used to identify an order as part of a strategy.strategyType
is a parameter used to identify what strategy was running. (E.g. If all the orders are part of spot grid strategy, it can be set tostrategyType=1000000
)- Note that the minimum value allowed for
strategyType
is1000000
.
- Note that the minimum value allowed for
- New optional fields
- Changes to
POST /api/v3/order/oco
- New optional fields
limitStrategyId
,limitStrategyType
,stopStrategyId
,stopStrategyType
- These are the strategy metadata parameters for both legs of the OCO orders.
limitStrategyType
andstopStrategyType
both cannot be less than1000000
.
- New optional fields
- Changes to
GET /api/v3/order
,GET /api/v3/openOrders
, andGET /api/v3/allOrders
- New fields
strategyId
andstrategyType
will appear in the response JSON for orders that had these fields populated upon order placement.
- New fields
- Changes to
DELETE /api/v3/order
andDELETE /api/v3/openOrders
- New fields
strategyId
andstrategyType
will appear in the response JSON for cancelled orders that had these fields populated upon order placement.
- New fields
USER DATA STREAM
- New fields to eventType
executionReport
j
forstrategyId
J
forstrategyType
- Note that these fields only appear if these were populated upon order placement.
2022-06-20
Changes to GET /api/v3/ticker
- Weight has been reduced from 5 to 2 per symbol, regardless of
windowSize
. - The max number of symbols that can be processed in a request is 100.
- If the number of
symbols
sent is more than 100, the error will be as follows:
{
"code": -1101,
"msg": "Too many values sent for parameter 'symbols', maximum allowed up to 100."
} - If the number of
- The max Weight for this endpoint will cap at 100.
- I.e. If the request has more than 50 symbols, the Weight will still be 100, regardless of
windowSize
.
- I.e. If the request has more than 50 symbols, the Weight will still be 100, regardless of
2022-06-15
Note: The update is being rolled out over the next few days, so these changes may not be visible right away.
SPOT API
GET /api/v3/ticker
added- Rolling window price change statistics based on
windowSize
provided. - Contrary to
GET /api/v3/ticker/24hr
the list of symbols cannot be omitted. - If
windowSize
not specified, the value will default to1d
. - Response is similar to
GET /api/v3/ticker/24hr
, minus the following fields:prevClosePrice
,lastQty
,bidPrice
,bidQty
,askPrice
,askQty
- Rolling window price change statistics based on
GET /api/v3/exchangeInfo
returns new fieldcancelReplaceAllowed
insymbols
list.POST /api/v3/order/cancelReplace
added- Cancels an existing order and places a new order on the same symbol.
- The filters are evaluated before the cancel order is placed.
- e.g. If the
MAX_NUM_ORDERS
filter is 10, and the total number of open orders on the account is also 10, when usingPOST /api/v3/order/cancelReplace
both the cancel order placement and new order will fail because of the filter.
- e.g. If the
- The change is being rolled out in the next few days, thus this feature will be enabled once the upgrade is completed.
- New filter
NOTIONAL
has been added.- Defines the allowed notional value (
price * quantity
) based on a configuredminNotional
andmaxNotional
- Defines the allowed notional value (
- New exchange filter
EXCHANGE_MAX_NUM_ICEBERG_ORDERS
has been added.- Defines the limit of open iceberg orders on an account