Skip to main content

Change Log

**2023-05-30**

WEBSOCKET

  • Add user data stream:
    • new event CONDITIONAL_ORDER_TRIGGER_REJECT to the order reject reason for triggered TP/SL order

**2023-05-24**

REST

  • GET /fapi/v1/pmExchangeInfo will be deprecated on 5/29 due to removing notionalLimit restriction.

**2023-05-05**

REST

  • New endpoints PUT /fapi/v1/order and PUT /fapi/v1/batchOrders to support limit order modify
  • New endpoint GET /fapi/v1/orderAmendment to get order modify history

WEBSOCKET

  • New type "AMENDMENT" as order modify in Execution Type x of Order Update event ORDER_TRADE_UPDATE

**2023-04-17**

RELEASE DATE 2023-04-18

The recvWindow check will also be performed when orders reach matching engine. The recvWindow will be checked more precisely on order placing endpoints.

{    "code": -5028,    "msg": "Timestamp for this request is outside of the ME recvWindow"}

recvWindow Logic Before Release:

  • The order placing requests are valid if recvWindow + timestamp => REST API service server timestamp

recvWindow Logic After Release:

  • Add new recwWindow check: the order placing requests are valid if recvWindow + timestamp => matching engine timestamp

  • Impacted Endpoints:

    • POST /fapi/v1/order (HMAC SHA256)
    • PUT /fapi/v1/order (HMAC SHA256)
    • POST /fapi/v1/batchOrders (HMAC SHA256)
    • PUT /fapi/v1/batchOrders (HMAC SHA256)

**2023-03-28**

Referal Rebate Logic Before Release

  • For every trade,the referal rebate balance change will be reflected in ACCOUNT_UPDATE event of USER-DATA-STREAM in real time:
{  "e": "ACCOUNT_UPDATE",  "T": 1679974782150,  "E": 1679974782155,  "a": {    "B": [      {       "a": "USDT",       "wb": "685.31478079",       "cw": "677.17212454",       "bc": "0.00258637"      }    ],    "P": [],    "m": "ADMIN_DEPOSIT"  }}

Referal Rebate Logic After Release

  • Referral rebates are aggregated every 20 minutes and reflected as a single push in the ACCOUNT_UPDATE event of the USER-DATA-STREAM, showing the total sum of rebates earned from multiple referrals.

**2023-03-08**

RELEASE DATE 2023-03-22

Order Logic Before Release:

  • When placing order with timeInForce FOK or GTX(Post-only), user will get order response with status = “NEW“ and corresponding order_trade_update with x = “NEW”, X = “NEW”. If the orders can't meet execution criteria, user will receive another websocket order_trade_update message x = “EXPIRED”, X = “EXPIRED”. The order can be found in GET /fapi/v1/order or GET /fapi/v1/allOrders.
{    "code": -5021,    "msg": "Due to the order could not be filled immediately, the FOK order has been rejected. The order will not be recorded in the order history"}

Order Logic After Release:

  • When placing order with timeInForce FOK or GTX(Post-only), if the order can't meet execution criteria, order will get rejected directly and receive error response, no order_trade_update message in websocket. The order can't be found in GET /fapi/v1/order or GET /fapi/v1/allOrders.
{    "code": -5022,    "msg": "Due to the order could not be executed as maker, the Post Only order will be rejected. The order will not be recorded in the order history"}
  • Impacted Endpoints:
    • POST /fapi/v1/order (HMAC SHA256)
    • POST /fapi/v1/batchOrders (HMAC SHA256)
    • GET /fapi/v1/order (HMAC SHA256)
    • GET /fapi/v1/allOrders (HMAC SHA256)

**2023-01-04**

WEBSOCKET

  • Delete Order Status NEW_INSURANCE and NEW_ADL in Order Update Event

**2022-12-16**

WEBSOCKET

  • New WebSocket stream !contractInfo for symbol information update

**2022-11-29**

WEB SOCKET USER DATA STREAM

  • New WebSocket stream STRATEGY_UPDATE in USER-DATA-STREAM: update when a strategy is created/cancelled/expired, ...etc.
  • New WebSocket stream GRID_UPDATE in USER-DATA-STREAM: update when a sub order of a grid is filled or partially filled.

**2022-10-13**

Note: This change will be effictive on 2022-10-17

REST RATE LIMIT WEIGHT

Endpoint GET /fapi/v1/ticker/bookTicker

Weight Update:

2 for a single symbol;
5 when the symbol parameter is omitted


**2022-09-22**
  • Update endpoint for Account/Trade:
    • GET /fapi/v1/income: Support more incomeType
  • Add new endpoint for Portfolio Margin:
    • GET /fapi/v1/pmAccountInfo: Get Portfolio Margin current account information.

**2022-07-27**

REST RATE LIMIT WEIGHT

  • The weight of endpoint GET /fapi/v1/trades is updated to 5

**2022-06-28**

REST

  • New endpoint GET /fapi/v1/pmExchangeInfo to get current Portfolio Margin exchange trading rules.

**2022-04-08**

WEBSOCKET


**2022-03-01**

REST

  • New endpointGET /fapi/v1/income/asynto get Download Id For Futures Transaction History
  • New endpointGET /fapi/v1/income/asyn/idto get Futures Transaction History Download Link by Id

**2022-02-10**

REST

  • Update GET /fapi/v2/account endpoints:
    • If user is in multiAssetsMargin mode, all assets will be included in calculation for fields totalInitialMargin``totalMaintMargin``totalWalletBalance``totalUnrealizedProfit``totalMarginBalance``totalPositionInitialMargin``totalOpenOrderInitialMargin``totalCrossWalletBalance``totalCrossUnPnl``availableBalance``maxWithdrawAmount and the results will be show as value in USD
    • If user is in singleAssetsMargin mode, only USDT assets are included in the calculation(same as before)

**2021-12-30**

WEBSOCKET

  • New connection method for WEBSOCKET.
    • Base Url is wss://fstream-auth.binance.com
    • Streams can be access either in a single raw stream or a combined stream
    • Raw streams are accessed at /ws/<streamName>?listenKey=<validateListenKey>
    • Combined streams are accessed at /stream?streams=<streamName1>/<streamName2>/<streamName3>&listenKey=<validateListenKey>
    • <validateListenKey> must be a valid listenKey when you establish a connection.
  • More details: Websocket Market Streams and User Data Streams

**2021-11-02**

REST

  • New endpointGET /fapi/v1/assetIndexto get asset index for Multi-Assets mode margin asset

**2021-07-06**

REST

  • New field updateTime as last update time of asset and position in response of GET /fapi/v2/account and GET /fapi/v2/positionRisk
  • New fields in the response of GET /fapi/v1/exchangeInfo:
    • "liquidationFee" for liquidation fee rate
    • "marketTakeBound" for he max price difference rate( from mark price) a market order can make

**2021-06-15**

WEBSOCKET

  • New fields "q" and "i" for quote asset and index price added in stream <symbol>@compositeIndex

REST

  • Update endpoints:
    • New fields component and quoteAsset as component asset and quote asset added in response of GET /fapi/v1/indexInfo

**2021-05-06**

WEBSOCKET

  • Update streams:
    • Previous Leverage Update event ACCOUNT_CONFIG_UPDATE expanded as account configuration update event, including leverage update and Multi-Assets margin status update.
    • Balance and Position Update event ACCOUNT_UPDATE add new event reason type m as AUTO_EXCHANGEto represent Multi-Assets margin auto-exchange event

REST

  • New endpoints:

    • POST /fapi/v1/multiAssetsMargin to change Multi-Assets margin mode
    • GET /fapi/v1/multiAssetsMargin to check Multi-Assets margin mode
  • Update endpoints:

    • New object assets as asset information in response of GET /fapi/v1/exchangeInfo.
    • New field marginAvailable in response of GET /fapi/v2/balance and GET /fapi/v2/account to indicate whether the asset can be used as margin in Multi-Assets mode.

**2021-04-27**

WEBSOCKET

  • The following liquidation orders streams do not push realtime order data anymore. Instead, they push snapshot order data at a maximum frequency of 1 order push per second.:
    • <symbol>@forceOrder
    • !forceOrder@arr

REST

  • The endpoint GET /fapi/v1/allForceOrders stop being maintained and no longer accepts request.

**2021-04-22**

WEBSOCKET

  • New field "bc" for balance change in event "ACCOUNT_UPDATE"

**2021-03-02**
  • New endpoint GET /fapi/v1/indexPriceKlines to get index price kline/candlestick data.

  • New endpoint GET /fapi/v1/markPriceKlines to get mark price kline/candlestick data.


**2021-02-24**

REST RATE LIMIT WEIGHT

  • The weight of endpoint GET /fapi/v2/balance is updated to 5
  • The weight of endpoint GET /fapi/v2/positionRisk is updated to 5

**2021-02-22**

REST RATE LIMIT WEIGHT

  • The weight of endpoint GET /fapi/v1/income is updated to 30

REST

  • The query time period for endpoint GET /fapi/v1/allOrders must be less than 7 days.
  • The query time period for endpoint GET /fapi/v1/allForceOrders must be within the recent 7 days.

**2021-01-26**

WEB SOCKET USER DATA STREAM

  • New WebSocket stream ACCOUNT_CONFIG_UPDATE in USER-DATA-STREAM for leverage changed update

REST RATE LIMIT WEIGHT

  • Following endpoints' weights will be updated to 20 with symbol and 50 without symbol:
    • GET /fapi/v1/allForceOrders
    • GET /fapi/v1/forceOrders

REST

  • New filter "MIN_NOTIONAL" whicht defines the minimum notional value allowed for an order on a symbol, and shown in the /fapi/v1/exchangeInfo

**2021-01-21**

The regular expression rule for newClientOrderId updated as ^[\.A-Z\:/a-z0-9_-]{1,36}$


**2021-01-04**

REST RATE LIMIT WEIGHT

  • Following endpoints will use new weight rule based on the paremeter "LIMIT" in the request:
    • GET /fapi/v1/klines
    • GET /fapi/v1/continuousKlines
  • Following endpoints' weights will be updated to 20:
    • GET /fapi/v1/historicalTrades
    • GET /fapi/v1/allForceOrders
    • GET /fapi/v1/forceOrders
    • GET /fapi/v1/aggTrades

**2020-12-08**

WEBSOCKET

  • New field e for event type in payload of streams <symbol>@bookTicker and !bookTicker
  • New field P for estimated settle price in payload of streams <symbol>@markPrice, <symbol>@markPrice@1s, !markPrice@arr, and !markPrice@arr@1s.
  • New stream <pair>_<contractType>@continuousKline_<interval> for continuous contract kline

REST API

  • New field "estimatedSettlePrice" in response to GET /fapi/v1/premiumIndex

  • New fields in response to GET /fapi/v1/exchangeInfo:

    • "pair"
    • "contractType"
    • "deliveryDate"
    • "onboardDate"
  • New endpoint GET /fapi/v1/continuousKlines to get continuous contract kline data

ENUM

  • Contract types:
    • PERPETUAL
    • CURRENT_MONTH
    • NEXT_MONTH
    • CURRENT_QUARTER
    • NEXT_QUARTER

**2020-11-27**
  • New endpoint GET /fapi/v1/commissionRate to get user commission rate.

**2020-11-13**

WEB SOCKET STREAM

  • In order to provide users with more secure and stable services, the update time of <symbol>depth@0ms and <symbol>@depth<level>@0ms is dynamically adjusted according to the total amount of data traffic and other objective conditions.

**2020-11-10**
  • New field "marginAsset" for margin asset in the response to GET /fapi/v1/exchangeInfo.
  • New field "positionAmt" for position amount in the response to GET /fapi/v2/account.

**2020-11-09**

WEB SOCKET USER DATA STREAM

Please notice: new streamlined and optimized push rules on event ACCOUNT_UPDATE in USER-DATA-STREAM

  • When an asset of a user is changed:

    • Only this asset and its balance information will be pushed
    • Other assets and information will no longer be pushed even the balances may not be 0
    • If none of the open positions change, the position "P" will only return an empty []
  • When a position or the margin type of a symbol is changed:

    • "P" will push the details in the "BOTH" position of this symbol
    • If the change happens in "LONG" or "SHORT" position, the changed "LONG" or "SHORT" position of this symbol will be pushed
    • Initialized "LONG" or "SHORT" isolated position of this symbol will also be pushed
    • Position information of other symbols will no longer be pushed, even their positions may not be 0
  • In short, the full information of assets and positions should be obtained via the related RESTful endpoints(GET /fapi/v2/account and GET /fapi/v2/positionRisk), and the locally cached asset or position data can be updated via the event ACCOUNT_UPDATE in Websocket USER-DATA-STREAM with the information of changed asset or position.

  • Please visit here to get examples for helping to understand the upgrade.

**2020-10-27**

WEB SOCKET STREAM

  • The maximum stream number that a single connection can listen to changes as 200.

**2020-10-10**

WEBSOCKET

  • New WebSocket streams <symbol>@compositeIndex for composite index symbol information.

**2020-10-09**
  • New endpoint GET /fapi/v1/indexInfo to get information of composite index.

**2020-09-18**
  • New endpoint GET /fapi/v1/apiTradingStatus to get futures API trading quantitative rules indicators

**2020-09-16**
  • New endpoint GET /fapi/v1/lvtKlines to get gistorical BLVT Kline.
    The BLVT NAV system is working relatively with Binance Futures, so the endpoint is based on fapi.

WEBSOCKET

  • New WebSocket streams for BLVT
    The BLVT NAV system is working relatively with Binance Futures, so the endpoint is based on futures websocket service.
    * `<tokenName>@tokenNav` for BLVT Info streams* `<tokenName>@nav_kline_<interval>` for BLVT NAV Kline streams      

**2020-09-09**
  • Some orders that were cancelled/expired will be removed gradually from API endpoints.
    • Orders that meet criteria
      • order status is CANCELED or EXPIRED, AND
      • order has NO filled trade, AND
      • created time + 7 days < current time
    • These endpoints are affected:
      • GET /fapi/v1/order
      • GET /fapi/v1/allOrders

**2020-08-14**
  • New field "indexPrice" in response to endpoint GET /fapi/v1/premiumIndex.
  • New field "i" for indexPrice in payload of ws streams:
    • <symbol>@markPrice,
    • <symbol>@markPrice@1s,
    • !markPrice@arr,
    • !markPrice@arr@1s

**2020-08-12**
  • New endpoint GET /fapi/v1/forceOrders to get the user's force orderes.

**2020-07-30**
  • New endpoint GET /fapi/v1/adlQuantile to get the positions' ADL quantile estimation values

**2020-07-17**
  • Weights of endpoint GET /fapi/v1/income has been changed as 20

**2020-07-02**

WEBSOCKET

  • New field "m" for event reason type in event "ACCOUNT_UPDATE"
  • New field "rp" for the realized profit of the trade in event "ORDER_TRADE_UPDATE"

**2020-06-15**
  • New fields in responses to GET /fapi/v2/account and GET /fapi/v2/balance:
    • availableBalance
    • maxWithdrawAmount

**2020-06-04**
  • New endpoints of version 2 of fapi, having better performance than the v1 endpoints:
    • GET /fapi/v2/account
    • GET /fapi/v2/balance

**2020-06-02**
  • New endpoint GET /fapi/v2/positionRisk in version 2 of fapi:
    • User can choose to send specific "symbol".
    • All symbols in the market can be returned.
    • Different responses for "One-way" or "Hedge" position mode.
    • Better performance than the v1 endpoint.

**2020-05-18**
  • New parameter closePosition for endpoint POST /fapi/v1/order:
    If a STOP_MARKET or TAKE_PROFIT_MARKET order with closePosition=true is triggered,all of the current long position( if SELL order) or current short position( if BUY order) will be closed.
  • New field closePosition in response to endpoints:
    • POST /fapi/v1/order
    • POST /fapi/v1/batchOrders
    • GET /fapi/v1/order
    • DELETE /fapi/v1/order
    • DELETE /fapi/v1/batchOrders
    • GET /fapi/v1/openOrder
    • GET /fapi/v1/openOrders
    • GET /fapi/v1/allOrders

**2020-05-18**
  • Some orders that were cancelled/expired will be removed gradually from API endpoints, but they are still available from Web UI.
    • Orders that meet criteria
      • order status is CANCELED or EXPIRED, AND
      • order has NO filled trade, AND
      • created time + 30 days < current time
    • These endpoints are affected:
      • GET /fapi/v1/order
      • GET /fapi/v1/allOrders

**2020-05-15**
  • New fields in payloads of <symbol>@bookTicker and !bookTicker:
    • E for event time
    • T for transaction time

**2020-05-14**
  • New field time for transaction time in response to endpoints:
    • GET /fapi/v1/ticker/price
    • GET /fapi/v1/ticker/bookTicker
    • GET /fapi/v1/openInterest

**2020-05-11**
  • New endpoint POST /fapi/v1/countdownCancelAll to cancel all open orders of the specified symbol at the end of the specified countdown.
    This rest endpoint means to ensure your open orders are canceled in case of an outage. The endpoint should be called repeatedly as heartbeats so that the existing countdown time can be canceled and repalced by a new one.

**2020-05-06**

REST

  • Endpoint GET /fapi/v1/leverageBracket is changed as "USER-DATA". It need to be signed, and timestamp is needed.

WEB SOCKET USER DATA STREAM

  • Please notice: event ACCOUNT_UPDATE in USER-DATA-STREAM will be pushed with only account balance or relative position when "FUNDING FEE" occurs.
    • When "FUNDING FEE" occurs in a crossed position, ACCOUNT_UPDATE will be pushed with only the balance B(including the "FUNDING FEE" asset only), without any position P message.
    • When "FUNDING FEE" occurs in an isolated position, ACCOUNT_UPDATE will be pushed with only the balance B(including the "FUNDING FEE" asset only) and the relative position message P( including the isolated position on which the "FUNDING FEE" occurs only, without any other position message).

**2020-04-25**
  • New fields in USER DATA STREAM event ORDER_TRADE_UPDATE :

    • cp stands for Close-All conditional order
    • AP for Activation Price with TRAILING_STOP_MARKET order
    • cr for Callback Rate with TRAILING_STOP_MARKET order
  • New USER DATA STREAM event MARGIN_CALL.


**2020-04-17**
  • New parameter newOrderRespType for response type in endpoint POST /fapi/v1/order.
    ACK and RESULT are supported. And for newOrderRespType= RESULT:
    * `MARKET` order: the final FILLED result of the order will be return directly.* `LIMIT` order with special `timeInForce`: the final status result of the order(FILLED or EXPIRED) will be returned directly.

**2020-04-14**

WEB SOCKET STREAM

  • WebSocket connections have a limit of 10 incoming messages per second. A message is considered:
    • A PING frame
    • A PONG frame
    • A JSON control message (e.g. subscribe, unsubscribe)
  • A connection that goes beyond the limit will be disconnected; IPs that are repeatedly disconnected may be banned.
  • A single connection can listen to a maximum of 200 streams.

**2020-04-09**
  • New endpoint of futures trading data: GET /futures/data/takerlongshortRatio

**2020-04-08**
  • New endpoint GET /fapi/v1/positionSide/dual to get current position mode.
  • New endpoint POST /fapi/v1/batchOrders to place multiple orders.

**2020-04-06**
  • Please notice: event ACCOUNT_UPDATE in USER-DATA-STREAM will not be pushed without update of account balances or positions.

    • ACCOUNT_UPDATE will be pushed only when update happens on user's account, including changes on balances, positions, or margin type.
    • Unfilled orders or cancelled orders will not make the event ACCOUNT_UPDATE pushed, since there's no change on positions.
    • Only positions of symbols with non-zero isolatd wallet or non-zero position amount will be pushed in the "position" part of the event ACCOUNT_UPDATE.
  • New endpoint POST /fapi/v1/positionSide/dual to change position mode: Hedge Mode or One-way Mode.

  • New parameter positionSide in the following endpoints:

    • POST /fapi/v1/order
    • POST /fapi/v1/positionMargin
  • New field positionSide in the responses to the following endpoints:

    • POST /fapi/v1/order
    • GET /fapi/v1/order
    • DELETE /fapi/v1/order
    • DELETE /fapi/v1/batchOrders
    • GET /fapi/v1/openOrder
    • GET /fapi/v1/openOrders
    • GET /fapi/v1/allOrders
    • GET /fapi/v1/account
    • GET /fapi/v1/positionMargin/history
    • GET /fapi/v1/positionRisk
    • GET /fapi/v1/userTrades
  • New field ps for "position side"in USER_DATA_STREAM events ACCOUNT_UPDATE and ORDER_TRADE_UPDATE.


**2020-03-30**
  • New endpoints of futures trading data:
    • GET /futures/data/openInterestHist
    • GET /futures/data/topLongShortAccountRatio
    • GET /futures/data/topLongShortPositionRatio
    • GET /futures/data/globalLongShortAccountRatio
**2020-02-26**
  • New order type: TRAILING_STOP_MARKET

**2020-02-20**
  • New endpoint to query specific current open order: GET /fapi/v1/openOrder

**2020-02-17**
  • Update time changed as 1000ms for streams <symbol>@ticker and !ticker@arr
  • New diff depth data with 500ms updates: <symbol>@depth@500ms
  • New partial depth data with 500ms updates: <symbol>@depth<level>@500ms

**2020-02-12**
  • New SDK and Code Demonstration on Java

  • Faster mark price websocket data with 1s updates: <symbol>@markPrice@1s and !markPrice@arr@1s


**2020-02-05**
  • New market data endpointGET /fapi/v1/leverageBracket to check notional and leverage brackets.

**2020-01-19**
  • "cumQty" is going to be removed from the responses to DELETE /fapi/v1/order, DELETE /fapi/v1/batchOrders and other order relatived endpoints in the coming weeks.
    Please use "executedQty" instead.

**2020-01-17**
**2020-01-06**
  • Faster diff data with real time updates: <symbol>@depth@0ms

**2020-01-03**
  • New endpoints related to isolated position:

    • POST /fapi/v1/marginType
    • POST /fapi/v1/positionMargin
    • GET /fapi/v1/positionMargin/history
  • New field in response to GET /fapi/v1/positionRisk related to isolated position:

    • marginType
    • isolatedMargin
  • New field in response to GET /fapi/v1/accountrelated to isolated position: isolated

  • New field in event ACCOUNT_UPDATE:

    • "cw" for cross wallet
    • "mt" for margin type
    • "iw" for isolated wallet (if isolated)

**2019-12-19**
  • New endpoint GET /fapi/v1/openInterest to get present open interest of a specific symbol.

**2019-12-18**
  • New event type in user data stream:listenKeyExpired.

**2019-12-12**
  • New endpoint DELETE /fapi/v1/allOpenOrders to cancel all open orders of a specific symbol.
  • New endpointDELETE /fapi/v1/batchOrders to cancel a list of open orders.
  • reduceOnly has been supported in orders with type:
    • TAKE_PROFIT
    • TAKE_PROFIT_MARKET
    • STOP
    • STOP_MARKET

**2019-11-29**
  • New endpoint GET /fapi/v1/allForceOrders to get all liquidation orders.
  • New websocket streams:
    • <symbol>@forceOrderfor liquidation order streams
    • !forceOrder@arr for all market liquidation order streams

**2019-11-25**
  • GET /fapi/v1/account has new field: positions
  • Added new field time for order creation time in:
    • GET /fapi/v1/openOrders
    • GET /fapi/v1/order
    • GET /fapi/v1/allOrders

**2019-11-15**
  • New websocket streams:
    • !miniTicker@arr: All market 24hr mini-tickers stream.
    • !ticker@arr: : All market 24hr tickers stream.

**2019-11-12**
  • WSS now supports live subscribing/unsubscribing to streams.

**2019-11-05**
  • New order type:
    • STOP_MARKET
    • TAKE_PROFIT_MARKET.
  • New parameter workingType in POST /fapi/v1/order:
    order with stop price can be triggered by "CONTRACT_PRICE" or "MARK_PRICE"
  • New keys in USER-DATA-STREAMS:
    • in ORDER_TRADE_UPDATE:
      • "T" as transaction time
      • "wt" as workingType
    • in ACCOUNT_UPDATE:
      • "T" as transaction time

**2019-10-28**
  • New rest endpoint for income flow history GET /fapi/v1/income

**2019-10-25**
  • Added "up" in event ACCOUNT_UPDATE in user data stream: the unrealized PnL of the position.
  • Added "R" in event ORDER_TRADE_UPDATE in user data stream, showing if the trade is reduce only.

**2019-10-24**
  • New WebSocket streams for booktickers added: <symbol>@bookTicker and !bookTicker.
  • New WebSocket streams for partial orderbook added: <symbol>@depth<levels> and <symbol>@depth<levels>@100ms
  • Faster diff data with 100ms updates: <symbol>@depth@100ms
  • Added Update Speed: to Websocket Market Streams

**2019-10-18**
  • New endpoint POST /fapi/v1/leverage for changing user's initial leverage in specific symbol market.
  • Added "leverage" for current initial leverage and "maxNotionalValue" for notional value limit of current initial leverage in response to GET /fapi/v1/positionRisk.
  • reduceOnly now is supported in the MARKET orders.

**2019-10-14**
  • Added GET /fapi/v1/fundingRate for getting funding fee rate history.

**2019-10-11**
  • Added "m" in event ORDER_TRADE_UPDATE in user data stream, showing if the trade is the maker side.

**2019-10-08**
  • New order parameter reduceOnly for LIMIT orders.
  • New order type TAKE_PROFIT.

**2019-09-20**
  • New retured values in response to GET /fapi/v1/account:
    maxWithdrawAmount, openOrderInitialMargin, positionInitialMargin

  • New retured values in response to GET /fapi/v1/positionRisk:
    liquidationPrice

General Info

testnet#

  • Most of the endpoints can be used in the testnet platform.
  • The REST baseurl for testnet is "https://testnet.binancefuture.com"
  • The Websocket baseurl for testnet is "wss://stream.binancefuture.com"

SDK and Code Demonstration#

Disclaimer:

  • The following SDKs are provided by partners and users, and are not officially produced. They are only used to help users become familiar with the API endpoint. Please use it with caution and expand R&D according to your own situation.
  • Binance does not make any commitment to the safety and performance of the SDKs, nor will be liable for the risks or even losses caused by using the SDKs.

Python3#

SDK 1: To get the provided SDK for Binance Futures Connector,
please visit https://github.com/Binance-docs/binance-futures-connector-python,
or use the command below:
pip install binance-futures-connector

SDK 2: To get the provided SDK for Binance Futures,
please visit https://github.com/Binance-docs/Binance_Futures_python,
or use the command below:
git clone https://github.com/Binance-docs/Binance_Futures_python.git

Java#

To get the provided SDK for Binance Futures,
please visit https://github.com/Binance-docs/Binance_Futures_Java,
or use the command below:
git clone https://github.com/Binance-docs/Binance_Futures_Java.git

General API Information#

  • Some endpoints will require an API Key. Please refer to this page
  • The base endpoint is: https://fapi.binance.com
  • All endpoints return either a JSON object or array.
  • Data is returned in ascending order. Oldest first, newest last.
  • All time and timestamp related fields are in milliseconds.
  • All data types adopt definition in JAVA.

HTTP Return Codes#

  • HTTP 4XX return codes are used for for malformed requests; the issue is on the sender's side.
  • HTTP 403 return code is used when the WAF Limit (Web Application Firewall) has been violated.
  • HTTP 429 return code is used when breaking a request rate limit.
  • HTTP 418 return code is used when an IP has been auto-banned for continuing to send requests after receiving 429 codes.
  • HTTP 5XX return codes are used for internal errors; the issue is on Binance's side.
    1. If there is an error message "Request occur unknown error.", please retry later.
  • HTTP 503 return code is used when:
    1. If there is an error message "Unknown error, please check your request or try again later." returned in the response, the API successfully sent the request but not get a response within the timeout period.
      It is important to NOT treat this as a failure operation; the execution status is UNKNOWN and could have been a success;
    2. If there is an error message "Service Unavailable." returned in the response, it means this is a failure API operation and the service might be unavailable at the moment, you need to retry later.
    3. If there is an error message "Internal error; unable to process your request. Please try again." returned in the response, it means this is a failure API operation and you can resend your request if you need.

Error Codes and Messages#

  • Any endpoint can return an ERROR

The error payload is as follows:

{  "code": -1121,  "msg": "Invalid symbol."}
  • Specific error codes and messages defined in Error Codes.

General Information on Endpoints#

  • For GET endpoints, parameters must be sent as a query string.
  • For POST, PUT, and DELETE endpoints, the parameters may be sent as a query string or in the request body with content type application/x-www-form-urlencoded. You may mix parameters between both the query string and request body if you wish to do so.
  • Parameters may be sent in any order.
  • If a parameter sent in both the query string and request body, the query string parameter will be used.

LIMITS#

  • The /fapi/v1/exchangeInfo rateLimits array contains objects related to the exchange's RAW_REQUEST, REQUEST_WEIGHT, and ORDER rate limits. These are further defined in the ENUM definitions section under Rate limiters (rateLimitType).
  • A 429 will be returned when either rate limit is violated.

IP Limits#

  • Every request will contain X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter) in the response headers which has the current used weight for the IP for all request rate limiters defined.
  • Each route has a weight which determines for the number of requests each endpoint counts for. Heavier endpoints and endpoints that do operations on multiple symbols will have a heavier weight.
  • When a 429 is received, it's your obligation as an API to back off and not spam the API.
  • Repeatedly violating rate limits and/or failing to back off after receiving 429s will result in an automated IP ban (HTTP status 418).
  • IP bans are tracked and scale in duration for repeat offenders, from 2 minutes to 3 days.
  • The limits on the API are based on the IPs, not the API keys.

Order Rate Limits#

  • Every order response will contain a X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter) header which has the current order count for the account for all order rate limiters defined.
  • Rejected/unsuccessful orders are not guaranteed to have X-MBX-ORDER-COUNT-** headers in the response.
  • The order rate limit is counted against each account.

Endpoint Security Type#

  • Each endpoint has a security type that determines the how you will interact with it.
  • API-keys are passed into the Rest API via the X-MBX-APIKEY header.
  • API-keys and secret-keys are case sensitive.
  • API-keys can be configured to only access certain types of secure endpoints. For example, one API-key could be used for TRADE only, while another API-key can access everything except for TRADE routes.
  • By default, API-keys can access all secure routes.
Security TypeDescription
NONEEndpoint can be accessed freely.
TRADEEndpoint requires sending a valid API-Key and signature.
USER_DATAEndpoint requires sending a valid API-Key and signature.
USER_STREAMEndpoint requires sending a valid API-Key.
MARKET_DATAEndpoint requires sending a valid API-Key.
  • TRADE and USER_DATA endpoints are SIGNED endpoints.

SIGNED (TRADE and USER_DATA) Endpoint Security#

  • SIGNED endpoints require an additional parameter, signature, to be sent in the query string or request body.
  • Endpoints use HMAC SHA256 signatures. The HMAC SHA256 signature is a keyed HMAC SHA256 operation. Use your secretKey as the key and totalParams as the value for the HMAC operation.
  • The signature is not case sensitive.
  • Please make sure the signature is the end part of your query string or request body.
  • totalParams is defined as the query string concatenated with the request body.

Timing Security#

  • A SIGNED endpoint also requires a parameter, timestamp, to be sent which should be the millisecond timestamp of when the request was created and sent.
  • An additional parameter, recvWindow, may be sent to specify the number of milliseconds after timestamp the request is valid for. If recvWindow is not sent, it defaults to 5000.

The logic is as follows:

  if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow){    // process request  }   else {    // reject request  }

Serious trading is about timing. Networks can be unstable and unreliable, which can lead to requests taking varying amounts of time to reach the servers. With recvWindow, you can specify that the request must be processed within a certain number of milliseconds or be rejected by the server.

SIGNED Endpoint Examples for POST /fapi/v1/order - HMAC Keys#

Here is a step-by-step example of how to send a vaild signed payload from the Linux command line using echo, openssl, and curl.

KeyValue
apiKeydbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83
secretKey2b5eb11e18796d12d88f13dc27dbbd02c2cc51ff7059765ed9821957d82bb4d9
ParameterValue
symbolBTCUSDT
sideBUY
typeLIMIT
timeInForceGTC
quantity1
price9000
recvWindow5000
timestamp1591702613943

Example 1: As a query string#

Example 1

HMAC SHA256 signature:

    $ echo -n "symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=9000&timeInForce=GTC&recvWindow=5000&timestamp=1591702613943" | openssl dgst -sha256 -hmac "2b5eb11e18796d12d88f13dc27dbbd02c2cc51ff7059765ed9821957d82bb4d9"    (stdin)= 3c661234138461fcc7a7d8746c6558c9842d4e10870d2ecbedf7777cad694af9

curl command:

    (HMAC SHA256)    $ curl -H "X-MBX-APIKEY: dbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83" -X POST 'https://fapi/binance.com/fapi/v1/order?symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=9000&timeInForce=GTC&recvWindow=5000&timestamp=1591702613943&signature= 3c661234138461fcc7a7d8746c6558c9842d4e10870d2ecbedf7777cad694af9'
  • queryString:

    symbol=BTCUSDT
    &side=BUY
    &type=LIMIT
    &timeInForce=GTC
    &quantity=1
    &price=9000
    &recvWindow=5000
    ×tamp=1591702613943

Example 2: As a request body#

Example 2

HMAC SHA256 signature:

    $ echo -n "symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=9000&timeInForce=GTC&recvWindow=5000&timestamp=1591702613943" | openssl dgst -sha256 -hmac "2b5eb11e18796d12d88f13dc27dbbd02c2cc51ff7059765ed9821957d82bb4d9"    (stdin)= 3c661234138461fcc7a7d8746c6558c9842d4e10870d2ecbedf7777cad694af9

curl command:

    (HMAC SHA256)    $ curl -H "X-MBX-APIKEY: dbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83" -X POST 'https://fapi/binance.com/fapi/v1/order' -d 'symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=9000&timeInForce=GTC&recvWindow=5000&timestamp=1591702613943&signature= 3c661234138461fcc7a7d8746c6558c9842d4e10870d2ecbedf7777cad694af9'
  • requestBody:

    symbol=BTCUSDT
    &side=BUY
    &type=LIMIT
    &timeInForce=GTC
    &quantity=1
    &price=9000
    &recvWindow=5000
    ×tamp=1591702613943

Example 3: Mixed query string and request body#

Example 3

HMAC SHA256 signature:

    $ echo -n "symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=9000&timeInForce=GTC&recvWindow=5000&timestamp=1591702613943" | openssl dgst -sha256 -hmac "2b5eb11e18796d12d88f13dc27dbbd02c2cc51ff7059765ed9821957d82bb4d9"    (stdin)= 3c661234138461fcc7a7d8746c6558c9842d4e10870d2ecbedf7777cad694af9

curl command:

    (HMAC SHA256)    $ curl -H "X-MBX-APIKEY: dbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83" -X POST 'https://fapi/binance.com/fapi/v1/order?symbol=BTCUSDT&side=BUY&type=LIMIT&timeInForce=GTC' -d 'quantity=1&price=9000&recvWindow=5000&timestamp=1591702613943&signature=3c661234138461fcc7a7d8746c6558c9842d4e10870d2ecbedf7777cad694af9'
  • queryString: symbol=BTCUSDT&side=BUY&type=LIMIT&timeInForce=GTC
  • requestBody: quantity=1&price=9000&recvWindow=5000×tamp= 1591702613943

Note that the signature is different in example 3.
There is no & between "GTC" and "quantity=1".

SIGNED Endpoint Examples for POST /fapi/v1/order - RSA Keys#

  • This will be a step by step process how to create the signature payload to send a valid signed payload.
  • We support PKCS#8 currently.
  • To get your API key, you need to upload your RSA Public Key to your account and a corresponding API key will be provided for you.

For this example, the private key will be referenced as test-prv-key.pem

KeyValue
apiKeyvE3BDAL1gP1UaexugRLtteaAHg3UO8Nza20uexEuW1Kh3tVwQfFHdAiyjjY428o2
ParameterValue
symbolBTCUSDT
sideSELL
typeMARKET
quantity1.23
recvWindow9999999
timestamp1671090801999

Signature payload (with the listed parameters):

timestamp=1671090801999&recvWindow=9999999&symbol=BTCUSDT&side=SELL&type=MARKET&quantity=1.23

Step 1: Construct the payload

Arrange the list of parameters into a string. Separate each parameter with a &.

Step 2: Compute the signature:

2.1 - Encode signature payload as ASCII data.

Step 2.2

 $ echo -n 'timestamp=1671090801999&recvWindow=9999999&symbol=BTCUSDT&side=SELL&type=MARKET&quantity=1.23' | openssl dgst -keyform PEM -sha256 -sign ./test-prv-key.pem

2.2 - Sign payload using RSASSA-PKCS1-v1_5 algorithm with SHA-256 hash function.

Step 2.3

$ echo -n 'timestamp=1671090801999&recvWindow=9999999&symbol=BTCUSDT&side=SELL&type=MARKET&quantity=1.23' | openssl dgst -keyform PEM -sha256 -sign ./test-prv-key.pem | openssl enc -base64aap36wD5loVXizxvvPI3wz9Cjqwmb3KVbxoym0XeWG1jZq8umqrnSk8H8dkLQeySjgVY91Ufs%2BBGCW%2B4sZjQEpgAfjM76riNxjlD3coGGEsPsT2lG39R%2F1q72zpDs8pYcQ4A692NgHO1zXcgScTGgdkjp%2Brp2bcddKjyz5XBrBM%3D

2.3 - Encode output as base64 string.

Step 2.4

$  echo -n 'timestamp=1671090801999&recvWindow=9999999&symbol=BTCUSDT&side=SELL&type=MARKET&quantity=1.23' | openssl dgst -keyform PEM -sha256 -sign ./test-prv-key.pem | openssl enc -base64 | tr -d '\n'aap36wD5loVXizxvvPI3wz9Cjqwmb3KVbxoym0XeWG1jZq8umqrnSk8H8dkLQeySjgVY91Ufs%2BBGCW%2B4sZjQEpgAfjM76riNxjlD3coGGEsPsT2lG39R%2F1q72zpDs8pYcQ4A692NgHO1zXcgScTGgdkjp%2Brp2bcddKjyz5XBrBM%3D

2.4 - Delete any newlines in the signature.

Step 2.5

aap36wD5loVXizxvvPI3wz9Cjqwmb3KVbxoym0XeWG1jZq8umqrnSk8H8dkLQeySjgVY91Ufs%2BBGCW%2B4sZjQEpgAfjM76riNxjlD3coGGEsPsT2lG39R%2F1q72zpDs8pYcQ4A692NgHO1zXcgScTGgdkjp%2Brp2bcddKjyz5XBrBM%3D

2.5 - Since the signature may contain / and =, this could cause issues with sending the request. So the signature has to be URL encoded.

Step 2.6

 curl -H "X-MBX-APIKEY: vE3BDAL1gP1UaexugRLtteaAHg3UO8Nza20uexEuW1Kh3tVwQfFHdAiyjjY428o2" -X POST 'https://fapi.binance.com/fapi/v1/order?timestamp=1671090801999&recvWindow=9999999&symbol=BTCUSDT&side=SELL&type=MARKET&quantity=1.23&signature=aap36wD5loVXizxvvPI3wz9Cjqwmb3KVbxoym0XeWG1jZq8umqrnSk8H8dkLQeySjgVY91Ufs%2BBGCW%2B4sZjQEpgAfjM76riNxjlD3coGGEsPsT2lG39R%2F1q72zpDs8pYcQ4A692NgHO1zXcgScTGgdkjp%2Brp2bcddKjyz5XBrBM%3D'

2.6 - curl command

Bash script

#!/usr/bin/env bash
# Set up authentication:apiKey="vE3BDAL1gP1UaexugRLtteaAHg3UO8Nza20uexEuW1Kh3tVwQfFHdAiyjjY428o2"   ### REPLACE THIS WITH YOUR API KEY
# Set up the request:apiMethod="POST"apiCall="v1/order"apiParams="timestamp=1671090801999&recvWindow=9999999&symbol=BTCUSDT&side=SELL&type=MARKET&quantity=1.23"function rawurlencode {    local value="$1"    local len=${#value}    local encoded=""    local pos c o    for (( pos=0 ; pos<len ; pos++ ))    do        c=${value:$pos:1}        case "$c" in            [-_.~a-zA-Z0-9] ) o="${c}" ;;            * )   printf -v o '%%%02x' "'$c"        esac        encoded+="$o"    done    echo "$encoded"}ts=$(date +%s000)paramsWithTs="$apiParams&timestamp=$ts"rawSignature=$(echo -n "$paramsWithTs" \               | openssl dgst -keyform PEM -sha256 -sign ./test-prv-key.pem \  ### THIS IS YOUR PRIVATE KEY. DO NOT SHARE THIS FILE WITH ANYONE.               | openssl enc -base64 \               | tr -d '\n')signature=$(rawurlencode "$rawSignature")curl -H "X-MBX-APIKEY: $apiKey" -X $apiMethod \    "https://fapi.binance.com/fapi/$apiCall?$paramsWithTs&signature=$signature"

A sample Bash script containing similar steps is available in the right side.


Public Endpoints Info#

Terminology#

  • base asset refers to the asset that is the quantity of a symbol.
  • quote asset refers to the asset that is the price of a symbol.

ENUM definitions#

Symbol type:

  • FUTURE

Contract type (contractType):

  • PERPETUAL
  • CURRENT_MONTH
  • NEXT_MONTH
  • CURRENT_QUARTER
  • NEXT_QUARTER
  • PERPETUAL_DELIVERING

Contract status(contractStatus,status):

  • PENDING_TRADING
  • TRADING
  • PRE_DELIVERING
  • DELIVERING
  • DELIVERED
  • PRE_SETTLE
  • SETTLING
  • CLOSE

Order status (status):

  • NEW
  • PARTIALLY_FILLED
  • FILLED
  • CANCELED
  • REJECTED
  • EXPIRED

Order types (orderTypes, type):

  • LIMIT
  • MARKET
  • STOP
  • STOP_MARKET
  • TAKE_PROFIT
  • TAKE_PROFIT_MARKET
  • TRAILING_STOP_MARKET

Order side (side):

  • BUY
  • SELL

Position side (positionSide):

  • BOTH
  • LONG
  • SHORT

Time in force (timeInForce):

  • GTC - Good Till Cancel
  • IOC - Immediate or Cancel
  • FOK - Fill or Kill
  • GTX - Good Till Crossing (Post Only)

Working Type (workingType)

  • MARK_PRICE
  • CONTRACT_PRICE

Response Type (newOrderRespType)

  • ACK
  • RESULT

Kline/Candlestick chart intervals:

m -> minutes; h -> hours; d -> days; w -> weeks; M -> months

  • 1m
  • 3m
  • 5m
  • 15m
  • 30m
  • 1h
  • 2h
  • 4h
  • 6h
  • 8h
  • 12h
  • 1d
  • 3d
  • 1w
  • 1M

Rate limiters (rateLimitType)

REQUEST_WEIGHT

  {    "rateLimitType": "REQUEST_WEIGHT",    "interval": "MINUTE",    "intervalNum": 1,    "limit": 2400  }

ORDERS

  {    "rateLimitType": "ORDERS",    "interval": "MINUTE",    "intervalNum": 1,    "limit": 1200   }
  • REQUEST_WEIGHT

  • ORDERS

Rate limit intervals (interval)

  • MINUTE

Filters#

Filters define trading rules on a symbol or an exchange.

Symbol filters#

PRICE_FILTER#

/exchangeInfo format:

  {    "filterType": "PRICE_FILTER",    "minPrice": "0.00000100",    "maxPrice": "100000.00000000",    "tickSize": "0.00000100"  }

The PRICE_FILTER defines the price rules for a symbol. There are 3 parts:

  • minPrice defines the minimum price/stopPrice allowed; disabled on minPrice == 0.
  • maxPrice defines the maximum price/stopPrice allowed; disabled on maxPrice == 0.
  • tickSize defines the intervals that a price/stopPrice can be increased/decreased by; disabled on tickSize == 0.

Any of the above variables can be set to 0, which disables that rule in the price filter. In order to pass the price filter, the following must be true for price/stopPrice of the enabled rules:

  • price >= minPrice
  • price <= maxPrice
  • (price-minPrice) % tickSize == 0

LOT_SIZE#

/exchangeInfo format:

  {    "filterType": "LOT_SIZE",    "minQty": "0.00100000",    "maxQty": "100000.00000000",    "stepSize": "0.00100000"  }

The LOT_SIZE filter defines the quantity (aka "lots" in auction terms) rules for a symbol. There are 3 parts:

  • minQty defines the minimum quantity allowed.
  • maxQty defines the maximum quantity allowed.
  • stepSize defines the intervals that a quantity can be increased/decreased by.

In order to pass the lot size, the following must be true for quantity:

  • quantity >= minQty
  • quantity <= maxQty
  • (quantity-minQty) % stepSize == 0

MARKET_LOT_SIZE#

/exchangeInfo format:

  {    "filterType": "MARKET_LOT_SIZE",    "minQty": "0.00100000",    "maxQty": "100000.00000000",    "stepSize": "0.00100000"  }

The MARKET_LOT_SIZE filter defines the quantity (aka "lots" in auction terms) rules for MARKET orders on a symbol. There are 3 parts:

  • minQty defines the minimum quantity allowed.
  • maxQty defines the maximum quantity allowed.
  • stepSize defines the intervals that a quantity can be increased/decreased by.

In order to pass the market lot size, the following must be true for quantity:

  • quantity >= minQty
  • quantity <= maxQty
  • (quantity-minQty) % stepSize == 0

MAX_NUM_ORDERS#

/exchangeInfo format:

  {    "filterType": "MAX_NUM_ORDERS",    "limit": 200  }

The MAX_NUM_ORDERS filter defines the maximum number of orders an account is allowed to have open on a symbol.

Note that both "algo" orders and normal orders are counted for this filter.

MAX_NUM_ALGO_ORDERS#

/exchangeInfo format:

  {    "filterType": "MAX_NUM_ALGO_ORDERS",    "limit": 100  }

The MAX_NUM_ALGO_ORDERS filter defines the maximum number of all kinds of algo orders an account is allowed to have open on a symbol.

The algo orders include STOP, STOP_MARKET, TAKE_PROFIT, TAKE_PROFIT_MARKET, and TRAILING_STOP_MARKET orders.

PERCENT_PRICE#

/exchangeInfo format:

  {    "filterType": "PERCENT_PRICE",    "multiplierUp": "1.1500",    "multiplierDown": "0.8500",    "multiplierDecimal": 4  }

The PERCENT_PRICE filter defines valid range for a price based on the mark price.

In order to pass the percent price, the following must be true for price:

  • BUY: price <= markPrice * multiplierUp
  • SELL: price >= markPrice * multiplierDown

MIN_NOTIONAL#

/exchangeInfo format:

  {    "filterType": "MIN_NOTIONAL",    "notional": "5.0"  }

The MIN_NOTIONAL filter defines the minimum notional value allowed for an order on a symbol. An order's notional value is the price * quantity. Since MARKET orders have no price, the mark price is used.


Postman Collections#

There is now a Postman collection containing the API endpoints for quick and easy use.

For more information please refer to this page: Binance API Postman

Market Data Endpoints

Test Connectivity#

Response:

{}

GET /fapi/v1/ping

Test connectivity to the Rest API.

Weight: 1

Parameters: NONE

Check Server Time#

Response:

{  "serverTime": 1499827319559}

GET /fapi/v1/time

Test connectivity to the Rest API and get the current server time.

Weight: 1

Parameters: NONE

Exchange Information#

Response:

{    "exchangeFilters": [],    "rateLimits": [        {            "interval": "MINUTE",            "intervalNum": 1,            "limit": 2400,            "rateLimitType": "REQUEST_WEIGHT"         },        {            "interval": "MINUTE",            "intervalNum": 1,            "limit": 1200,            "rateLimitType": "ORDERS"        }    ],    "serverTime": 1565613908500,    // Ignore please. If you want to check current server time, please check via "GET /fapi/v1/time"    "assets": [ // assets information        {            "asset": "BUSD",            "marginAvailable": true, // whether the asset can be used as margin in Multi-Assets mode            "autoAssetExchange": 0 // auto-exchange threshold in Multi-Assets margin mode        },        {            "asset": "USDT",            "marginAvailable": true,            "autoAssetExchange": 0        },        {            "asset": "BNB",            "marginAvailable": false,            "autoAssetExchange": null        }    ],    "symbols": [        {            "symbol": "BLZUSDT",            "pair": "BLZUSDT",            "contractType": "PERPETUAL",            "deliveryDate": 4133404800000,            "onboardDate": 1598252400000,            "status": "TRADING",            "maintMarginPercent": "2.5000",   // ignore            "requiredMarginPercent": "5.0000",  // ignore            "baseAsset": "BLZ",             "quoteAsset": "USDT",            "marginAsset": "USDT",            "pricePrecision": 5,    // please do not use it as tickSize            "quantityPrecision": 0, // please do not use it as stepSize            "baseAssetPrecision": 8,            "quotePrecision": 8,             "underlyingType": "COIN",            "underlyingSubType": ["STORAGE"],            "settlePlan": 0,            "triggerProtect": "0.15", // threshold for algo order with "priceProtect"            "filters": [                {                    "filterType": "PRICE_FILTER",                    "maxPrice": "300",                    "minPrice": "0.0001",                     "tickSize": "0.0001"                },                {                    "filterType": "LOT_SIZE",                     "maxQty": "10000000",                    "minQty": "1",                    "stepSize": "1"                },                {                    "filterType": "MARKET_LOT_SIZE",                    "maxQty": "590119",                    "minQty": "1",                    "stepSize": "1"                },                {                    "filterType": "MAX_NUM_ORDERS",                    "limit": 200                },                {                    "filterType": "MAX_NUM_ALGO_ORDERS",                    "limit": 100                },                {                    "filterType": "MIN_NOTIONAL",                    "notional": "5.0",                 },                {                    "filterType": "PERCENT_PRICE",                    "multiplierUp": "1.1500",                    "multiplierDown": "0.8500",                    "multiplierDecimal": 4                }            ],            "OrderType": [                "LIMIT",                "MARKET",                "STOP",                "STOP_MARKET",                "TAKE_PROFIT",                "TAKE_PROFIT_MARKET",                "TRAILING_STOP_MARKET"             ],            "timeInForce": [                "GTC",                 "IOC",                 "FOK",                 "GTX"             ],            "liquidationFee": "0.010000",   // liquidation fee rate            "marketTakeBound": "0.30",  // the max price difference rate( from mark price) a market order can make        }    ],    "timezone": "UTC" }

GET /fapi/v1/exchangeInfo

Current exchange trading rules and symbol information

Weight: 1

Parameters: NONE

Order Book#

Response:

{  "lastUpdateId": 1027024,  "E": 1589436922972,   // Message output time  "T": 1589436922959,   // Transaction time  "bids": [    [      "4.00000000",     // PRICE      "431.00000000"    // QTY    ]  ],  "asks": [    [      "4.00000200",      "12.00000000"    ]  ]}

GET /fapi/v1/depth

Weight:

Adjusted based on the limit:

LimitWeight
5, 10, 20, 502
1005
50010
100020

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
limitINTNODefault 500; Valid limits:[5, 10, 20, 50, 100, 500, 1000]

Recent Trades List#

Response:

[  {    "id": 28457,    "price": "4.00000100",    "qty": "12.00000000",    "quoteQty": "48.00",    "time": 1499865549590,    "isBuyerMaker": true,  }]

GET /fapi/v1/trades

Get recent market trades

Weight: 5

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
limitINTNODefault 500; max 1000.
  • Market trades means trades filled in the order book. Only market trades will be returned, which means the insurance fund trades and ADL trades won't be returned.

Old Trades Lookup (MARKET_DATA)#

Response:

[  {    "id": 28457,    "price": "4.00000100",    "qty": "12.00000000",    "quoteQty": "8000.00",    "time": 1499865549590,    "isBuyerMaker": true,  }]

GET /fapi/v1/historicalTrades

Get older market historical trades.

Weight: 20

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
limitINTNODefault 500; max 1000.
fromIdLONGNOTradeId to fetch from. Default gets most recent trades.
  • Market trades means trades filled in the order book. Only market trades will be returned, which means the insurance fund trades and ADL trades won't be returned.

Compressed/Aggregate Trades List#

Response:

[  {    "a": 26129,         // Aggregate tradeId    "p": "0.01633102",  // Price    "q": "4.70443515",  // Quantity    "f": 27781,         // First tradeId    "l": 27781,         // Last tradeId    "T": 1498793709153, // Timestamp    "m": true,          // Was the buyer the maker?  }]

GET /fapi/v1/aggTrades

Get compressed, aggregate market trades. Market trades that fill in 100ms with the same price and the same taking side will have the quantity aggregated.

Weight: 20

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
fromIdLONGNOID to get aggregate trades from INCLUSIVE.
startTimeLONGNOTimestamp in ms to get aggregate trades from INCLUSIVE.
endTimeLONGNOTimestamp in ms to get aggregate trades until INCLUSIVE.
limitINTNODefault 500; max 1000.
  • If both startTime and endTime are sent, time between startTime and endTime must be less than 1 hour.
  • If fromId, startTime, and endTime are not sent, the most recent aggregate trades will be returned.
  • Only market trades will be aggregated and returned, which means the insurance fund trades and ADL trades won't be aggregated.
  • Sending both startTime/endTime and fromId might cause response timeout, please send either fromId or startTime/endTime

Kline/Candlestick Data#

Response:

[  [    1499040000000,      // Open time    "0.01634790",       // Open    "0.80000000",       // High    "0.01575800",       // Low    "0.01577100",       // Close    "148976.11427815",  // Volume    1499644799999,      // Close time    "2434.19055334",    // Quote asset volume    308,                // Number of trades    "1756.87402397",    // Taker buy base asset volume    "28.46694368",      // Taker buy quote asset volume    "17928899.62484339" // Ignore.  ]]

GET /fapi/v1/klines

Kline/candlestick bars for a symbol. Klines are uniquely identified by their open time.

Weight: based on parameter LIMIT

LIMITweight
[1,100)1
[100, 500)2
[500, 1000]5
> 100010

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
intervalENUMYES
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1500.
  • If startTime and endTime are not sent, the most recent klines are returned.

Continuous Contract Kline/Candlestick Data#

Response:

[  [    1607444700000,          // Open time    "18879.99",             // Open    "18900.00",             // High    "18878.98",             // Low    "18896.13",             // Close (or latest price)    "492.363",              // Volume    1607444759999,          // Close time    "9302145.66080",        // Quote asset volume    1874,                   // Number of trades    "385.983",              // Taker buy volume    "7292402.33267",        // Taker buy quote asset volume    "0"                     // Ignore.  ]]

GET /fapi/v1/continuousKlines

Kline/candlestick bars for a specific contract type.

Klines are uniquely identified by their open time.

Weight: based on parameter LIMIT

LIMITweight
[1,100)1
[100, 500)2
[500, 1000]5
> 100010

Parameters:

NameTypeMandatoryDescription
pairSTRINGYES
contractTypeENUMYES
intervalENUMYES
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1500.
  • If startTime and endTime are not sent, the most recent klines are returned.

  • Contract type:

    • PERPETUAL
    • CURRENT_QUARTER
    • NEXT_QUARTER

Index Price Kline/Candlestick Data#

Response:

[  [    1591256400000,          // Open time    "9653.69440000",        // Open    "9653.69640000",        // High    "9651.38600000",        // Low    "9651.55200000",        // Close (or latest price)    "0  ",                  // Ignore    1591256459999,          // Close time    "0",                    // Ignore    60,                     // Ignore    "0",                    // Ignore    "0",                    // Ignore    "0"                     // Ignore  ]]

GET /fapi/v1/indexPriceKlines

Kline/candlestick bars for the index price of a pair.

Klines are uniquely identified by their open time.

Weight: based on parameter LIMIT

LIMITweight
[1,100)1
[100, 500)2
[500, 1000]5
> 100010

Parameters:

NameTypeMandatoryDescription
pairSTRINGYES
intervalENUMYES
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1500.
  • If startTime and endTime are not sent, the most recent klines are returned.

Mark Price Kline/Candlestick Data#

Response:

[  [    1591256460000,          // Open time    "9653.29201333",        // Open    "9654.56401333",        // High    "9653.07367333",        // Low    "9653.07367333",        // Close (or latest price)    "0  ",                  // Ignore    1591256519999,          // Close time    "0",                    // Ignore    60,                     // Ignore    "0",                    // Ignore    "0",                    // Ignore    "0"                     // Ignore  ]]

GET /fapi/v1/markPriceKlines

Kline/candlestick bars for the mark price of a symbol.

Klines are uniquely identified by their open time.

Weight: based on parameter LIMIT

LIMITweight
[1,100)1
[100, 500)2
[500, 1000]5
> 100010

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
intervalENUMYES
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1500.
  • If startTime and endTime are not sent, the most recent klines are returned.

Mark Price#

Response:

{    "symbol": "BTCUSDT",    "markPrice": "11793.63104562",  // mark price    "indexPrice": "11781.80495970", // index price    "estimatedSettlePrice": "11781.16138815", // Estimated Settle Price, only useful in the last hour before the settlement starts.    "lastFundingRate": "0.00038246",  // This is the lasted funding rate    "nextFundingTime": 1597392000000,    "interestRate": "0.00010000",    "time": 1597370495002}

OR (when symbol not sent)

[    {        "symbol": "BTCUSDT",        "markPrice": "11793.63104562",  // mark price        "indexPrice": "11781.80495970", // index price        "estimatedSettlePrice": "11781.16138815", // Estimated Settle Price, only useful in the last hour before the settlement starts.        "lastFundingRate": "0.00038246",  // This is the lasted funding rate        "nextFundingTime": 1597392000000,        "interestRate": "0.00010000",           "time": 1597370495002    }]

GET /fapi/v1/premiumIndex

Mark Price and Funding Rate

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO

Get Funding Rate History#

Response:

[    {        "symbol": "BTCUSDT",        "fundingRate": "-0.03750000",        "fundingTime": 1570608000000,    },    {        "symbol": "BTCUSDT",        "fundingRate": "0.00010000",        "fundingTime": 1570636800000,    }]

GET /fapi/v1/fundingRate

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
startTimeLONGNOTimestamp in ms to get funding rate from INCLUSIVE.
endTimeLONGNOTimestamp in ms to get funding rate until INCLUSIVE.
limitINTNODefault 100; max 1000
  • If startTime and endTime are not sent, the most recent limit datas are returned.
  • If the number of data between startTime and endTime is larger than limit, return as startTime + limit.
  • In ascending order.

24hr Ticker Price Change Statistics#

Response:

{  "symbol": "BTCUSDT",  "priceChange": "-94.99999800",  "priceChangePercent": "-95.960",  "weightedAvgPrice": "0.29628482",  "lastPrice": "4.00000200",  "lastQty": "200.00000000",  "openPrice": "99.00000000",  "highPrice": "100.00000000",  "lowPrice": "0.10000000",  "volume": "8913.30000000",  "quoteVolume": "15.30000000",  "openTime": 1499783499040,  "closeTime": 1499869899040,  "firstId": 28385,   // First tradeId  "lastId": 28460,    // Last tradeId  "count": 76         // Trade count}

OR

[    {        "symbol": "BTCUSDT",        "priceChange": "-94.99999800",        "priceChangePercent": "-95.960",        "weightedAvgPrice": "0.29628482",        "lastPrice": "4.00000200",        "lastQty": "200.00000000",        "openPrice": "99.00000000",        "highPrice": "100.00000000",        "lowPrice": "0.10000000",        "volume": "8913.30000000",        "quoteVolume": "15.30000000",        "openTime": 1499783499040,        "closeTime": 1499869899040,        "firstId": 28385,   // First tradeId        "lastId": 28460,    // Last tradeId        "count": 76         // Trade count    }]

GET /fapi/v1/ticker/24hr

24 hour rolling window price change statistics.
Careful when accessing this with no symbol.

Weight:

1 for a single symbol;
40 when the symbol parameter is omitted

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
  • If the symbol is not sent, tickers for all symbols will be returned in an array.

Symbol Price Ticker#

Response:

{  "symbol": "BTCUSDT",  "price": "6000.01",  "time": 1589437530011   // Transaction time}

OR

[    {        "symbol": "BTCUSDT",        "price": "6000.01",        "time": 1589437530011    }]

GET /fapi/v1/ticker/price

Latest price for a symbol or symbols.

Weight:

1 for a single symbol;
2 when the symbol parameter is omitted

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
  • If the symbol is not sent, prices for all symbols will be returned in an array.

Symbol Order Book Ticker#

Response:

{  "symbol": "BTCUSDT",  "bidPrice": "4.00000000",  "bidQty": "431.00000000",  "askPrice": "4.00000200",  "askQty": "9.00000000",  "time": 1589437530011   // Transaction time}

OR

[    {        "symbol": "BTCUSDT",        "bidPrice": "4.00000000",        "bidQty": "431.00000000",        "askPrice": "4.00000200",        "askQty": "9.00000000",        "time": 1589437530011    }]

GET /fapi/v1/ticker/bookTicker

Best price/qty on the order book for a symbol or symbols.

Weight:

2 for a single symbol;
5 when the symbol parameter is omitted

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
  • If the symbol is not sent, bookTickers for all symbols will be returned in an array.
  • The field X-MBX-USED-WEIGHT-1M in response header is not accurate from this endpoint, please ignore.

Open Interest#

Response:

{    "openInterest": "10659.509",     "symbol": "BTCUSDT",    "time": 1589437530011   // Transaction time}

GET /fapi/v1/openInterest

Get present open interest of a specific symbol.

Weight:
1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES

Open Interest Statistics#

Response:

[    {          "symbol":"BTCUSDT",          "sumOpenInterest":"20403.63700000",  // total open interest           "sumOpenInterestValue": "150570784.07809979",   // total open interest value          "timestamp":"1583127900000"         },          {              "symbol":"BTCUSDT",         "sumOpenInterest":"20401.36700000",         "sumOpenInterestValue":"149940752.14464448",         "timestamp":"1583128200000"                 },           ]

GET /futures/data/openInterestHist

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
periodENUMYES"5m","15m","30m","1h","2h","4h","6h","12h","1d"
limitLONGNOdefault 30, max 500
startTimeLONGNO
endTimeLONGNO
  • If startTime and endTime are not sent, the most recent data is returned.
  • Only the data of the latest 30 days is available.

Top Trader Long/Short Ratio (Accounts)#

Response:

[    {          "symbol":"BTCUSDT",          "longShortRatio":"1.8105",  // long/short account num ratio of top traders          "longAccount": "0.6442",   // long account num ratio of top traders           "shortAccount":"0.3558",   // long account num ratio of top traders           "timestamp":"1583139600000"         },          {                  "symbol":"BTCUSDT",          "longShortRatio":"0.5576",          "longAccount": "0.3580",           "shortAccount":"0.6420",                            "timestamp":"1583139900000"                           },           ]

GET /futures/data/topLongShortAccountRatio

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
periodENUMYES"5m","15m","30m","1h","2h","4h","6h","12h","1d"
limitLONGNOdefault 30, max 500
startTimeLONGNO
endTimeLONGNO
  • If startTime and endTime are not sent, the most recent data is returned.
  • Only the data of the latest 30 days is available.

Top Trader Long/Short Ratio (Positions)#

Response:

[    {          "symbol":"BTCUSDT",          "longShortRatio":"1.4342",// long/short position ratio of top traders          "longAccount": "0.5891", // long positions ratio of top traders          "shortAccount":"0.4108", // short positions ratio of top traders          "timestamp":"1583139600000"         },          {                  "symbol":"BTCUSDT",          "longShortRatio":"1.4337",          "longAccount": "0.3583",           "shortAccount":"0.6417",                            "timestamp":"1583139900000"                           },           ]

GET /futures/data/topLongShortPositionRatio

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
periodENUMYES"5m","15m","30m","1h","2h","4h","6h","12h","1d"
limitLONGNOdefault 30, max 500
startTimeLONGNO
endTimeLONGNO
  • If startTime and endTime are not sent, the most recent data is returned.
  • Only the data of the latest 30 days is available.

Long/Short Ratio#

Response:

[    {          "symbol":"BTCUSDT",  // long/short account num ratio of all traders          "longShortRatio":"0.1960",  //long account num ratio of all traders          "longAccount": "0.6622",   // short account num ratio of all traders          "shortAccount":"0.3378",           "timestamp":"1583139600000"         },          {                  "symbol":"BTCUSDT",          "longShortRatio":"1.9559",          "longAccount": "0.6617",           "shortAccount":"0.3382",                            "timestamp":"1583139900000"                           },           ]

GET /futures/data/globalLongShortAccountRatio

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
periodENUMYES"5m","15m","30m","1h","2h","4h","6h","12h","1d"
limitLONGNOdefault 30, max 500
startTimeLONGNO
endTimeLONGNO
  • If startTime and endTime are not sent, the most recent data is returned.
  • Only the data of the latest 30 days is available.

Taker Buy/Sell Volume#

Response:

[    {           "buySellRatio":"1.5586",          "buyVol": "387.3300",           "sellVol":"248.5030",           "timestamp":"1585614900000"         },          {               "buySellRatio":"1.3104",          "buyVol": "343.9290",           "sellVol":"248.5030",                               "timestamp":"1583139900000"                           },           ]

GET /futures/data/takerlongshortRatio

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
periodENUMYES"5m","15m","30m","1h","2h","4h","6h","12h","1d"
limitLONGNOdefault 30, max 500
startTimeLONGNO
endTimeLONGNO
  • If startTime and endTime are not sent, the most recent data is returned.
  • Only the data of the latest 30 days is available.

Historical BLVT NAV Kline/Candlestick#

Response:

[    [        1598371200000,      // Open time        "5.88275270",       // Open NAV price        "6.03142087",       // Highest NAV price        "5.85749741",       // Lowest NAV price        "5.99403551",       // Close (or the latest) NAV price        "2.28602984",       // Real leverage        1598374799999,      // Close time        "0",                // Ignore        6209,               // Number of NAV update        "14517.64507907",   // Ignore        "0",                // Ignore        "0"                 // Ignore    ]]

GET /fapi/v1/lvtKlines

The BLVT NAV system is based on Binance Futures, so the endpoint is based on fapi

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYEStoken name, e.g. "BTCDOWN", "BTCUP"
intervalENUMYES
startTimeLONGNO
endTimeLONGNO
limitINTNOdefault 500, max 1000

Composite Index Symbol Information#

Response:

[    {         "symbol": "DEFIUSDT",        "time": 1589437530011,    // Current time        "component": "baseAsset", //Component asset        "baseAssetList":[            {                "baseAsset":"BAL",                "quoteAsset": "USDT",                "weightInQuantity":"1.04406228",                "weightInPercentage":"0.02783900"            },            {                "baseAsset":"BAND",                "quoteAsset": "USDT",                "weightInQuantity":"3.53782729",                "weightInPercentage":"0.03935200"            }        ]    }]

GET /fapi/v1/indexInfo

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
  • Only for composite index symbols

Multi-Assets Mode Asset Index#

Response:

{    "symbol": "ADAUSD",    "time": 1635740268004,    "index": "1.92957370",    "bidBuffer": "0.10000000",     "askBuffer": "0.10000000",     "bidRate": "1.73661633",    "askRate": "2.12253107",    "autoExchangeBidBuffer": "0.05000000",    "autoExchangeAskBuffer": "0.05000000",    "autoExchangeBidRate": "1.83309501",    "autoExchangeAskRate": "2.02605238"}

Or(without symbol)

[    {        "symbol": "ADAUSD",        "time": 1635740268004,        "index": "1.92957370",        "bidBuffer": "0.10000000",         "askBuffer": "0.10000000",         "bidRate": "1.73661633",        "askRate": "2.12253107",        "autoExchangeBidBuffer": "0.05000000",        "autoExchangeAskBuffer": "0.05000000",        "autoExchangeBidRate": "1.83309501",        "autoExchangeAskRate": "2.02605238"    }]

GET /fapi/v1/assetIndex

asset index for Multi-Assets mode

Weight: 1 for a single symbol; 10 when the symbol parameter is omitted

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNOAsset pair

Websocket Market Streams

  • There are two connection methods for Websocket:

    • Base Url 1: wss://fstream.binance.com

    • Streams can be access either in a single raw stream or a combined stream

    • Raw streams are accessed at /ws/\<streamName>

    • Combined streams are accessed at /stream?streams=\<streamName1>/\<streamName2>/\<streamName3>

    • Example:

    • wss://fstream.binance.com/ws/bnbusdt@aggTrade

    • wss://fstream.binance.com/stream?streams=bnbusdt@aggTrade/btcusdt@markPrice

    • Base Url 2: wss://fstream-auth.binance.com

    • Streams can be access either in a single raw stream or a combined stream

    • Raw streams are accessed at /ws/\<streamName>?listenKey=\<validateListenKey>

    • Combined streams are accessed at /stream?streams=\<streamName1>/\<streamName2>/\<streamName3>&listenKey=\<validateListenKey>

    • \<validateListenKey> must be a valid listenKey when you establish a connection

    • Example:

    • wss://fstream-auth.binance.com/ws/btcusdt@markPrice?listenKey=XaEAKTsQSRLZAGH9tuIu37plSRsdjmlAVBoNYPUITlTAko1WI22PgmBMpI1rS8Yh

    • wss://fstream-auth.binance.com/stream?streams=btcusdt@markPrice@1s/bnbusdt@markPrice&listenKey=XaEAKTsQSRLZAGH9tuIu37plSRsdjmlAVBoNYPUITlTAko1WI22PgmBMpI1rS8Yh

  • Combined stream events are wrapped as follows: {"stream":"\<streamName>","data":\<rawPayload>}
  • All symbols for streams are lowercase
  • A single connection is only valid for 24 hours; expect to be disconnected at the 24 hour mark
  • The websocket server will send a ping frame every 5 minutes. If the websocket server does not receive a pong frame back from the connection within a 15 minute period, the connection will be disconnected. Unsolicited pong frames are allowed.
  • WebSocket connections have a limit of 10 incoming messages per second.
  • A connection that goes beyond the limit will be disconnected; IPs that are repeatedly disconnected may be banned.
  • A single connection can listen to a maximum of 200 streams.
  • Considering the possible data latency from RESTful endpoints during an extremely volatile market, it is highly recommended to get the order status, position, etc from the Websocket user data stream.

Live Subscribing/Unsubscribing to streams#

  • The following data can be sent through the websocket instance in order to subscribe/unsubscribe from streams. Examples can be seen below.
  • The id used in the JSON payloads is an unsigned INT used as an identifier to uniquely identify the messages going back and forth.

Subscribe to a stream#

Response

{  "result": null,  "id": 1}
  • Request

    {    

    "method": "SUBSCRIBE",
    "params":
    [
    "btcusdt@aggTrade",
    "btcusdt@depth"
    ],
    "id": 1
    }

Unsubscribe to a stream#

Response

{  "result": null,  "id": 312}
  • Request

    {
    "method": "UNSUBSCRIBE",
    "params":
    [
    "btcusdt@depth"
    ],
    "id": 312
    }

Listing Subscriptions#

Response

{  "result": [    "btcusdt@aggTrade"  ],  "id": 3}
  • Request

    {
    "method": "LIST_SUBSCRIPTIONS",
    "id": 3
    }

Setting Properties#

Currently, the only property can be set is to set whether combined stream payloads are enabled are not. The combined property is set to false when connecting using /ws/ ("raw streams") and true when connecting using /stream/.

Response

{  "result": null,  "id": 5}
  • Request

    {
    "method": "SET_PROPERTY",
    "params":
    [
    "combined",
    true
    ],
    "id": 5
    }

Retrieving Properties#

Response

{  "result": true, // Indicates that combined is set to true.  "id": 2}
  • Request

    {
    "method": "GET_PROPERTY",
    "params":
    [
    "combined"
    ],
    "id": 2
    }

Error Messages#

Error MessageDescription
{"code": 0, "msg": "Unknown property"}Parameter used in the SET_PROPERTY or GET_PROPERTY was invalid
{"code": 1, "msg": "Invalid value type: expected Boolean"}Value should only be true or false
{"code": 2, "msg": "Invalid request: property name must be a string"}Property name provided was invalid
{"code": 2, "msg": "Invalid request: request ID must be an unsigned integer"}Parameter id had to be provided or the value provided in the id parameter is an unsupported type
{"code": 2, "msg": "Invalid request: unknown variant %s, expected one of SUBSCRIBE, UNSUBSCRIBE, LIST_SUBSCRIPTIONS, SET_PROPERTY, GET_PROPERTY at line 1 column 28"}Possible typo in the provided method or provided method was neither of the expected values
{"code": 2, "msg": "Invalid request: too many parameters"}Unnecessary parameters provided in the data
{"code": 2, "msg": "Invalid request: property name must be a string"}Property name was not provided
{"code": 2, "msg": "Invalid request: missing field method at line 1 column 73"}method was not provided in the data
{"code":3,"msg":"Invalid JSON: expected value at line %s column %s"}JSON data sent has incorrect syntax.

Aggregate Trade Streams#

Payload:

{  "e": "aggTrade",  // Event type  "E": 123456789,   // Event time  "s": "BTCUSDT",    // Symbol  "a": 5933014,     // Aggregate trade ID  "p": "0.001",     // Price  "q": "100",       // Quantity  "f": 100,         // First trade ID  "l": 105,         // Last trade ID  "T": 123456785,   // Trade time  "m": true,        // Is the buyer the market maker?}

The Aggregate Trade Streams push market trade information that is aggregated for fills with same price and taking side every 100 milliseconds.

Stream Name:
<symbol>@aggTrade

Update Speed: 100ms

  • Only market trades will be aggregated, which means the insurance fund trades and ADL trades won't be aggregated.

Mark Price Stream#

Payload:

  {    "e": "markPriceUpdate",     // Event type    "E": 1562305380000,         // Event time    "s": "BTCUSDT",             // Symbol    "p": "11794.15000000",      // Mark price    "i": "11784.62659091",      // Index price    "P": "11784.25641265",      // Estimated Settle Price, only useful in the last hour before the settlement starts    "r": "0.00038167",          // Funding rate    "T": 1562306400000          // Next funding time  }

Mark price and funding rate for a single symbol pushed every 3 seconds or every second.

Stream Name:
<symbol>@markPrice or <symbol>@markPrice@1s

Update Speed: 3000ms or 1000ms

Mark Price Stream for All market#

Payload:

[   {    "e": "markPriceUpdate",     // Event type    "E": 1562305380000,         // Event time    "s": "BTCUSDT",             // Symbol    "p": "11185.87786614",      // Mark price    "i": "11784.62659091"       // Index price    "P": "11784.25641265",      // Estimated Settle Price, only useful in the last hour before the settlement starts    "r": "0.00030000",          // Funding rate    "T": 1562306400000          // Next funding time  }]

Mark price and funding rate for all symbols pushed every 3 seconds or every second.

Stream Name:
!markPrice@arr or !markPrice@arr@1s

Update Speed: 3000ms or 1000ms

Kline/Candlestick Streams#

Payload:

{  "e": "kline",     // Event type  "E": 1638747660000,   // Event time  "s": "BTCUSDT",    // Symbol  "k": {    "t": 1638747660000, // Kline start time    "T": 1638747719999, // Kline close time    "s": "BTCUSDT",  // Symbol    "i": "1m",      // Interval    "f": 100,       // First trade ID    "L": 200,       // Last trade ID    "o": "0.0010",  // Open price    "c": "0.0020",  // Close price    "h": "0.0025",  // High price    "l": "0.0015",  // Low price    "v": "1000",    // Base asset volume    "n": 100,       // Number of trades    "x": false,     // Is this kline closed?    "q": "1.0000",  // Quote asset volume    "V": "500",     // Taker buy base asset volume    "Q": "0.500",   // Taker buy quote asset volume    "B": "123456"   // Ignore  }}

The Kline/Candlestick Stream push updates to the current klines/candlestick every 250 milliseconds (if existing).

Kline/Candlestick chart intervals:

m -> minutes; h -> hours; d -> days; w -> weeks; M -> months

  • 1m
  • 3m
  • 5m
  • 15m
  • 30m
  • 1h
  • 2h
  • 4h
  • 6h
  • 8h
  • 12h
  • 1d
  • 3d
  • 1w
  • 1M

Stream Name:
<symbol>@kline_<interval>

Update Speed: 250ms

Continuous Contract Kline/Candlestick Streams#

Payload:

{  "e":"continuous_kline",   // Event type  "E":1607443058651,        // Event time  "ps":"BTCUSDT",           // Pair  "ct":"PERPETUAL"          // Contract type  "k":{    "t":1607443020000,      // Kline start time    "T":1607443079999,      // Kline close time    "i":"1m",               // Interval    "f":116467658886,       // First trade ID    "L":116468012423,       // Last trade ID    "o":"18787.00",         // Open price    "c":"18804.04",         // Close price    "h":"18804.04",         // High price    "l":"18786.54",         // Low price    "v":"197.664",          // volume    "n": 543,               // Number of trades    "x":false,              // Is this kline closed?    "q":"3715253.19494",    // Quote asset volume    "V":"184.769",          // Taker buy volume    "Q":"3472925.84746",    //Taker buy quote asset volume    "B":"0"                 // Ignore  }}

Contract type:

  • perpetual
  • current_quarter
  • next_quarter

Kline/Candlestick chart intervals:

m -> minutes; h -> hours; d -> days; w -> weeks; M -> months

  • 1m
  • 3m
  • 5m
  • 15m
  • 30m
  • 1h
  • 2h
  • 4h
  • 6h
  • 8h
  • 12h
  • 1d
  • 3d
  • 1w
  • 1M

Stream Name:
<pair>_<contractType>@continuousKline_<interval>

Update Speed: 250ms

Individual Symbol Mini Ticker Stream#

Payload:

  {    "e": "24hrMiniTicker",  // Event type    "E": 123456789,         // Event time    "s": "BTCUSDT",         // Symbol    "c": "0.0025",          // Close price    "o": "0.0010",          // Open price    "h": "0.0025",          // High price    "l": "0.0010",          // Low price    "v": "10000",           // Total traded base asset volume    "q": "18"               // Total traded quote asset volume  }

24hr rolling window mini-ticker statistics for a single symbol. These are NOT the statistics of the UTC day, but a 24hr rolling window from requestTime to 24hrs before.

Stream Name:
<symbol>@miniTicker

Update Speed: 500ms

All Market Mini Tickers Stream#

Payload:

[    {    "e": "24hrMiniTicker",  // Event type    "E": 123456789,         // Event time    "s": "BTCUSDT",         // Symbol    "c": "0.0025",          // Close price    "o": "0.0010",          // Open price    "h": "0.0025",          // High price    "l": "0.0010",          // Low price    "v": "10000",           // Total traded base asset volume    "q": "18"               // Total traded quote asset volume  }]

24hr rolling window mini-ticker statistics for all symbols. These are NOT the statistics of the UTC day, but a 24hr rolling window from requestTime to 24hrs before. Note that only tickers that have changed will be present in the array.

Stream Name:
!miniTicker@arr

Update Speed: 1000ms

Individual Symbol Ticker Streams#

Payload:

{  "e": "24hrTicker",  // Event type  "E": 123456789,     // Event time  "s": "BTCUSDT",     // Symbol  "p": "0.0015",      // Price change  "P": "250.00",      // Price change percent  "w": "0.0018",      // Weighted average price  "c": "0.0025",      // Last price  "Q": "10",          // Last quantity  "o": "0.0010",      // Open price  "h": "0.0025",      // High price  "l": "0.0010",      // Low price  "v": "10000",       // Total traded base asset volume  "q": "18",          // Total traded quote asset volume  "O": 0,             // Statistics open time  "C": 86400000,      // Statistics close time  "F": 0,             // First trade ID  "L": 18150,         // Last trade Id  "n": 18151          // Total number of trades}

24hr rolling window ticker statistics for a single symbol. These are NOT the statistics of the UTC day, but a 24hr rolling window from requestTime to 24hrs before.

Stream Name:
<symbol>@ticker

Update Speed: 500ms

All Market Tickers Streams#

Payload:

[    {      "e": "24hrTicker",  // Event type      "E": 123456789,     // Event time      "s": "BTCUSDT",     // Symbol      "p": "0.0015",      // Price change      "P": "250.00",      // Price change percent      "w": "0.0018",      // Weighted average price      "c": "0.0025",      // Last price      "Q": "10",          // Last quantity      "o": "0.0010",      // Open price      "h": "0.0025",      // High price      "l": "0.0010",      // Low price      "v": "10000",       // Total traded base asset volume      "q": "18",          // Total traded quote asset volume      "O": 0,             // Statistics open time      "C": 86400000,      // Statistics close time      "F": 0,             // First trade ID      "L": 18150,         // Last trade Id      "n": 18151          // Total number of trades    }]

24hr rolling window ticker statistics for all symbols. These are NOT the statistics of the UTC day, but a 24hr rolling window from requestTime to 24hrs before. Note that only tickers that have changed will be present in the array.

Stream Name:
!ticker@arr

Update Speed: 1000ms

Individual Symbol Book Ticker Streams#

Payload:

{  "e":"bookTicker",         // event type  "u":400900217,            // order book updateId  "E": 1568014460893,       // event time  "T": 1568014460891,       // transaction time  "s":"BNBUSDT",            // symbol  "b":"25.35190000",        // best bid price  "B":"31.21000000",        // best bid qty  "a":"25.36520000",        // best ask price  "A":"40.66000000"         // best ask qty}

Pushes any update to the best bid or ask's price or quantity in real-time for a specified symbol.

Stream Name: <symbol>@bookTicker

Update Speed: Real-time

All Book Tickers Stream#

Payload:

{  // Same as <symbol>@bookTicker payload}

Pushes any update to the best bid or ask's price or quantity in real-time for all symbols.

Stream Name: !bookTicker

Update Speed: Real-time

##Liquidation Order Streams

Payload:

{
    "e":"forceOrder",                   // Event Type    "E":1568014460893,                  // Event Time    "o":{            "s":"BTCUSDT",                   // Symbol        "S":"SELL",                      // Side        "o":"LIMIT",                     // Order Type        "f":"IOC",                       // Time in Force        "q":"0.014",                     // Original Quantity        "p":"9910",                      // Price        "ap":"9910",                     // Average Price        "X":"FILLED",                    // Order Status        "l":"0.014",                     // Order Last Filled Quantity        "z":"0.014",                     // Order Filled Accumulated Quantity        "T":1568014460893,               // Order Trade Time        }
}

The Liquidation Order Snapshot Streams push force liquidation order information for specific symbol.

For each symbol,only the latest one liquidation order within 1000ms will be pushed as the snapshot. If no liquidation happens in the interval of 1000ms, no stream will be pushed.

Stream Name:  <symbol>@forceOrder

Update Speed: 1000ms

##All Market Liquidation Order Streams

Payload:

{
    "e":"forceOrder",                   // Event Type    "E":1568014460893,                  // Event Time    "o":{            "s":"BTCUSDT",                   // Symbol        "S":"SELL",                      // Side        "o":"LIMIT",                     // Order Type        "f":"IOC",                       // Time in Force        "q":"0.014",                     // Original Quantity        "p":"9910",                      // Price        "ap":"9910",                     // Average Price        "X":"FILLED",                    // Order Status        "l":"0.014",                     // Order Last Filled Quantity        "z":"0.014",                     // Order Filled Accumulated Quantity        "T":1568014460893,               // Order Trade Time        }
}

The All Liquidation Order Snapshot Streams push force liquidation order information for all symbols in the market.

For each symbol,only the latest one liquidation order within 1000ms will be pushed as the snapshot. If no liquidation happens in the interval of 1000ms, no stream will be pushed.

Stream Name: !forceOrder@arr

Update Speed: 1000ms

Partial Book Depth Streams#

Payload:

{  "e": "depthUpdate", // Event type  "E": 1571889248277, // Event time  "T": 1571889248276, // Transaction time  "s": "BTCUSDT",  "U": 390497796,  "u": 390497878,  "pu": 390497794,  "b": [          // Bids to be updated    [      "7403.89",  // Price Level to be      "0.002"     // Quantity    ],    [      "7403.90",      "3.906"    ],    [      "7404.00",      "1.428"    ],    [      "7404.85",      "5.239"    ],    [      "7405.43",      "2.562"    ]  ],  "a": [          // Asks to be updated    [      "7405.96",  // Price level to be      "3.340"     // Quantity    ],    [      "7406.63",      "4.525"    ],    [      "7407.08",      "2.475"    ],    [      "7407.15",      "4.800"    ],    [      "7407.20",      "0.175"    ]  ]}

Top <levels> bids and asks, Valid <levels> are 5, 10, or 20.

Stream Names: <symbol>@depth<levels> OR <symbol>@depth<levels>@500ms OR <symbol>@depth<levels>@100ms.

Update Speed: 250ms, 500ms or 100ms

Diff. Book Depth Streams#

Payload:

{  "e": "depthUpdate", // Event type  "E": 123456789,     // Event time  "T": 123456788,     // Transaction time   "s": "BTCUSDT",     // Symbol  "U": 157,           // First update ID in event  "u": 160,           // Final update ID in event  "pu": 149,          // Final update Id in last stream(ie `u` in last stream)  "b": [              // Bids to be updated    [      "0.0024",       // Price level to be updated      "10"            // Quantity    ]  ],  "a": [              // Asks to be updated    [      "0.0026",       // Price level to be updated      "100"          // Quantity    ]  ]}

Bids and asks, pushed every 250 milliseconds, 500 milliseconds, 100 milliseconds (if existing)

Stream Name:
<symbol>@depth OR <symbol>@depth@500ms OR <symbol>@depth@100ms

Update Speed: 250ms, 500ms, 100ms

How to manage a local order book correctly#

  1. Open a stream to wss://fstream.binance.com/stream?streams=btcusdt@depth.
  2. Buffer the events you receive from the stream. For same price, latest received update covers the previous one.
  3. Get a depth snapshot from https://fapi.binance.com/fapi/v1/depth?symbol=BTCUSDT&limit=1000 .
  4. Drop any event where u is < lastUpdateId in the snapshot.
  5. The first processed event should have U <= lastUpdateId AND u >= lastUpdateId
  6. While listening to the stream, each new event's pu should be equal to the previous event's u, otherwise initialize the process from step 3.
  7. The data in each event is the absolute quantity for a price level.
  8. If the quantity is 0, remove the price level.
  9. Receiving an event that removes a price level that is not in your local order book can happen and is normal.

Composite Index Symbol Information Streams#

Payload:

{  "e":"compositeIndex",     // Event type  "E":1602310596000,        // Event time  "s":"DEFIUSDT",           // Symbol  "p":"554.41604065",       // Price  "C":"baseAsset",  "c":[                     // Composition    {        "b":"BAL",          // Base asset        "q":"USDT",         // Quote asset        "w":"1.04884844",   // Weight in quantity        "W":"0.01457800",   // Weight in percentage        "i":"24.33521021"   // Index price    },    {        "b":"BAND",        "q":"USDT" ,        "w":"3.53782729",        "W":"0.03935200",        "i":"7.26420084"    }  ]}

Composite index information for index symbols pushed every second.

Stream Name: <symbol>@compositeIndex

Update Speed: 1000ms

Contract Info Stream#

Payload:

{    "e":"contractInfo",          // Event Type    "E":1669356423908,           // Event Time    "s":"IOTAUSDT",              // Symbol    "ps":"IOTAUSDT",             // Pair    "ct":"PERPETUAL",            // Contract type    "dt":4133404800000,          // Delivery date time     "ot":1569398400000,          // onboard date time     "cs":"TRADING",              // Contract status     "bks":[        {            "bs":1,              // Notional bracket            "bnf":0,             // Floor notional of this bracket            "bnc":5000,          // Cap notional of this bracket            "mmr":0.01,          // Maintenance ratio for this bracket            "cf":0,              // Auxiliary number for quick calculation             "mi":21,             // Min leverage for this bracket            "ma":50              // Max leverage for this bracket        },        {            "bs":2,            "bnf":5000,            "bnc":25000,            "mmr":0.025,            "cf":75,            "mi":11,            "ma":20        }    ]}

ContractInfo stream pushes when contract info updates(listing/settlement/contract bracket update). bks field only shows up when bracket gets updated.

Stream Name: !contractInfo

Update Speed: Real-time

Account/Trades Endpoints

New Future Account Transfer#

Please find details from here.

Get Future Account Transaction History List (USER_DATA)#

Please find details from here.

Change Position Mode(TRADE)#

Response:

{    "code": 200,    "msg": "success"}

POST /fapi/v1/positionSide/dual (HMAC SHA256)

Change user's position mode (Hedge Mode or One-way Mode ) on EVERY symbol

Weight: 1

Parameters:

NameTypeMandatoryDescription
dualSidePositionSTRINGYES"true": Hedge Mode; "false": One-way Mode
recvWindowLONGNO
timestampLONGYES

Get Current Position Mode(USER_DATA)#

Response:

{    "dualSidePosition": true // "true": Hedge Mode; "false": One-way Mode}

GET /fapi/v1/positionSide/dual (HMAC SHA256)

Get user's position mode (Hedge Mode or One-way Mode ) on EVERY symbol

Weight: 30

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Change Multi-Assets Mode (TRADE)#

Response:

{    "code": 200,    "msg": "success"}

POST /fapi/v1/multiAssetsMargin (HMAC SHA256)

Change user's Multi-Assets mode (Multi-Assets Mode or Single-Asset Mode) on Every symbol

Weight: 1

Parameters:

NameTypeMandatoryDescription
multiAssetsMarginSTRINGYES"true": Multi-Assets Mode; "false": Single-Asset Mode
recvWindowLONGNO
timestampLONGYES

Get Current Multi-Assets Mode (USER_DATA)#

Response:

{    "multiAssetsMargin": true // "true": Multi-Assets Mode; "false": Single-Asset Mode}

GET /fapi/v1/multiAssetsMargin (HMAC SHA256)

Get user's Multi-Assets mode (Multi-Assets Mode or Single-Asset Mode) on Every symbol

Weight: 30

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

New Order (TRADE)#

Response:

{    "clientOrderId": "testOrder",    "cumQty": "0",    "cumQuote": "0",    "executedQty": "0",    "orderId": 22542179,    "avgPrice": "0.00000",    "origQty": "10",    "price": "0",    "reduceOnly": false,    "side": "BUY",    "positionSide": "SHORT",    "status": "NEW",    "stopPrice": "9300",        // please ignore when order type is TRAILING_STOP_MARKET    "closePosition": false,   // if Close-All    "symbol": "BTCUSDT",    "timeInForce": "GTC",    "type": "TRAILING_STOP_MARKET",    "origType": "TRAILING_STOP_MARKET",    "activatePrice": "9020",    // activation price, only return with TRAILING_STOP_MARKET order    "priceRate": "0.3",         // callback rate, only return with TRAILING_STOP_MARKET order    "updateTime": 1566818724722,    "workingType": "CONTRACT_PRICE",    "priceProtect": false            // if conditional order trigger is protected   }

POST /fapi/v1/order (HMAC SHA256)

Send in a new order.

Weight: 0

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
sideENUMYES
positionSideENUMNODefault BOTH for One-way Mode ; LONG or SHORT for Hedge Mode. It must be sent in Hedge Mode.
typeENUMYES
timeInForceENUMNO
quantityDECIMALNOCannot be sent with closePosition=true(Close-All)
reduceOnlySTRINGNO"true" or "false". default "false". Cannot be sent in Hedge Mode; cannot be sent with closePosition=true
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent. Can only be string following the rule: ^[\.A-Z\:/a-z0-9_-]{1,36}$
stopPriceDECIMALNOUsed with STOP/STOP_MARKET or TAKE_PROFIT/TAKE_PROFIT_MARKET orders.
closePositionSTRINGNOtrue, false;Close-All,used with STOP_MARKET or TAKE_PROFIT_MARKET.
activationPriceDECIMALNOUsed with TRAILING_STOP_MARKET orders, default as the latest price(supporting different workingType)
callbackRateDECIMALNOUsed with TRAILING_STOP_MARKET orders, min 0.1, max 5 where 1 for 1%
workingTypeENUMNOstopPrice triggered by: "MARK_PRICE", "CONTRACT_PRICE". Default "CONTRACT_PRICE"
priceProtectSTRINGNO"TRUE" or "FALSE", default "FALSE". Used with STOP/STOP_MARKET or TAKE_PROFIT/TAKE_PROFIT_MARKET orders.
newOrderRespTypeENUMNO"ACK", "RESULT", default "ACK"
recvWindowLONGNO
timestampLONGYES

Additional mandatory parameters based on type:

TypeAdditional mandatory parameters
LIMITtimeInForce, quantity, price
MARKETquantity
STOP/TAKE_PROFITquantity, price, stopPrice
STOP_MARKET/TAKE_PROFIT_MARKETstopPrice
TRAILING_STOP_MARKETcallbackRate
  • Order with type STOP, parameter timeInForce can be sent ( default GTC).

  • Order with type TAKE_PROFIT, parameter timeInForce can be sent ( default GTC).

  • Condition orders will be triggered when:

    • If parameterpriceProtectis sent as true:
      • when price reaches the stopPrice ,the difference rate between "MARK_PRICE" and "CONTRACT_PRICE" cannot be larger than the "triggerProtect" of the symbol
      • "triggerProtect" of a symbol can be got from GET /fapi/v1/exchangeInfo
    • STOP, STOP_MARKET:
      • BUY: latest price ("MARK_PRICE" or "CONTRACT_PRICE") >= stopPrice
      • SELL: latest price ("MARK_PRICE" or "CONTRACT_PRICE") <= stopPrice
    • TAKE_PROFIT, TAKE_PROFIT_MARKET:
      • BUY: latest price ("MARK_PRICE" or "CONTRACT_PRICE") <= stopPrice
      • SELL: latest price ("MARK_PRICE" or "CONTRACT_PRICE") >= stopPrice
    • TRAILING_STOP_MARKET:
      • BUY: the lowest price after order placed <= activationPrice, and the latest price >= the lowest price * (1 + callbackRate)
      • SELL: the highest price after order placed >= activationPrice, and the latest price <= the highest price * (1 - callbackRate)
  • For TRAILING_STOP_MARKET, if you got such error code.
    {"code": -2021, "msg": "Order would immediately trigger."}
    means that the parameters you send do not meet the following requirements:

    • BUY: activationPrice should be smaller than latest price.
    • SELL: activationPrice should be larger than latest price.
  • If newOrderRespType is sent as RESULT :

    • MARKET order: the final FILLED result of the order will be return directly.
    • LIMIT order with special timeInForce: the final status result of the order(FILLED or EXPIRED) will be returned directly.
  • STOP_MARKET, TAKE_PROFIT_MARKET with closePosition=true:

    • Follow the same rules for condition orders.
    • If triggered,close all current long position( if SELL) or current short position( if BUY).
    • Cannot be used with quantity paremeter
    • Cannot be used with reduceOnly parameter
    • In Hedge Mode,cannot be used with BUY orders in LONG position side. and cannot be used with SELL orders in SHORT position side

Modify Order (TRADE)#

Response:

{    "orderId": 20072994037,    "symbol": "BTCUSDT",    "pair": "BTCUSDT",    "status": "NEW",    "clientOrderId": "LJ9R4QZDihCaS8UAOOLpgW",    "price": "30005",    "avgPrice": "0.0",    "origQty": "1",    "executedQty": "0",    "cumQty": "0",    "cumBase": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "LONG",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceProtect": false,    "origType": "LIMIT",    "updateTime": 1629182711600}

PUT /fapi/v1/order (HMAC SHA256)

Order modify function, currently only LIMIT order modification is supported, modified orders will be reordered in the match queue

Weight: 1

Parameters:

NameTypeMandatoryDescription
orderIdLONGNO
origClientOrderIdSTRINGNO
symbolSTRINGYES
sideENUMYESSELL, BUY
quantityDECIMALYESOrder quantity, cannot be sent with closePosition=true
priceDECIMALYES
recvWindowLONGNO
timestampLONGYES
  • Either orderId or origClientOrderId must be sent, and the orderId will prevail if both are sent.
  • Both quantity and price must be sent, which is different from dapi modify order endpoint.
  • When the new quantity or price doesn't satisfy PRICE_FILTER / PERCENT_FILTER / LOT_SIZE, amendment will be rejected and the order will stay as it is.
  • However the order will be cancelled by the amendment in the following situations:
    • when the order is in partially filled status and the new quantity <= executedQty
    • When the order is GTX and the new price will cause it to be executed immediately
  • One order can only be modfied for less than 10000 times

Place Multiple Orders (TRADE)#

Response:

[    {        "clientOrderId": "testOrder",        "cumQty": "0",        "cumQuote": "0",        "executedQty": "0",        "orderId": 22542179,        "avgPrice": "0.00000",        "origQty": "10",        "price": "0",        "reduceOnly": false,        "side": "BUY",        "positionSide": "SHORT",        "status": "NEW",        "stopPrice": "9300",        // please ignore when order type is TRAILING_STOP_MARKET        "symbol": "BTCUSDT",        "timeInForce": "GTC",        "type": "TRAILING_STOP_MARKET",        "origType": "TRAILING_STOP_MARKET",        "activatePrice": "9020",    // activation price, only return with TRAILING_STOP_MARKET order        "priceRate": "0.3",         // callback rate, only return with TRAILING_STOP_MARKET order        "updateTime": 1566818724722,        "workingType": "CONTRACT_PRICE",        "priceProtect": false            // if conditional order trigger is protected       },    {        "code": -2022,         "msg": "ReduceOnly Order is rejected."    }]

POST /fapi/v1/batchOrders (HMAC SHA256)

Weight: 5

Parameters:

NameTypeMandatoryDescription
batchOrdersLIST\<JSON>YESorder list. Max 5 orders
recvWindowLONGNO
timestampLONGYES

Where batchOrders is the list of order parameters in JSON

  • Example: /fapi/v1/batchOrders?batchOrders=[{"type":"LIMIT","timeInForce":"GTC",
    "symbol":"BTCUSDT","side":"BUY","price":"10001","quantity":"0.001"}]
NameTypeMandatoryDescription
symbolSTRINGYES
sideENUMYES
positionSideENUMNODefault BOTH for One-way Mode ; LONG or SHORT for Hedge Mode. It must be sent with Hedge Mode.
typeENUMYES
timeInForceENUMNO
quantityDECIMALYES
reduceOnlySTRINGNO"true" or "false". default "false".
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent. Can only be string following the rule: ^[\.A-Z\:/a-z0-9_-]{1,36}$
stopPriceDECIMALNOUsed with STOP/STOP_MARKET or TAKE_PROFIT/TAKE_PROFIT_MARKET orders.
activationPriceDECIMALNOUsed with TRAILING_STOP_MARKET orders, default as the latest price(supporting different workingType)
callbackRateDECIMALNOUsed with TRAILING_STOP_MARKET orders, min 0.1, max 4 where 1 for 1%
workingTypeENUMNOstopPrice triggered by: "MARK_PRICE", "CONTRACT_PRICE". Default "CONTRACT_PRICE"
priceProtectSTRINGNO"TRUE" or "FALSE", default "FALSE". Used with STOP/STOP_MARKET or TAKE_PROFIT/TAKE_PROFIT_MARKET orders.
newOrderRespTypeENUMNO"ACK", "RESULT", default "ACK"
  • Paremeter rules are same with New Order
  • Batch orders are processed concurrently, and the order of matching is not guaranteed.
  • The order of returned contents for batch orders is the same as the order of the order list.

Modify Multiple Orders (TRADE)#

Response:

[    {        "orderId": 20072994037,        "symbol": "BTCUSDT",        "pair": "BTCUSDT",        "status": "NEW",        "clientOrderId": "LJ9R4QZDihCaS8UAOOLpgW",        "price": "30005",        "avgPrice": "0.0",        "origQty": "1",        "executedQty": "0",        "cumQty": "0",        "cumBase": "0",        "timeInForce": "GTC",        "type": "LIMIT",        "reduceOnly": false,        "closePosition": false,        "side": "BUY",        "positionSide": "LONG",        "stopPrice": "0",        "workingType": "CONTRACT_PRICE",        "priceProtect": false,        "origType": "LIMIT",        "updateTime": 1629182711600    },    {        "code": -2022,         "msg": "ReduceOnly Order is rejected."    }]

PUT /fapi/v1/batchOrders (HMAC SHA256)

Weight: 5

Parameters:

NameTypeMandatoryDescription
batchOrderslist\<JSON>YESorder list. Max 5 orders
recvWindowLONGNO
timestampLONGYES

Where batchOrders is the list of order parameters in JSON

NameTypeMandatoryDescription
orderIdLONGNO
origClientOrderIdSTRINGNO
symbolSTRINGYES
sideENUMYESSELL, BUY
quantityDECIMALYESOrder quantity, cannot be sent with closePosition=true
priceDECIMALYES
recvWindowLONGNO
timestampLONGYES
  • Parameter rules are same with Modify Order
  • Batch modify orders are processed concurrently, and the order of matching is not guaranteed.
  • The order of returned contents for batch modify orders is the same as the order of the order list.
  • One order can only be modfied for less than 10000 times

Get Order Modify History (USER_DATA)#

Response:

[    {        "amendmentId": 5363,    // Order modification ID        "symbol": "BTCUSDT",        "pair": "BTCUSDT",        "orderId": 20072994037,        "clientOrderId": "LJ9R4QZDihCaS8UAOOLpgW",        "time": 1629184560899,  // Order modification time        "amendment": {            "price": {                "before": "30004",                "after": "30003.2"            },            "origQty": {                "before": "1",                "after": "1"            },            "count": 3  // Order modification count, representing the number of times the order has been modified        }    },    {        "amendmentId": 5361,        "symbol": "BTCUSDT",        "pair": "BTCUSDT",        "orderId": 20072994037,        "clientOrderId": "LJ9R4QZDihCaS8UAOOLpgW",        "time": 1629184533946,        "amendment": {            "price": {                "before": "30005",                "after": "30004"            },            "origQty": {                "before": "1",                "after": "1"            },            "count": 2        }    },    {        "amendmentId": 5325,        "symbol": "BTCUSDT",        "pair": "BTCUSDT",        "orderId": 20072994037,        "clientOrderId": "LJ9R4QZDihCaS8UAOOLpgW",        "time": 1629182711787,        "amendment": {            "price": {                "before": "30002",                "after": "30005"            },            "origQty": {                "before": "1",                "after": "1"            },            "count": 1        }    }]

GET /fapi/v1/orderAmendment (HMAC SHA256)

Get order modification history

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
startTimeLONGNOTimestamp in ms to get modification history from INCLUSIVE
endTimeLONGNOTimestamp in ms to get modification history until INCLUSIVE
limitINTNODefault 50; max 100
recvWindowLONGNO
timestampLONGYES

Notes:

  • Either orderId or origClientOrderId must be sent, and the orderId will prevail if both are sent.

Query Order (USER_DATA)#

Response:

{    "avgPrice": "0.00000",    "clientOrderId": "abc",    "cumQuote": "0",    "executedQty": "0",    "orderId": 1917641,    "origQty": "0.40",    "origType": "TRAILING_STOP_MARKET",    "price": "0",    "reduceOnly": false,    "side": "BUY",    "positionSide": "SHORT",    "status": "NEW",    "stopPrice": "9300",                // please ignore when order type is TRAILING_STOP_MARKET    "closePosition": false,   // if Close-All    "symbol": "BTCUSDT",    "time": 1579276756075,              // order time    "timeInForce": "GTC",    "type": "TRAILING_STOP_MARKET",    "activatePrice": "9020",            // activation price, only return with TRAILING_STOP_MARKET order    "priceRate": "0.3",                 // callback rate, only return with TRAILING_STOP_MARKET order    "updateTime": 1579276756075,        // update time    "workingType": "CONTRACT_PRICE",    "priceProtect": false            // if conditional order trigger is protected   }

GET /fapi/v1/order (HMAC SHA256)

Check an order's status.

Weight: 1

  • These orders will not be found:
    • order status is CANCELED or EXPIRED, AND
    • order has NO filled trade, AND
    • created time + 3 days < current time

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
recvWindowLONGNO
timestampLONGYES

Notes:

  • Either orderId or origClientOrderId must be sent.
  • orderId is self-increment for each specific symbol

Cancel Order (TRADE)#

Response:

{    "clientOrderId": "myOrder1",    "cumQty": "0",    "cumQuote": "0",    "executedQty": "0",    "orderId": 283194212,    "origQty": "11",    "origType": "TRAILING_STOP_MARKET",    "price": "0",    "reduceOnly": false,    "side": "BUY",    "positionSide": "SHORT",    "status": "CANCELED",    "stopPrice": "9300",                // please ignore when order type is TRAILING_STOP_MARKET    "closePosition": false,   // if Close-All    "symbol": "BTCUSDT",    "timeInForce": "GTC",    "type": "TRAILING_STOP_MARKET",    "activatePrice": "9020",            // activation price, only return with TRAILING_STOP_MARKET order    "priceRate": "0.3",                 // callback rate, only return with TRAILING_STOP_MARKET order    "updateTime": 1571110484038,    "workingType": "CONTRACT_PRICE",    "priceProtect": false            // if conditional order trigger is protected   }

DELETE /fapi/v1/order (HMAC SHA256)

Cancel an active order.

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
recvWindowLONGNO
timestampLONGYES

Either orderId or origClientOrderId must be sent.

Cancel All Open Orders (TRADE)#

Response:

{    "code": "200",     "msg": "The operation of cancel all open order is done."}

DELETE /fapi/v1/allOpenOrders (HMAC SHA256)

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
recvWindowLONGNO
timestampLONGYES

Cancel Multiple Orders (TRADE)#

Response:

[    {        "clientOrderId": "myOrder1",        "cumQty": "0",        "cumQuote": "0",        "executedQty": "0",        "orderId": 283194212,        "origQty": "11",        "origType": "TRAILING_STOP_MARKET",        "price": "0",        "reduceOnly": false,        "side": "BUY",        "positionSide": "SHORT",        "status": "CANCELED",        "stopPrice": "9300",                // please ignore when order type is TRAILING_STOP_MARKET        "closePosition": false,   // if Close-All        "symbol": "BTCUSDT",        "timeInForce": "GTC",        "type": "TRAILING_STOP_MARKET",        "activatePrice": "9020",            // activation price, only return with TRAILING_STOP_MARKET order        "priceRate": "0.3",                 // callback rate, only return with TRAILING_STOP_MARKET order        "updateTime": 1571110484038,        "workingType": "CONTRACT_PRICE",        "priceProtect": false            // if conditional order trigger is protected       },    {        "code": -2011,        "msg": "Unknown order sent."    }]

DELETE /fapi/v1/batchOrders (HMAC SHA256)

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdListLIST\<LONG>NOmax length 10
e.g. [1234567,2345678]
origClientOrderIdListLIST\<STRING>NOmax length 10
e.g. ["my_id_1","my_id_2"], encode the double quotes. No space after comma.
recvWindowLONGNO
timestampLONGYES

Either orderIdList or origClientOrderIdList must be sent.

Auto-Cancel All Open Orders (TRADE)#

Response:

{    "symbol": "BTCUSDT",     "countdownTime": "100000"}

Cancel all open orders of the specified symbol at the end of the specified countdown.

POST /fapi/v1/countdownCancelAll (HMAC SHA256)

Weight: 10

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
countdownTimeLONGYEScountdown time, 1000 for 1 second. 0 to cancel the timer
recvWindowLONGNO
timestampLONGYES
  • The endpoint should be called repeatedly as heartbeats so that the existing countdown time can be canceled and replaced by a new one.

  • Example usage:
    Call this endpoint at 30s intervals with an countdownTime of 120000 (120s).
    If this endpoint is not called within 120 seconds, all your orders of the specified symbol will be automatically canceled.
    If this endpoint is called with an countdownTime of 0, the countdown timer will be stopped.

  • The system will check all countdowns approximately every 10 milliseconds, so please note that sufficient redundancy should be considered when using this function. We do not recommend setting the countdown time to be too precise or too small.

Query Current Open Order (USER_DATA)#

Response:


{    "avgPrice": "0.00000",                  "clientOrderId": "abc",                 "cumQuote": "0",                            "executedQty": "0",                     "orderId": 1917641,                     "origQty": "0.40",                          "origType": "TRAILING_STOP_MARKET",    "price": "0",    "reduceOnly": false,    "side": "BUY",    "positionSide": "SHORT",    "status": "NEW",    "stopPrice": "9300",                // please ignore when order type is TRAILING_STOP_MARKET    "closePosition": false,             // if Close-All    "symbol": "BTCUSDT",    "time": 1579276756075,              // order time    "timeInForce": "GTC",    "type": "TRAILING_STOP_MARKET",    "activatePrice": "9020",            // activation price, only return with TRAILING_STOP_MARKET order    "priceRate": "0.3",                 // callback rate, only return with TRAILING_STOP_MARKET order                           "updateTime": 1579276756075,            "workingType": "CONTRACT_PRICE",    "priceProtect": false            // if conditional order trigger is protected           }

GET /fapi/v1/openOrder (HMAC SHA256)

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • EitherorderId or origClientOrderId must be sent
  • If the queried order has been filled or cancelled, the error message "Order does not exist" will be returned.

Current All Open Orders (USER_DATA)#

Response:

[  {    "avgPrice": "0.00000",    "clientOrderId": "abc",    "cumQuote": "0",    "executedQty": "0",    "orderId": 1917641,    "origQty": "0.40",    "origType": "TRAILING_STOP_MARKET",    "price": "0",    "reduceOnly": false,    "side": "BUY",    "positionSide": "SHORT",    "status": "NEW",    "stopPrice": "9300",                // please ignore when order type is TRAILING_STOP_MARKET    "closePosition": false,   // if Close-All    "symbol": "BTCUSDT",    "time": 1579276756075,              // order time    "timeInForce": "GTC",    "type": "TRAILING_STOP_MARKET",    "activatePrice": "9020",            // activation price, only return with TRAILING_STOP_MARKET order    "priceRate": "0.3",                 // callback rate, only return with TRAILING_STOP_MARKET order    "updateTime": 1579276756075,        // update time    "workingType": "CONTRACT_PRICE",    "priceProtect": false            // if conditional order trigger is protected     }]

GET /fapi/v1/openOrders (HMAC SHA256)

Get all open orders on a symbol. Careful when accessing this with no symbol.

Weight: 1 for a single symbol; 40 when the symbol parameter is omitted

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • If the symbol is not sent, orders for all symbols will be returned in an array.

All Orders (USER_DATA)#

Response:

[  {    "avgPrice": "0.00000",    "clientOrderId": "abc",    "cumQuote": "0",    "executedQty": "0",    "orderId": 1917641,    "origQty": "0.40",    "origType": "TRAILING_STOP_MARKET",    "price": "0",    "reduceOnly": false,    "side": "BUY",    "positionSide": "SHORT",    "status": "NEW",    "stopPrice": "9300",                // please ignore when order type is TRAILING_STOP_MARKET    "closePosition": false,   // if Close-All    "symbol": "BTCUSDT",    "time": 1579276756075,              // order time    "timeInForce": "GTC",    "type": "TRAILING_STOP_MARKET",    "activatePrice": "9020",            // activation price, only return with TRAILING_STOP_MARKET order    "priceRate": "0.3",                 // callback rate, only return with TRAILING_STOP_MARKET order    "updateTime": 1579276756075,        // update time    "workingType": "CONTRACT_PRICE",    "priceProtect": false            // if conditional order trigger is protected     }]

GET /fapi/v1/allOrders (HMAC SHA256)

Get all account orders; active, canceled, or filled.

  • These orders will not be found:
    • order status is CANCELED or EXPIRED, AND
    • order has NO filled trade, AND
    • created time + 3 days < current time

Weight: 5

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1000.
recvWindowLONGNO
timestampLONGYES

Notes:

  • If orderId is set, it will get orders >= that orderId. Otherwise most recent orders are returned.
  • The query time period must be less then 7 days( default as the recent 7 days).

Futures Account Balance V2 (USER_DATA)#

Response:

[    {        "accountAlias": "SgsR",    // unique account code        "asset": "USDT",    // asset name        "balance": "122607.35137903", // wallet balance        "crossWalletBalance": "23.72469206", // crossed wallet balance        "crossUnPnl": "0.00000000"  // unrealized profit of crossed positions        "availableBalance": "23.72469206",       // available balance        "maxWithdrawAmount": "23.72469206",     // maximum amount for transfer out        "marginAvailable": true,    // whether the asset can be used as margin in Multi-Assets mode        "updateTime": 1617939110373    }]

GET /fapi/v2/balance (HMAC SHA256)

Weight: 5

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Account Information V2 (USER_DATA)#

Response:

single-asset mode

{       "feeTier": 0,       // account commission tier     "canTrade": true,   // if can trade    "canDeposit": true,     // if can transfer in asset    "canWithdraw": true,    // if can transfer out asset    "updateTime": 0,        // reserved property, please ignore     "multiAssetsMargin": false,    "totalInitialMargin": "0.00000000",    // total initial margin required with current mark price (useless with isolated positions), only for USDT asset    "totalMaintMargin": "0.00000000",     // total maintenance margin required, only for USDT asset    "totalWalletBalance": "23.72469206",     // total wallet balance, only for USDT asset    "totalUnrealizedProfit": "0.00000000",   // total unrealized profit, only for USDT asset    "totalMarginBalance": "23.72469206",     // total margin balance, only for USDT asset    "totalPositionInitialMargin": "0.00000000",    // initial margin required for positions with current mark price, only for USDT asset    "totalOpenOrderInitialMargin": "0.00000000",   // initial margin required for open orders with current mark price, only for USDT asset    "totalCrossWalletBalance": "23.72469206",      // crossed wallet balance, only for USDT asset    "totalCrossUnPnl": "0.00000000",      // unrealized profit of crossed positions, only for USDT asset    "availableBalance": "23.72469206",       // available balance, only for USDT asset    "maxWithdrawAmount": "23.72469206"     // maximum amount for transfer out, only for USDT asset    "assets": [        {            "asset": "USDT",            // asset name            "walletBalance": "23.72469206",      // wallet balance            "unrealizedProfit": "0.00000000",    // unrealized profit            "marginBalance": "23.72469206",      // margin balance            "maintMargin": "0.00000000",        // maintenance margin required            "initialMargin": "0.00000000",    // total initial margin required with current mark price             "positionInitialMargin": "0.00000000",    //initial margin required for positions with current mark price            "openOrderInitialMargin": "0.00000000",   // initial margin required for open orders with current mark price            "crossWalletBalance": "23.72469206",      // crossed wallet balance            "crossUnPnl": "0.00000000"       // unrealized profit of crossed positions            "availableBalance": "23.72469206",       // available balance            "maxWithdrawAmount": "23.72469206",     // maximum amount for transfer out            "marginAvailable": true,    // whether the asset can be used as margin in Multi-Assets mode            "updateTime": 1625474304765 // last update time         },        {            "asset": "BUSD",            // asset name            "walletBalance": "103.12345678",      // wallet balance            "unrealizedProfit": "0.00000000",    // unrealized profit            "marginBalance": "103.12345678",      // margin balance            "maintMargin": "0.00000000",        // maintenance margin required            "initialMargin": "0.00000000",    // total initial margin required with current mark price             "positionInitialMargin": "0.00000000",    //initial margin required for positions with current mark price            "openOrderInitialMargin": "0.00000000",   // initial margin required for open orders with current mark price            "crossWalletBalance": "103.12345678",      // crossed wallet balance            "crossUnPnl": "0.00000000"       // unrealized profit of crossed positions            "availableBalance": "103.12345678",       // available balance            "maxWithdrawAmount": "103.12345678",     // maximum amount for transfer out            "marginAvailable": true,    // whether the asset can be used as margin in Multi-Assets mode            "updateTime": 1625474304765 // last update time        }    ],    "positions": [  // positions of all symbols in the market are returned        // only "BOTH" positions will be returned with One-way mode        // only "LONG" and "SHORT" positions will be returned with Hedge mode        {            "symbol": "BTCUSDT",    // symbol name            "initialMargin": "0",   // initial margin required with current mark price             "maintMargin": "0",     // maintenance margin required            "unrealizedProfit": "0.00000000",  // unrealized profit            "positionInitialMargin": "0",      // initial margin required for positions with current mark price            "openOrderInitialMargin": "0",     // initial margin required for open orders with current mark price            "leverage": "100",      // current initial leverage            "isolated": true,       // if the position is isolated            "entryPrice": "0.00000",    // average entry price            "maxNotional": "250000",    // maximum available notional with current leverage            "bidNotional": "0",  // bids notional, ignore            "askNotional": "0",  // ask notional, ignore            "positionSide": "BOTH",     // position side            "positionAmt": "0",         // position amount            "updateTime": 0           // last update time        }    ]}

OR multi-assets mode

{       "feeTier": 0,       // account commission tier     "canTrade": true,   // if can trade    "canDeposit": true,     // if can transfer in asset    "canWithdraw": true,    // if can transfer out asset    "updateTime": 0,        // reserved property, please ignore     "multiAssetsMargin": true,    "totalInitialMargin": "0.00000000",    // the sum of USD value of all cross positions/open order initial margin    "totalMaintMargin": "0.00000000",     // the sum of USD value of all cross positions maintenance margin    "totalWalletBalance": "126.72469206",     // total wallet balance in USD    "totalUnrealizedProfit": "0.00000000",   // total unrealized profit in USD    "totalMarginBalance": "126.72469206",     // total margin balance in USD    "totalPositionInitialMargin": "0.00000000",    // the sum of USD value of all cross positions initial margin    "totalOpenOrderInitialMargin": "0.00000000",   // initial margin required for open orders with current mark price in USD    "totalCrossWalletBalance": "126.72469206",      // crossed wallet balance in USD    "totalCrossUnPnl": "0.00000000",      // unrealized profit of crossed positions in USD    "availableBalance": "126.72469206",       // available balance in USD    "maxWithdrawAmount": "126.72469206"     // maximum virtual amount for transfer out in USD    "assets": [        {            "asset": "USDT",            // asset name            "walletBalance": "23.72469206",      // wallet balance            "unrealizedProfit": "0.00000000",    // unrealized profit            "marginBalance": "23.72469206",      // margin balance            "maintMargin": "0.00000000",        // maintenance margin required            "initialMargin": "0.00000000",    // total initial margin required with current mark price             "positionInitialMargin": "0.00000000",    //initial margin required for positions with current mark price            "openOrderInitialMargin": "0.00000000",   // initial margin required for open orders with current mark price            "crossWalletBalance": "23.72469206",      // crossed wallet balance            "crossUnPnl": "0.00000000"       // unrealized profit of crossed positions            "availableBalance": "23.72469206",       // available balance            "maxWithdrawAmount": "23.72469206",     // maximum amount for transfer out            "marginAvailable": true,    // whether the asset can be used as margin in Multi-Assets mode            "updateTime": 1625474304765 // last update time         },        {            "asset": "BUSD",            // asset name            "walletBalance": "103.12345678",      // wallet balance            "unrealizedProfit": "0.00000000",    // unrealized profit            "marginBalance": "103.12345678",      // margin balance            "maintMargin": "0.00000000",        // maintenance margin required            "initialMargin": "0.00000000",    // total initial margin required with current mark price             "positionInitialMargin": "0.00000000",    //initial margin required for positions with current mark price            "openOrderInitialMargin": "0.00000000",   // initial margin required for open orders with current mark price            "crossWalletBalance": "103.12345678",      // crossed wallet balance            "crossUnPnl": "0.00000000"       // unrealized profit of crossed positions            "availableBalance": "103.12345678",       // available balance            "maxWithdrawAmount": "103.12345678",     // maximum amount for transfer out            "marginAvailable": true,    // whether the asset can be used as margin in Multi-Assets mode            "updateTime": 1625474304765 // last update time        }    ],    "positions": [  // positions of all symbols in the market are returned        // only "BOTH" positions will be returned with One-way mode        // only "LONG" and "SHORT" positions will be returned with Hedge mode        {            "symbol": "BTCUSDT",    // symbol name            "initialMargin": "0",   // initial margin required with current mark price             "maintMargin": "0",     // maintenance margin required            "unrealizedProfit": "0.00000000",  // unrealized profit            "positionInitialMargin": "0",      // initial margin required for positions with current mark price            "openOrderInitialMargin": "0",     // initial margin required for open orders with current mark price            "leverage": "100",      // current initial leverage            "isolated": true,       // if the position is isolated            "entryPrice": "0.00000",    // average entry price            "maxNotional": "250000",    // maximum available notional with current leverage            "bidNotional": "0",  // bids notional, ignore            "askNotional": "0",  // ask notional, ignore            "positionSide": "BOTH",     // position side            "positionAmt": "0",         // position amount            "updateTime": 0           // last update time        }    ]}

GET /fapi/v2/account (HMAC SHA256)

Get current account information. User in single-asset/ multi-assets mode will see different value, see comments in response section for detail.

  Weight: 5

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Change Initial Leverage (TRADE)#

Response:

{    "leverage": 21,    "maxNotionalValue": "1000000",    "symbol": "BTCUSDT"}

POST /fapi/v1/leverage (HMAC SHA256)

Change user's initial leverage of specific symbol market.

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
leverageINTYEStarget initial leverage: int from 1 to 125
recvWindowLONGNO
timestampLONGYES

Change Margin Type (TRADE)#

Response:

{    "code": 200,    "msg": "success"}

POST /fapi/v1/marginType (HMAC SHA256)

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
marginTypeENUMYESISOLATED, CROSSED
recvWindowLONGNO
timestampLONGYES

Modify Isolated Position Margin (TRADE)#

Response:

{    "amount": 100.0,    "code": 200,    "msg": "Successfully modify position margin.",    "type": 1}

POST /fapi/v1/positionMargin (HMAC SHA256)

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
positionSideENUMNODefault BOTH for One-way Mode ; LONG or SHORT for Hedge Mode. It must be sent with Hedge Mode.
amountDECIMALYES
typeINTYES1: Add position margin,2: Reduce position margin
recvWindowLONGNO
timestampLONGYES
  • Only for isolated symbol

Get Position Margin Change History (TRADE)#

Response:

[    {        "symbol": "BTCUSDT",        "type": 1,        "deltaType": "USER_ADJUST",        "amount": "23.36332311",        "asset": "USDT",        "time": 1578047897183,        "positionSide": "BOTH"    },    {        "symbol": "BTCUSDT",        "type": 1,         "deltaType": "USER_ADJUST",        "amount": "100",        "asset": "USDT",        "time": 1578047900425,        "positionSide": "LONG"     }]

GET /fapi/v1/positionMargin/history (HMAC SHA256)

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
typeINTNO1: Add position margin,2: Reduce position margin
startTimeLONGNO
endTimeLONGNO
limitINTNODefault: 500
recvWindowLONGNO
timestampLONGYES

Position Information V2 (USER_DATA)#

Response:

For One-way position mode:

[    {        "entryPrice": "0.00000",        "marginType": "isolated",         "isAutoAddMargin": "false",        "isolatedMargin": "0.00000000",         "leverage": "10",         "liquidationPrice": "0",         "markPrice": "6679.50671178",           "maxNotionalValue": "20000000",         "positionAmt": "0.000",        "notional": "0",,         "isolatedWallet": "0",        "symbol": "BTCUSDT",         "unRealizedProfit": "0.00000000",         "positionSide": "BOTH",        "updateTime": 0    }]

For Hedge position mode:

[    {        "symbol": "BTCUSDT",        "positionAmt": "0.001",        "entryPrice": "22185.2",        "markPrice": "21123.05052574",        "unRealizedProfit": "-1.06214947",        "liquidationPrice": "19731.45529116",        "leverage": "4",        "maxNotionalValue": "100000000",        "marginType": "cross",        "isolatedMargin": "0.00000000",        "isAutoAddMargin": "false",        "positionSide": "LONG",        "notional": "21.12305052",        "isolatedWallet": "0",        "updateTime": 1655217461579    },    {        "symbol": "BTCUSDT",        "positionAmt": "0.000",        "entryPrice": "0.0",        "markPrice": "21123.05052574",        "unRealizedProfit": "0.00000000",        "liquidationPrice": "0",        "leverage": "4",        "maxNotionalValue": "100000000",        "marginType": "cross",        "isolatedMargin": "0.00000000",        "isAutoAddMargin": "false",        "positionSide": "SHORT",        "notional": "0",        "isolatedWallet": "0",        "updateTime": 0    }]

GET /fapi/v2/positionRisk (HMAC SHA256)

Get current position information.

Weight: 5

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNO
timestampLONGYES

Note
Please use with user data stream ACCOUNT_UPDATE to meet your timeliness and accuracy needs.

Account Trade List (USER_DATA)#

Response:

[  {    "buyer": false,    "commission": "-0.07819010",    "commissionAsset": "USDT",    "id": 698759,    "maker": false,    "orderId": 25851813,    "price": "7819.01",    "qty": "0.002",    "quoteQty": "15.63802",    "realizedPnl": "-0.91539999",    "side": "SELL",    "positionSide": "SHORT",    "symbol": "BTCUSDT",    "time": 1569514978020  }]

GET /fapi/v1/userTrades (HMAC SHA256)

Get trades for a specific account and symbol.

Weight: 5

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNOThis can only be used in combination with symbol
startTimeLONGNO
endTimeLONGNO
fromIdLONGNOTrade id to fetch from. Default gets most recent trades.
limitINTNODefault 500; max 1000.
recvWindowLONGNO
timestampLONGYES
  • If startTime and endTime are both not sent, then the last 7 days' data will be returned.
  • The time between startTime and endTime cannot be longer than 7 days.
  • The parameter fromId cannot be sent with startTime or endTime.

Get Income History (USER_DATA)#

Response:

[    {        "symbol": "",                   // trade symbol, if existing        "incomeType": "TRANSFER",   // income type        "income": "-0.37500000",  // income amount        "asset": "USDT",                // income asset        "info":"TRANSFER",          // extra information        "time": 1570608000000,              "tranId":"9689322392",      // transaction id        "tradeId":""                    // trade id, if existing    },    {        "symbol": "BTCUSDT",        "incomeType": "COMMISSION",         "income": "-0.01000000",        "asset": "USDT",        "info":"COMMISSION",        "time": 1570636800000,        "tranId":"9689322392",        "tradeId":"2059192"    }]

GET /fapi/v1/income (HMAC SHA256)

Weight: 30

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
incomeTypeSTRINGNOTRANSFER, WELCOME_BONUS, REALIZED_PNL, FUNDING_FEE, COMMISSION, INSURANCE_CLEAR, REFERRAL_KICKBACK, COMMISSION_REBATE, API_REBATE, CONTEST_REWARD, CROSS_COLLATERAL_TRANSFER, OPTIONS_PREMIUM_FEE, OPTIONS_SETTLE_PROFIT, INTERNAL_TRANSFER, AUTO_EXCHANGE, DELIVERED_SETTELMENT, COIN_SWAP_DEPOSIT, COIN_SWAP_WITHDRAW, POSITION_LIMIT_INCREASE_FEE
startTimeLONGNOTimestamp in ms to get funding from INCLUSIVE.
endTimeLONGNOTimestamp in ms to get funding until INCLUSIVE.
limitINTNODefault 100; max 1000
recvWindowLONGNO
timestampLONGYES
  • If neither startTime nor endTime is sent, the recent 7-day data will be returned.
  • If incomeType is not sent, all kinds of flow will be returned
  • "trandId" is unique in the same incomeType for a user
  • Income history only contains data for the last three months

Notional and Leverage Brackets (USER_DATA)#

Response:

[    {        "symbol": "ETHUSDT",        "brackets": [            {                "bracket": 1,   // Notional bracket                "initialLeverage": 75,  // Max initial leverage for this bracket                "notionalCap": 10000,  // Cap notional of this bracket                "notionalFloor": 0,  // Notional threshold of this bracket                 "maintMarginRatio": 0.0065, // Maintenance ratio for this bracket                "cum":0 // Auxiliary number for quick calculation                            },        ]    }]

OR (if symbol sent)


{    "symbol": "ETHUSDT",    "brackets": [        {            "bracket": 1,            "initialLeverage": 75,            "notionalCap": 10000,            "notionalFloor": 0,            "maintMarginRatio": 0.0065,            "cum":0        },    ]}

GET /fapi/v1/leverageBracket

Weight: 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNO
timestampLONGYES

Position ADL Quantile Estimation (USER_DATA)#

Response:

[    {        "symbol": "ETHUSDT",         "adlQuantile":             {                // if the positions of the symbol are crossed margined in Hedge Mode, "LONG" and "SHORT" will be returned a same quantile value, and "HEDGE" will be returned instead of "BOTH".                "LONG": 3,                  "SHORT": 3,                 "HEDGE": 0   // only a sign, ignore the value            }        },    {        "symbol": "BTCUSDT",         "adlQuantile":             {                // for positions of the symbol are in One-way Mode or isolated margined in Hedge Mode                "LONG": 1,  // adl quantile for "LONG" position in hedge mode                "SHORT": 2,     // adl qauntile for "SHORT" position in hedge mode                "BOTH": 0       // adl qunatile for position in one-way mode            }    } ]

GET /fapi/v1/adlQuantile

Weight: 5

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • Values update every 30s.

  • Values 0, 1, 2, 3, 4 shows the queue position and possibility of ADL from low to high.

  • For positions of the symbol are in One-way Mode or isolated margined in Hedge Mode, "LONG", "SHORT", and "BOTH" will be returned to show the positions' adl quantiles of different position sides.

  • If the positions of the symbol are crossed margined in Hedge Mode:

    • "HEDGE" as a sign will be returned instead of "BOTH";
    • A same value caculated on unrealized pnls on long and short sides' positions will be shown for "LONG" and "SHORT" when there are positions in both of long and short sides.

User's Force Orders (USER_DATA)#

Response:

[  {    "orderId": 6071832819,     "symbol": "BTCUSDT",     "status": "FILLED",     "clientOrderId": "autoclose-1596107620040000020",     "price": "10871.09",     "avgPrice": "10913.21000",     "origQty": "0.001",     "executedQty": "0.001",     "cumQuote": "10.91321",     "timeInForce": "IOC",     "type": "LIMIT",     "reduceOnly": false,     "closePosition": false,     "side": "SELL",     "positionSide": "BOTH",     "stopPrice": "0",     "workingType": "CONTRACT_PRICE",     "origType": "LIMIT",     "time": 1596107620044,     "updateTime": 1596107620087  }  {    "orderId": 6072734303,     "symbol": "BTCUSDT",     "status": "FILLED",     "clientOrderId": "adl_autoclose",     "price": "11023.14",     "avgPrice": "10979.82000",     "origQty": "0.001",     "executedQty": "0.001",     "cumQuote": "10.97982",     "timeInForce": "GTC",     "type": "LIMIT",     "reduceOnly": false,     "closePosition": false,     "side": "BUY",     "positionSide": "SHORT",     "stopPrice": "0",     "workingType": "CONTRACT_PRICE",     "origType": "LIMIT",     "time": 1596110725059,     "updateTime": 1596110725071  }]

GET /fapi/v1/forceOrders

Weight: 20 with symbol, 50 without symbol

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
autoCloseTypeENUMNO"LIQUIDATION" for liquidation orders, "ADL" for ADL orders.
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 50; max 100.
recvWindowLONGNO
timestampLONGYES
  • If "autoCloseType" is not sent, orders with both of the types will be returned
  • If "startTime" is not sent, data within 7 days before "endTime" can be queried

Futures Trading Quantitative Rules Indicators (USER_DATA)#

Response:

{    "indicators": { // indicator: quantitative rules indicators, value: user's indicators value, triggerValue: trigger indicator value threshold of quantitative rules.         "BTCUSDT": [            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "UFR",  // Unfilled Ratio (UFR)                "value": 0.05,  // Current value                "triggerValue": 0.995  // Trigger value            },            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "IFER",  // IOC/FOK Expiration Ratio (IFER)                "value": 0.99,  // Current value                "triggerValue": 0.99  // Trigger value            },            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "GCR",  // GTC Cancellation Ratio (GCR)                "value": 0.99,  // Current value                "triggerValue": 0.99  // Trigger value            },            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "DR",  // Dust Ratio (DR)                "value": 0.99,  // Current value                "triggerValue": 0.99  // Trigger value            }        ],        "ETHUSDT": [            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "UFR",                "value": 0.05,                "triggerValue": 0.995            },            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "IFER",                "value": 0.99,                "triggerValue": 0.99            },            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "GCR",                "value": 0.99,                "triggerValue": 0.99            }            {                "isLocked": true,                "plannedRecoverTime": 1545741270000,                "indicator": "DR",                "value": 0.99,                "triggerValue": 0.99            }        ]    },    "updateTime": 1545741270000}

Or (account violation triggered)

{    "indicators":{        "ACCOUNT":[            {                "indicator":"TMV",  //  Too many violations under multiple symbols trigger account violation                "value":10,                "triggerValue":1,                "plannedRecoverTime":1644919865000,                "isLocked":true            }        ]    },    "updateTime":1644913304748}

GET /fapi/v1/apiTradingStatus

Weight:

  • 1 for a single symbol
  • 10 when the symbol parameter is omitted

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNO
timestampLONGYES

User Commission Rate (USER_DATA)#

Response:

{    "symbol": "BTCUSDT",    "makerCommissionRate": "0.0002",  // 0.02%    "takerCommissionRate": "0.0004"   // 0.04%}

GET /fapi/v1/commissionRate (HMAC SHA256)

Weight: 20

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
recvWindowLONGNO
timestampLONGYES

Get Download Id For Futures Transaction History (USER_DATA)#

Response:

{    "avgCostTimestampOfLast30d":7241837, // Average time taken for data download in the past 30 days    "downloadId":"546975389218332672",}

GET /fapi/v1/income/asyn (HMAC SHA256)

Weight: 5

Parameters:

NameTypeMandatoryDescription
startTimeLONGYES
endTimeLONGYES
recvWindowLONGNO
timestampLONGYES
  • Request Limitation is 5 times per month, shared by front end download page and rest api

Get Futures Transaction History Download Link by Id (USER_DATA)#

Response:

{    "downloadId":"545923594199212032",    "status":"completed",     // Enum:completed,processing    "url":"www.binance.com",  // The link is mapped to download id    "notified":true,          // ignore    "expirationTimestamp":1645009771000,  // The link would expire after this timestamp    "isExpired":null,}

OR (Response when server is processing)

{    "downloadId":"545923594199212032",    "status":"processing",    "url":"",     "notified":false,    "expirationTimestamp":-1    "isExpired":null,    }

GET /fapi/v1/income/asyn/id (HMAC SHA256)

Weight: 5

Parameters:

NameTypeMandatoryDescription
downloadIdSTRINGYESget by download id api
recvWindowLONGNO
timestampLONGYES
  • Download link expiration: 24h

User Data Streams

  • The base API endpoint is: https://fapi.binance.com

  • A User Data Stream listenKey is valid for 60 minutes after creation.

  • Doing a PUT on a listenKey will extend its validity for 60 minutes, if response -1125 error "This listenKey does not exist." Please use POST /fapi/v1/listenKey to recreate listenKey.

  • Doing a DELETE on a listenKey will close the stream and invalidate the listenKey.

  • Doing a POST on an account with an active listenKey will return the currently active listenKey and extend its validity for 60 minutes.

  • There are two connection methods for Websocket:

    • Base Url 1: wss://fstream.binance.com

    • User Data Streams are accessed at /ws/\<listenKey>

    • Example: wss://fstream.binance.com/ws/XaEAKTsQSRLZAGH9tuIu37plSRsdjmlAVBoNYPUITlTAko1WI22PgmBMpI1rS8Yh

    • Base Url 2: wss://fstream-auth.binance.com

    • User Data Streams are accessed at /ws/\<listenKey>?listenKey=\<validateListenKey>

    • \<validateListenKey> must be a valid listenKey when you establish a connection

    • Example:

    • wss://fstream-auth.binance.com/ws/XaEAKTsQSRLZAGH9tuIu37plSRsdjmlAVBoNYPUITlTAko1WI22PgmBMpI1rS8Yh?listenKey=XaEAKTsQSRLZAGH9tuIu37plSRsdjmlAVBoNYPUITlTAko1WI22PgmBMpI1rS8Yh

  • For one connection(one user data), the user data stream payloads can guaranteed to be in order during heavy periods; Strongly recommend you order your updates using E

  • A single connection is only valid for 24 hours; expect to be disconnected at the 24 hour mark

Start User Data Stream (USER_STREAM)#

Response:

{  "listenKey": "pqia91ma19a5s61cv6a81va65sdf19v8a65a1a5s61cv6a81va65sdf19v8a65a1"}

POST /fapi/v1/listenKey

Start a new user data stream. The stream will close after 60 minutes unless a keepalive is sent. If the account has an active listenKey, that listenKey will be returned and its validity will be extended for 60 minutes.

Weight: 1

Parameters:

None

Keepalive User Data Stream (USER_STREAM)#

Response:

{}

PUT /fapi/v1/listenKey

Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 60 minutes.

Weight: 1

Parameters:

None

Close User Data Stream (USER_STREAM)#

Response:

{}

DELETE /fapi/v1/listenKey

Close out a user data stream.

Weight: 1

Parameters:

None

Event: User Data Stream Expired#

Payload:

{    'e': 'listenKeyExpired',      // event type    'E': 1576653824250              // event time}

When the listenKey used for the user data stream turns expired, this event will be pushed.

Notice:

  • This event is not related to the websocket disconnection.
  • This event will be received only when a valid listenKey in connection got expired.
  • No more user data event will be updated after this event received until a new valid listenKey used.

Event: Margin Call#

Payload:

{    "e":"MARGIN_CALL",      // Event Type    "E":1587727187525,      // Event Time    "cw":"3.16812045",      // Cross Wallet Balance. Only pushed with crossed position margin call    "p":[                   // Position(s) of Margin Call      {        "s":"ETHUSDT",      // Symbol        "ps":"LONG",        // Position Side        "pa":"1.327",       // Position Amount        "mt":"CROSSED",     // Margin Type        "iw":"0",           // Isolated Wallet (if isolated position)        "mp":"187.17127",   // Mark Price        "up":"-1.166074",   // Unrealized PnL        "mm":"1.614445"     // Maintenance Margin Required      }    ]}   
  • When the user's position risk ratio is too high, this stream will be pushed.
  • This message is only used as risk guidance information and is not recommended for investment strategies.
  • In the case of a highly volatile market, there may be the possibility that the user's position has been liquidated at the same time when this stream is pushed out.

Event: Balance and Position Update#

Payload:

{  "e": "ACCOUNT_UPDATE",                // Event Type  "E": 1564745798939,                   // Event Time  "T": 1564745798938 ,                  // Transaction  "a":                                  // Update Data    {      "m":"ORDER",                      // Event reason type      "B":[                             // Balances        {          "a":"USDT",                   // Asset          "wb":"122624.12345678",       // Wallet Balance          "cw":"100.12345678",          // Cross Wallet Balance          "bc":"50.12345678"            // Balance Change except PnL and Commission        },        {          "a":"BUSD",                     "wb":"1.00000000",          "cw":"0.00000000",                   "bc":"-49.12345678"        }      ],      "P":[        {          "s":"BTCUSDT",            // Symbol          "pa":"0",                 // Position Amount          "ep":"0.00000",            // Entry Price          "cr":"200",               // (Pre-fee) Accumulated Realized          "up":"0",                     // Unrealized PnL          "mt":"isolated",              // Margin Type          "iw":"0.00000000",            // Isolated Wallet (if isolated position)          "ps":"BOTH"                   // Position Side        }        {            "s":"BTCUSDT",            "pa":"20",            "ep":"6563.66500",            "cr":"0",            "up":"2850.21200",            "mt":"isolated",            "iw":"13200.70726908",            "ps":"LONG"         },        {            "s":"BTCUSDT",            "pa":"-10",            "ep":"6563.86000",            "cr":"-45.04000000",            "up":"-1423.15600",            "mt":"isolated",            "iw":"6570.42511771",            "ps":"SHORT"        }      ]    }}

Event type is ACCOUNT_UPDATE.

  • When balance or position get updated, this event will be pushed.

    • ACCOUNT_UPDATE will be pushed only when update happens on user's account, including changes on balances, positions, or margin type.
    • Unfilled orders or cancelled orders will not make the event ACCOUNT_UPDATE pushed, since there's no change on positions.
    • "position" in ACCOUNT_UPDATE: Only symbols of changed positions will be pushed.
  • When "FUNDING FEE" changes to the user's balance, the event will be pushed with the brief message:

    • When "FUNDING FEE" occurs in a crossed position, ACCOUNT_UPDATE will be pushed with only the balance B(including the "FUNDING FEE" asset only), without any position P message.
    • When "FUNDING FEE" occurs in an isolated position, ACCOUNT_UPDATE will be pushed with only the balance B(including the "FUNDING FEE" asset only) and the relative position message P( including the isolated position on which the "FUNDING FEE" occurs only, without any other position message).
  • The field "m" represents the reason type for the event and may shows the following possible types:

    • DEPOSIT
    • WITHDRAW
    • ORDER
    • FUNDING_FEE
    • WITHDRAW_REJECT
    • ADJUSTMENT
    • INSURANCE_CLEAR
    • ADMIN_DEPOSIT
    • ADMIN_WITHDRAW
    • MARGIN_TRANSFER
    • MARGIN_TYPE_CHANGE
    • ASSET_TRANSFER
    • OPTIONS_PREMIUM_FEE
    • OPTIONS_SETTLE_PROFIT
    • AUTO_EXCHANGE
    • COIN_SWAP_DEPOSIT
    • COIN_SWAP_WITHDRAW
  • The field "bc" represents the balance change except for PnL and commission.

Event: Order Update#

Payload:

{    "e":"ORDER_TRADE_UPDATE",     // Event Type  "E":1568879465651,            // Event Time  "T":1568879465650,            // Transaction Time  "o":{                                 "s":"BTCUSDT",              // Symbol    "c":"TEST",                 // Client Order Id      // special client order id:      // starts with "autoclose-": liquidation order      // "adl_autoclose": ADL auto close order      // "settlement_autoclose-": settlement order for delisting or delivery    "S":"SELL",                 // Side    "o":"TRAILING_STOP_MARKET", // Order Type    "f":"GTC",                  // Time in Force    "q":"0.001",                // Original Quantity    "p":"0",                    // Original Price    "ap":"0",                   // Average Price    "sp":"7103.04",             // Stop Price. Please ignore with TRAILING_STOP_MARKET order    "x":"NEW",                  // Execution Type    "X":"NEW",                  // Order Status    "i":8886774,                // Order Id    "l":"0",                    // Order Last Filled Quantity    "z":"0",                    // Order Filled Accumulated Quantity    "L":"0",                    // Last Filled Price    "N":"USDT",             // Commission Asset, will not push if no commission    "n":"0",                // Commission, will not push if no commission    "T":1568879465650,          // Order Trade Time    "t":0,                      // Trade Id    "b":"0",                    // Bids Notional    "a":"9.91",                 // Ask Notional    "m":false,                  // Is this trade the maker side?    "R":false,                  // Is this reduce only    "wt":"CONTRACT_PRICE",      // Stop Price Working Type    "ot":"TRAILING_STOP_MARKET",    // Original Order Type    "ps":"LONG",                        // Position Side    "cp":false,                     // If Close-All, pushed with conditional order    "AP":"7476.89",             // Activation Price, only puhed with TRAILING_STOP_MARKET order    "cr":"5.0",                 // Callback Rate, only puhed with TRAILING_STOP_MARKET order    "pP": false,              // ignore    "si": 0,                  // ignore    "ss": 0,                  // ignore    "rp":"0"                            // Realized Profit of the trade  }  }

When new order created, order status changed will push such event. event type is ORDER_TRADE_UPDATE.

Side

  • BUY
  • SELL

Order Type

  • MARKET
  • LIMIT
  • STOP
  • TAKE_PROFIT
  • LIQUIDATION

Execution Type

  • NEW
  • CANCELED
  • CALCULATED - Liquidation Execution
  • EXPIRED
  • TRADE
  • AMENDMENT - Order Modified

Order Status

  • NEW
  • PARTIALLY_FILLED
  • FILLED
  • CANCELED
  • EXPIRED

Time in force

  • GTC
  • IOC
  • FOK
  • GTX

Working Type

  • MARK_PRICE
  • CONTRACT_PRICE

Liquidation and ADL:

  • If user gets liquidated due to insufficient margin balance:

    • c shows as "autoclose-XXX",X shows as "NEW"
  • If user has enough margin balance but gets ADL:

    • c shows as “adl_autoclose”,X shows as “NEW”

Event: Account Configuration Update previous Leverage Update#

Payload:

{    "e":"ACCOUNT_CONFIG_UPDATE",       // Event Type    "E":1611646737479,                 // Event Time    "T":1611646737476,                 // Transaction Time    "ac":{                                  "s":"BTCUSDT",                     // symbol    "l":25                             // leverage         }}   

Or

{    "e":"ACCOUNT_CONFIG_UPDATE",       // Event Type    "E":1611646737479,                 // Event Time    "T":1611646737476,                 // Transaction Time    "ai":{                             // User's Account Configuration    "j":true                           // Multi-Assets Mode    }}  

When the account configuration is changed, the event type will be pushed as ACCOUNT_CONFIG_UPDATE

When the leverage of a trade pair changes, the payload will contain the object ac to represent the account configuration of the trade pair, where s represents the specific trade pair and l represents the leverage

When the user Multi-Assets margin mode changes the payload will contain the object ai representing the user account configuration, where j represents the user Multi-Assets margin mode

Event: STRATEGY_UPDATE#

Payload:

{    "e": "STRATEGY_UPDATE", // Event Type    "T": 1669261797627, // Transaction Time    "E": 1669261797628, // Event Time    "su": {            "si": 176054594, // Strategy ID            "st": "GRID", // Strategy Type            "ss": "NEW", // Strategy Status            "s": "BTCUSDT", // Symbol            "ut": 1669261797627, // Update Time            "c": 8007 // opCode        }}

STRATEGY_UPDATE update when a strategy is created/cancelled/expired, ...etc.

Strategy Status

  • NEW
  • WORKING
  • CANCELLED
  • EXPIRED

opCode

  • 8001: The strategy params have been updated
  • 8002: User cancelled the strategy
  • 8003: User manually placed or cancelled an order
  • 8004: The stop limit of this order reached
  • 8005: User position liquidated
  • 8006: Max open order limit reached
  • 8007: New grid order
  • 8008: Margin not enough
  • 8009: Price out of bounds
  • 8010: Market is closed or paused
  • 8011: Close position failed, unable to fill
  • 8012: Exceeded the maximum allowable notional value at current leverage
  • 8013: Grid expired due to incomplete KYC verification or access from a restricted jurisdiction
  • 8014: Violated Futures Trading Quantitative Rules. Strategy stopped
  • 8015: User position empty or liquidated

Event: GRID_UPDATE#

Payload:

{    "e": "GRID_UPDATE", // Event Type    "T": 1669262908216, // Transaction Time    "E": 1669262908218, // Event Time    "gu": {             "si": 176057039, // Strategy ID            "st": "GRID", // Strategy Type            "ss": "WORKING", // Strategy Status            "s": "BTCUSDT", // Symbol            "r": "-0.00300716", // Realized PNL            "up": "16720", // Unmatched Average Price            "uq": "-0.001", // Unmatched Qty            "uf": "-0.00300716", // Unmatched Fee            "mp": "0.0", // Matched PNL            "ut": 1669262908197 // Update Time        }}

GRID_UPDATE update when a sub order of a grid is filled or partially filled.

Strategy Status

  • NEW
  • WORKING
  • CANCELLED
  • EXPIRED

Event: Conditional_Order_Trigger_Reject_Update#

Payload:

{    "e":"CONDITIONAL_ORDER_TRIGGER_REJECT",      // Event Type    "E":1587727187525,      // Event Time    "T":1587727187525,      // me message send Time    "or":{      "s":"ETHUSDT",      // Symbol         "i":"2341243124",      // orderId      "r":"FOK_ORDER_REJECT",      // reject reason     }}  

CONDITIONAL_ORDER_TRIGGER_REJECT update when a triggered TP/SL order got rejected.

Classic Portfolio Margin Endpoints

The Binance Classic Portfolio Margin Program is a cross-asset margin program supporting consolidated margin balance across trading products with over 200+ effective crypto collaterals. It is designed for professional traders, market makers, and institutional users looking to actively trade & hedge cross-asset and optimize risk-management in a consolidated setup.

FAQ: Classic Portfolio Margin Program

Only Classic Portfolio Margin Account is accessible to these endpoints. To enroll, kindly refer to: How to Enroll into the Binance Classic Portfolio Margin Program

Classic Portfolio Margin Exchange Information#

Response:

{    "notionalLimits": [ // Classic Portfolio Margin notional limit        {            "symbol": "BTCUSDT", // Symbol            "notionalLimit": "100000000" // Classic Portfolio Margin Notional Limit in USDT        },        {            "symbol": "ETHUSDT",                   "notionalLimit": "20000000"        },    ]}

GET /fapi/v1/pmExchangeInfo

Current Classic Portfolio Margin exchange trading rules.

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO

Classic Portfolio Margin Account Information (USER_DATA)#

Response:

{    "maxWithdrawAmountUSD": "1627523.32459208",   // Classic Portfolio margin maximum virtual amount for transfer out in USD    "asset": "BTC",            // asset name    "maxWithdrawAmount": "27.43689636",        // maximum amount for transfer out}

GET /fapi/v1/pmAccountInfo

Get Classic Portfolio Margin current account information.

Weight(IP): 5

Parameters:

NameTypeMandatoryDescription
assetSTRINGYES
recvWindowLONGNO
timestampLONGYES
  • maxWithdrawAmount is for asset transfer out to the spot wallet.

Error Codes

Here is the error JSON payload:

{  "code":-1121,  "msg":"Invalid symbol."}

Errors consist of two parts: an error code and a message.
Codes are universal,but messages can vary.

10xx - General Server or Network issues#

-1000 UNKNOWN#

  • An unknown error occured while processing the request.

-1001 DISCONNECTED#

  • Internal error; unable to process your request. Please try again.

-1002 UNAUTHORIZED#

  • You are not authorized to execute this request.

-1003 TOO_MANY_REQUESTS#

  • Too many requests queued.
  • Too many requests; please use the websocket for live updates.
  • Too many requests; current limit is %s requests per minute. Please use the websocket for live updates to avoid polling the API.
  • Way too many requests; IP banned until %s. Please use the websocket for live updates to avoid bans.

-1004 DUPLICATE_IP#

  • This IP is already on the white list

-1005 NO_SUCH_IP#

  • No such IP has been white listed

-1006 UNEXPECTED_RESP#

  • An unexpected response was received from the message bus. Execution status unknown.

-1007 TIMEOUT#

  • Timeout waiting for response from backend server. Send status unknown; execution status unknown.

-1010 ERROR_MSG_RECEIVED#

  • ERROR_MSG_RECEIVED.

-1011 NON_WHITE_LIST#

  • This IP cannot access this route.

-1013 INVALID_MESSAGE#

  • INVALID_MESSAGE.

-1014 UNKNOWN_ORDER_COMPOSITION#

  • Unsupported order combination.

-1015 TOO_MANY_ORDERS#

  • Too many new orders.
  • Too many new orders; current limit is %s orders per %s.

-1016 SERVICE_SHUTTING_DOWN#

  • This service is no longer available.

-1020 UNSUPPORTED_OPERATION#

  • This operation is not supported.

-1021 INVALID_TIMESTAMP#

  • Timestamp for this request is outside of the recvWindow.
  • Timestamp for this request was 1000ms ahead of the server's time.

-1022 INVALID_SIGNATURE#

  • Signature for this request is not valid.

-1023 START_TIME_GREATER_THAN_END_TIME#

  • Start time is greater than end time.

11xx - Request issues#

-1100 ILLEGAL_CHARS#

  • Illegal characters found in a parameter.
  • Illegal characters found in parameter '%s'; legal range is '%s'.

-1101 TOO_MANY_PARAMETERS#

  • Too many parameters sent for this endpoint.
  • Too many parameters; expected '%s' and received '%s'.
  • Duplicate values for a parameter detected.

-1102 MANDATORY_PARAM_EMPTY_OR_MALFORMED#

  • A mandatory parameter was not sent, was empty/null, or malformed.
  • Mandatory parameter '%s' was not sent, was empty/null, or malformed.
  • Param '%s' or '%s' must be sent, but both were empty/null!

-1103 UNKNOWN_PARAM#

  • An unknown parameter was sent.

-1104 UNREAD_PARAMETERS#

  • Not all sent parameters were read.
  • Not all sent parameters were read; read '%s' parameter(s) but was sent '%s'.

-1105 PARAM_EMPTY#

  • A parameter was empty.
  • Parameter '%s' was empty.

-1106 PARAM_NOT_REQUIRED#

  • A parameter was sent when not required.
  • Parameter '%s' sent when not required.

-1108 BAD_ASSET#

  • Invalid asset.

-1109 BAD_ACCOUNT#

  • Invalid account.

-1110 BAD_INSTRUMENT_TYPE#

  • Invalid symbolType.

-1111 BAD_PRECISION#

  • Precision is over the maximum defined for this asset.

-1112 NO_DEPTH#

  • No orders on book for symbol.

-1113 WITHDRAW_NOT_NEGATIVE#

  • Withdrawal amount must be negative.

-1114 TIF_NOT_REQUIRED#

  • TimeInForce parameter sent when not required.

-1115 INVALID_TIF#

  • Invalid timeInForce.

-1116 INVALID_ORDER_TYPE#

  • Invalid orderType.

-1117 INVALID_SIDE#

  • Invalid side.

-1118 EMPTY_NEW_CL_ORD_ID#

  • New client order ID was empty.

-1119 EMPTY_ORG_CL_ORD_ID#

  • Original client order ID was empty.

-1120 BAD_INTERVAL#

  • Invalid interval.

-1121 BAD_SYMBOL#

  • Invalid symbol.

-1125 INVALID_LISTEN_KEY#

  • This listenKey does not exist. Please use POST /fapi/v1/listenKey to recreate listenKey

-1127 MORE_THAN_XX_HOURS#

  • Lookup interval is too big.
  • More than %s hours between startTime and endTime.

-1128 OPTIONAL_PARAMS_BAD_COMBO#

  • Combination of optional parameters invalid.

-1130 INVALID_PARAMETER#

  • Invalid data sent for a parameter.
  • Data sent for parameter '%s' is not valid.