Skip to main content

Spot/Margin/Savings/Mining

中文版

Change Log

2021-09-18

  • New endpoints for BSwap:
    • GET /sapi/v1/bswap/poolConfigure to get pool configure
    • GET /sapi/v1/bswap/addLiquidityPreview to get add liquidity preview
    • GET /sapi/v1/bswap/removeLiquidityPreview to get remove liquidity preview

2021-09-17

  • Add/api/*and/sapi/* limit introduction in General Info

2021-09-08

  • Add endpoints for enabled isolated margin account limit:

    • DELETE /sapi/v1/margin/isolated/account to disable isolated margin account for a specific symbol
    • POST /sapi/v1/margin/isolated/account to enable isolated margin account for a specific symbol
    • GET /sapi/v1/margin/isolated/accountLimit to query enabled isolated margin account limit
  • New field "enabled" in response of GET /sapi/v1/margin/isolated/account to check if the isolated margin account is enabled


2021-09-03

  • Update endpoint for Wallet:
    * New fields `sameAddress`,`depositDust` and `specialWithdrawTips`added in `GET /sapi/v1/capital/config/getall` 
    sameAddress means if the coin needs to provide memo to withdraw depositDust means minimum creditable amount specialWithdrawTips means special tips for withdraw
    * New field `confirmNo`added in `GET /sapi/v1/capital/withdraw/history` to support query confirm times for withdraw history

2021-08-27

  • Update endpoint for Wallet:
    • New parameter withdrawOrderIdadded in GET /sapi/v1/capital/withdraw/history to support user query withdraw history by withdrawOrderId
    • New field unlockConfirmadded in GET /sapi/v1/capital/deposit/hisrec to support query network confirm times for unlocking

2021-08-23

  • New endpoints for Margin Account OCO:
    • POST /sapi/v1/margin/order/oco
    • DELETE /sapi/v1/margin/orderList
    • GET /sapi/v1/margin/orderList
    • GET /sapi/v1/margin/allOrderList
    • GET /sapi/v1/margin/openOrderList

Same usage as spot account OCO


2021-08-20

  • Update endpoint for Wallet:
    • New parametersfromSymbol,toSymboland new transfer types ISOLATEDMARGIN_MARGIN, MARGIN_ISOLATEDMARGINand ISOLATEDMARGIN_ISOLATEDMARGIN added in POST /sapi/v1/asset/transfer and GET /sapi/v1/asset/transfer to support user transfer assets between Margin(cross) account and Margin(isolated) account

2021-08-12

  • GET api/v3/myTrades has a new optional field orderId

2021-08-05

  • New endpoint for C2C:
    • GET /sapi/v1/c2c/orderMatch/listUserOrderHistory to query user C2C trade history

2021-08-05

  • Update endpoints for Savings:
    • GET /sapi/v1/lending/union/purchaseRecord
    • GET /sapi/v1/lending/union/redemptionRecord
    • GET /sapi/v1/lending/union/interestHistory

The time between startTime and endTime cannot be longer than 30 days. If startTime and endTime are both not sent, then the last 30 days' data will be returned


2021-07-29

  • Update endpoint for Sub-Account:
    • GET /sapi/v1/sub-account/transfer/subUserHistory if startTimeandendTimeare not sent, the recent 30-day data will be returned by default

2021-07-27

  • New endpoint for Fiat:
    • GET /sapi/v1/fiat/orders to query user fiat deposit and withdraw history
    • GET /sapi/v1/fiat/payments to query user fiat payments history

2021-07-16

  • New endpoint for Wallet:
    • GET /sapi/v1/account/apiRestrictions to query user API Key permission

2021-07-09

  • New endpoint for Wallet:
    • POST /sapi/v1/asset/get-funding-asset to query funding wallet, includes Binance Pay, Binance Card, Binance Gift Card, Stock Token

2021-06-24

  • Update endpoints for Wallet:
    • GET /sapi/v1/capital/withdraw/history added default value 1000, max value 1000 for the parameterlimit
    • GET /sapi/v1/capital/deposit/hisrec added default value 1000, max value 1000 for the parameterlimit

2021-06-17

  • Update endpoint for Savings:
    • GET /sapi/v1/lending/daily/product/list to include new parameters current and size

2021-06-15

  • New endpoints for Sub-Account:
    • POST /sapi/v1/managed-subaccount/deposit to deposit assets into the managed sub-account (only for investor master account)
    • GET /sapi/v1/managed-subaccount/asset to query managed sub-account asset details (only for investor master account)
    • POST /sapi/v1/managed-subaccount/withdraw to withdrawal assets from the managed sub-account (only for investor master account)

2021-06-04

On August 01, 2021 02:00 AM UTC the WAPI endpoints will be discontinued:

  • GET /wapi/v3/systemStatus.html
  • POST /wapi/v3/withdraw.html
  • GET /wapi/v3/depositHistory.html
  • GET /wapi/v3/withdrawHistory.html
  • GET /wapi/v3/depositAddress.html
  • GET /wapi/v3/accountStatus.html
  • GET /wapi/v3/apiTradingStatus.html
  • GET /wapi/v3/userAssetDribbletLog.html
  • GET /wapi/v3/assetDetail.html
  • GET /wapi/v3/tradeFee.html
  • GET /wapi/v3/sub-account/list.html
  • GET /wapi/v3/sub-account/transfer/history.html
  • POST /wapi/v3/sub-account/transfer.html
  • GET /wapi/v3/sub-account/assets.html

The WAPI endpoints have been removed from Binance API Documentation.To ensure your trading strategies are not affected, all API users are encouraged to upgrade trading bots to SAPI endpoints as soon as possible.


2021-05-26

  • Update endpoint for Wallet:
    • New transfer types MAIN_PAY ,PAY_MAIN added in Universal Transfer endpoint POST /sapi/v1/asset/transfer and GET /sapi/v1/asset/transfer to support trasnfer assets between spot account and pay account

2021-05-12

  • Added Data Source in the documentation to explain where each endpoint is retrieving its data
  • Added field Data Source to each Spot API endpoint in the documentation
  • GET api/v3/exchangeInfo now supports single or multi-symbol query

2021-04-28

On May 15, 2021 08:00 UTC the SAPI Create Margin Account endpoint will be discontinued:

  • POST /sapi/v1/margin/isolated/create

Isolated Margin account creation and trade preparation can be completed directly through Isolated Margin funds transfer POST /sapi/v1/margin/isolated/transfer


2021-04-26

On April 28, 2021 00:00 UTC the weights to the following endpoints will be adjusted:

  • GET /api/v3/order weight increased to 2
  • GET /api/v3/openOrders weight increased to 3
  • GET /api/v3/allOrders weight increased to 10
  • GET /api/v3/orderList weight increased to 2
  • GET /api/v3/openOrderList weight increased to 3
  • GET /api/v3/account weight increased to 10
  • GET /api/v3/myTrades weight increased to 10
  • GET /api/v3/exchangeInfo weight increased to 10

2021-04-08

  • Update endpoint for Sub-Account:
    • GET /sapi/v1/sub-account/futures/accountSummary and GET /sapi/v2/sub-account/futures/accountSummary the unit of field asset changed to USD valued summary of sub-account assets

2021-04-02

  • New endpoints for Wallet:
    • GET /sapi/v1/system/status to query system status
    • GET /sapi/v1/account/status to query account status
    • GET /sapi/v1/account/apiTradingStatus to query account API trading status
    • GET /sapi/v1/asset/dribblet to query dust log
    • GET /sapi/v1/asset/assetDetail to query asset detail
    • GET /sapi/v1/asset/tradeFee to query trade fee
  • New endpoint for Sub-Account:
    • GET /sapi/v3/sub-account/assets to query sub-account assets

2021-04-01

  • Update endpoint for Sub-Account:
    • GET /sapi/v1/sub-account/transfer/subUserHistory new fields fromAccountType and toAccountType added in response

2021-03-31

  • Update endpoint for Sub-Account:
    • GET /wapi/v3/sub-account/transfer/history.html added new parameters fromEmail and toEmail, the original parameteremail is equal tofromEmailby default

2021-03-08

  • New endpoint for Sub-Account:
    • POST /sapi/v1/sub-account/virtualSubAccount to support create a virtual sub-account
    • GET /sapi/v1/sub-account/list to support query sub-account list
    • POST /sapi/v1/sub-account/blvt/enable to support enable blvt for sub-account

2021-03-05

  • New endpoints for Margin:
    • GET /sapi/v1/margin/interestRateHistory to support margin interest rate history query

2021-02-08

  • New endpoints for Futures:
    • GET /sapi/v2/futures/loan/wallet to support BUSD loan query
    • GET /sapi/v2/futures/loan/configs to support BUSD loan query
    • GET /sapi/v2/futures/loan/calcAdjustLevel to support BUSD loan
    • GET /sapi/v2/futures/loan/calcMaxAdjustAmount to support adjustment of BUSD loan
    • POST /sapi/v2/futures/loan/adjustCollateral to support adjustment of BUSD loan
  • Update endpoints for Futures
    • GET /sapi/v1/futures/loan/adjustCollateral/history new parameter and fields in response loanCoin for BUSD loan
    • GET /sapi/v1/futures/loan/liquidationHistory new parameter and fields in response loanCoin for BUSD loan

2021-02-04

  • New transfer types MARGIN_MINING ,MINING_MARGIN, MARGIN_C2C ,C2C_MARGIN, MARGIN_CMFUTURE, CMFUTURE_MARGIN added in Universal Transfer endpoint POST /sapi/v1/asset/transfer and GET /sapi/v1/asset/transfer.

2021-01-15

  • New endpoint DELETE /sapi/v1/margin/openOrders for Margin Trade
    • This will allow a user to cancel all open orders on a single symbol for margin account.
    • This endpoint will cancel all open orders including OCO orders for margin account.

2021-01-10

  • New parameter pageSize for Mining endpoint GET /sapi/v1/mining/payment/list

  • New fields in response to Mining endpoint GET /sapi/v1/mining/payment/list:

    • "type" for income type
    • "hashTransfer" for resale Hashrate
    • "transferAmount" for transferred Income
  • New Mining endpoints:

    • GET /sapi/v1/mining/payment/other
    • GET /sapi/v1/mining/hash-transfer/config/details
    • GET /sapi/v1/mining/hash-transfer/config/details/list
    • GET /sapi/v1/mining/hash-transfer/profit/details
    • POST /sapi/v1/mining/hash-transfer/config
    • POST /sapi/v1/mining/hash-transfer/config/cancel

2021-01-01

USER DATA STREAM

  • outboundAccountInfo has been removed.

2020-12-30

  • New endpoint for Wallet:
    • POST /sapi/v1/asset/transfer to support user universal transfer among Spot, Margin, Futures, C2C, MINING accounts.
    • GET /sapi/v1/asset/transfer to get user universal transfer history.

2020-12-22

  • New endpoint for Sub-Account:
    • GET /sapi/v1/sub-account/sub/transfer/history to get spot asset transfer history.

2020-12-11

  • Update endpoints for Futures Cross-Collateral:
    • GET /sapi/v1/futures/loan/wallet new fields in response interestFreeLimit for total interest free limit, interestFreeLimitUsed for interest free limit used.
    • GET /sapi/v1/futures/loan/interestHistory new fields in response interestFreeLimitUsed for interest free limit used.

2020-12-04

  • Update endpoint for BLVT:
    • GET /sapi/v1/blvt/tokenInfo new fields in response currentBaskets(include symbol, amount , notionalValue ),purchaseFeePct,dailyPurchaseLimit,redeemFeePct,dailyRedeemLimit.
  • New endpoint for BLVT:
    • GET /sapi/v1/blvt/userLimit to get BLVT user limit info.

2020-12-02

  • New endpoints for Sub-Account:
    • GET /sapi/v2/sub-account/futures/account to get detail on sub-account's USDT margined futures account and COIN margined futures account.
    • GET /sapi/v2/sub-account/futures/accountSummary to get summary of sub-account's USDT margined futures account and COIN margined futures account.
    • GET /sapi/v2/sub-account/futures/positionRisk to get position risk of sub-account's USDT margined futures account and COIN margined futures account.

2020-12-01

  • Update Margin Trade Endpoint:
    • POST /sapi/v1/margin/order new parameter quoteOrderQty allow a user to specify the total quoteOrderQty spent or received in the MARKET order.

2020-11-27

New API clusters have been added in order to improve performance.

Users can access any of the following API clusters, in addition to api.binance.com

If there are any performance issues with accessing api.binance.com please try any of the following instead:


2020-11-16

  • Updated endpoints for Margin, new parameter archived to query data from 6 months ago:
    • GET /sapi/v1/margin/loan
    • GET /sapi/v1/margin/repay
    • GET /sapi/v1/margin/interestHistory

2020-11-13

  • New endpoints for Sub-Account:
    • POST /sapi/v1/sub-account/universalTransfer to transfer spot and futures asset between master account and sub accounts.
    • GET /sapi/v1/sub-account/universalTransfer to search transfer records.

2020-11-10

  • New endpoint to toggle BNB Burn:
    • POST /sapi/v1/bnbBurn to toggle BNB Burn on spot trade and margin interest.
    • GET /sapi/v1/bnbBurn to get BNB Burn status.

2020-11-09

  • New field tranId is available from endpoints:
    • GET /sapi/v1/sub-account/futures/internalTransfer
    • GET /sapi/v1/sub-account/transfer/subUserHistory

2020-11-03

  • Update endpoints for Futures Cross-Collateral:

    • GET /sapi/v1/futures/loan/repay/history new fields in response repayType(NORMAL for normal repayment, COLLATERAL for collateral repayment), price (collateral repayment rate), repayCollateral(collateral amount for collateral repayment).
    • GET /sapi/v1/futures/loan/wallet new fields in response totalInterest (total interest for cross-collateral), principalForInterest(cross-collateral principal for interest), interest(cross-collateral interest).
    • GET /sapi/v1/futures/loan/configs new fields in response interestRate (interest rate for cross-collateral), interestGracePeriod (interest grace period for cross-collateral).
  • New endpoints for Futures Cross-Collateral:

    • GET /sapi/v1/futures/loan/collateralRepayLimit to check the maximum and minimum limit when repay with collateral.
    • GET /sapi/v1/futures/loan/collateralRepay to get quote for collateral repayment.
    • POST /sapi/v1/futures/loan/collateralRepay to repay with collateral.
    • GET /sapi/v1/futures/loan/collateralRepayResult to check collateral repayment result.
    • GET /sapi/v1/futures/loan/interestHistory to get cross-collateral interest history.

2020-10-14

  • Update endpoints for Futures Cross-Collateral:
    • POST /sapi/v1/futures/loan/borrow and GET /sapi/v1/futures/loan/borrow/history new field borrowId in response for ID of Cross-Collateral borrow operation.
    • POST /sapi/v1/futures/loan/repay and GET /sapi/v1/futures/loan/repay/history new field repayId in response for ID of Cross-Collateral repay operation.

2020-10-10

  • New type added in the endpoint POST /sapi/v1/sub-account/futures/transferto support transfer asset from subaccount's spot account to its COIN-margined futures account and transfer asset from subaccount's COIN-margined futures account to its spot account.

2020-09-30

  • Update endpoints for Margin Account:
    • GET /sapi/v1/margin/maxBorrowable new field borrowLimit in response for account borrow limit.

2020-09-28

  • New endpoints for Binance Savings:
    • POST /sapi/v1/lending/positionChanged to change fixed/activity position to daily position.
  • New parameter ACTIVITY replace REGULARin the following Binance Savings endpoints:
    • GET /sapi/v1/lending/project/list
    • POST /sapi/v1/lending/customizedFixed/purchase
    • GET /sapi/v1/lending/project/position/list
    • GET /sapi/v1/lending/union/purchaseRecord
    • GET /sapi/v1/lending/union/interestHistory

2020-09-23

  • New SAPI endpoints for BSwap:
    • GET /sapi/v1/bswap/pools to list all swap pools.
    • GET /sapi/v1/bswap/liquidity to get liquidity information of a pool.
    • POST /sapi/v1/bswap/liquidityAdd to add liquidity.
    • POST /sapi/v1/bswap/liquidityRemove to remove liquidity.
    • GET /sapi/v1/bswap/liquidityOps to get liquidity operation record.
    • GET /sapi/v1/bswap/quote to request quotes.
    • POST /sapi/v1/bswap/swap to swap.
    • GET /sapi/v1/bswap/swap to get swap history.

2020-09-16

  • New SAPI endpoints for BLVT:
    • GET /sapi/v1/blvt/tokenInfo to get BLVT info.
    • POST /sapi/v1/blvt/subscribe (HMAC SHA256) to subscribe BLVT.
    • GET /sapi/v1/blvt/subscribe/record (HMAC SHA256) to get subscription record。
    • POST /sapi/v1/blvt/redeem (HMAC SHA256) to redeem BLVT.
    • GET /sapi/v1/blvt/redeem/record (HMAC SHA256 to get redemption record.
  • The BLVT NAV system is working relatively with Binance Futures, so some endpoints are based on futures system:
    • New endpoint to get historical BLVT Kline.
    • New WebSocket streams for BLVT Info and BLVT NAV Kline:

2020-09-09

USER DATA STREAM

  • outboundAccountInfo has been deprecated.
  • outboundAccountInfo will be removed in the future. (Exact date unknown) Please use outboundAccountPosition instead.
  • outboundAccountInfo will now only show the balance of non-zero assets and assets that have been reduced to 0.

2020-09-03

  • New endpoint POST /sapi/v1/sub-account/futures/internalTransfer to transfer futures asset between master account and subaccount.
  • New endpointGET /sapi/v1/sub-account/futures/internalTransfer to get futures transfer history of subaccount.

2020-09-01

  • New parameter masterAccountTotalAsset added in the endpoint GET /sapi/v1/sub-account/spotSummary to get BTC valued asset summary of master account.

2020-08-27

  • New endpoint GET /sapi/v1/sub-account/spotSummary to get BTC valued asset summary of subaccout.

2020-08-26

  • New parameter symbols added in the endpoint GET /sapi/v1/margin/isolated/account.

2020-07-28

ISOLATED MARGIN

  • New parameters "isIsolated" and "symbol" added for isolated margin in the following endpoints:

    • POST /sapi/v1/margin/loan
    • POST /sapi/v1/margin/repay
  • New parameter "isIsolated" and new response field "isIsolated" added for isolated margin in the following endpoints:

    • POST /sapi/v1/margin/order
    • DELETE /sapi/v1/margin/order
    • GET /sapi/v1/margin/order
    • GET /sapi/v1/margin/openOrders
    • GET /sapi/v1/margin/allOrders
    • GET /sapi/v1/margin/myTrades
  • New parameter "isolatedSymbol" and new response field "isolatedSymbol" added for isolated margin in the following endpoints:

    • GET /sapi/v1/margin/loan
    • GET /sapi/v1/margin/repay
    • GET /sapi/v1/margin/interestHistory
  • New parameter "isolatedSymbol" and new response field "isIsolated" added for isolated margin in the following endpoint GET /sapi/v1/margin/forceLiquidationRec

  • New parameter "isolatedSymbol" added for isolated margin in the following endpoints:

    • GET /sapi/v1/margin/maxBorrowable
    • GET /sapi/v1/margin/maxTransferable
  • New endpoints for isolated margin:

    • POST /sapi/v1/margin/isolated/create
    • POST /sapi/v1/margin/isolated/transfer
    • GET /sapi/v1/margin/isolated/transfer
    • GET /sapi/v1/margin/isolated/account
    • GET /sapi/v1/margin/isolated/pair
    • GET /sapi/v1/margin/isolated/allPairs
  • New endpoints for listenKey management of isolated margin account:

    • POST /sapi/v1/userDataStream/isolated
    • PUT /sapi/v1/userDataStream/isolated
    • DELETE /sapi/v1/userDataStream/isolated

2020-07-20

  • The max value of parameter "limit" in GET /sapi/v1/margin/allOrders has been changed as 500.

2020-07-17

  • There is now a request limit specifically for the sapi/v1/margin/allOrders endpoint at 60 raw requests per minute for a single IP address.

2020-07-13

  • New SAPI Endpoints for futures Cross-Collateral:
    • POST /sapi/v1/futures/loan/borrow
    • GET /sapi/v1/futures/loan/borrow/history
    • POST /sapi/v1/futures/loan/repay
    • GET /sapi/v1/futures/loan/repay/history
    • GET /sapi/v1/futures/loan/wallet
    • GET /sapi/v1/futures/loan/configs
    • GET /sapi/v1/futures/loan/calcAdjustLevel
    • GET /sapi/v1/futures/loan/calcMaxAdjustAmount
    • POST /sapi/v1/futures/loan/adjustCollateral
    • GET /sapi/v1/futures/loan/adjustCollateral/history
    • GET /sapi/v1/futures/loan/liquidationHistory

2020-06-28

  • SAPI Endpoints for futures:
    • POST /sapi/v1/futures/transfer
    • GET /sapi/v1/futures/transfer

2020-05-06

  • New endpoints for Mining:
    • GET /sapi/v1/mining/pub/algoList
    • GET /sapi/v1/mining/pub/coinList
    • GET /sapi/v1/mining/worker/detail
    • GET /sapi/v1/mining/worker/list
    • GET /sapi/v1/mining/payment/list
    • GET /sapi/v1/mining/statistics/user/status
    • GET /sapi/v1/mining/statistics/user/list

2020-05-03

  • New request limit for some margin endpoints
    • Changes on these endpoints:
      • POST /sapi/v1/margin/transfer
      • POST /sapi/v1/margin/loan
      • POST /sapi/v1/margin/repay
    • Limit to 1 every 2 seconds。
    • Request beyond the limit will receive HTTP status code 429

2020-05-01

  • From 2020-05-01 UTC 00:00, all symbols will have a limit of 200 open orders using the MAX_NUM_ORDERS filter.
    • No existing orders will be removed or canceled.
    • Accounts that have 200 or more open orders on a symbol will not be able to place new orders on that symbol until the open order count is below 200.
    • OCO orders count as 2 open orders before the LIMIT order is touched or the STOP_LOSS (or STOP_LOSS_LIMIT) order is triggered; once this happens the other order is canceled and will no longer count as an open order.

2020-04-25

SPOT API

  • New field permissions

    • Defines the trading permissions that are allowed on accounts and symbols.
    • permissions is an enum array; values:
      • SPOT
      • MARGIN
    • permissions will replace isSpotTradingAllowed and isMarginTradingAllowed on GET api/v3/exchangeInfo in future API versions (v4+).
    • For an account to trade on a symbol, the account and symbol must share at least 1 permission in common.
  • Updates to GET api/v3/exchangeInfo

    • New field permissions added.
    • New field quoteAssetPrecision added; a duplicate of the quotePrecision field. quotePrecision will be removed in future API versions (v4+).
  • Updates to GET api/v3/account

    • New field permissions added.
  • New endpoint DELETE api/v3/openOrders

    • This will allow a user to cancel all open orders on a single symbol.
    • This endpoint will cancel all open orders including OCO orders.
  • Orders can be canceled via the API on symbols in the BREAK or HALT status.

    USER DATA STREAM

  • OutboundAccountInfo has new field P which shows the trading permissions of the account.


2020-04-23

WEB SOCKET STREAM

  • WebSocket connections have a limit of 5 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 1024 streams.

2020-04-16

  • New fields in response to endpointGET /sapi/v1/lending/daily/token/position

    • todayPurchasedAmount for user's purchased amount today
  • New lending endpoints for customized fixed projects:

    • GET /sapi/v1/lending/project/list
    • POST /sapi/v1/lending/customizedFixed/purchase
    • GET /sapi/v1/lending/project/position/list

2020-04-02

  • New fields in response to endpointGET /sapi/v1/capital/config/getall
    • minConfirm for min number for balance confirmation
    • unLockConfirm for confirmation number for balance unlock

2020-03-24

  • MAX_POSITION filter added.

    • This filter defines the allowed maximum position an account can have on the base asset of a symbol. An account's position defined as the sum of the account's:

      • free balance of the base asset
      • locked balance of the base asset
      • sum of the qty of all open BUY orders
    • BUY orders will be rejected if the account's position is greater than the maximum position allowed.


2020-03-13

  • New parameter transactionFeeFlag is available in endpoint:
    • POST /sapi/v1/capital/withdraw/apply and
    • POST /wapi/v3/withdraw.html

2020-02-05

  • New sub account endpoints:
    • POST /sapi/v1/sub-account/futures/transfer to transfer between futures and spot accout of sub-account.
    • POST /sapi/v1/sub-account/margin/transfer to transfer between margin and spot accout of sub-account.
    • POST /sapi/v1/sub-account/transfer/subToSub to transfer to another account by sub-account.
    • POST /sapi/v1/sub-account/transfer/subToMaster to transfer to same master by sub-account.
    • GET /sapi/v1/sub-account/transfer/subUserHistory to get transfer history of sub-account.

2020-01-15

  • New parameter withdrawOrderId for client customized withdraw id for endpoint POST /wapi/v3/withdraw.html.

  • New field withdrawOrderId in response to GET /wapi/v3/withdrawHistory.html


2019-12-25

  • New endpoints for Binance Savings:

    • GET /sapi/v1/lending/daily/product/list
    • GET /sapi/v1/lending/daily/userLeftQuota
    • POST /sapi/v1/lending/daily/purchase
    • GET /sapi/v1/lending/daily/userRedemptionQuota
    • POST /sapi/v1/lending/daily/redeem
    • GET /sapi/v1/lending/daily/token/position
    • GET /sapi/v1/lending/union/account
    • GET /sapi/v1/lending/union/purchaseRecord
    • GET /sapi/v1/lending/union/redemptionRecord
    • GET /sapi/v1/lending/union/interestHistory
  • Added time interval limit in
    GET /sapi/v1/capital/withdraw/history,
    GET /wapi/v3/withdrawHistory.html,
    GET /sapi/v1/capital/deposit/hisrec and
    GET /wapi/v3/depositHistory.html:

    * The default `startTime` is 90 days from current time, and the default `endTime` is current time. * Please notice the default `startTime` and `endTime` to make sure that time interval is within 0-90 days.* If both ``startTime`` and ``endTime`` are sent, time between ``startTime`` and ``endTime`` must be less than 90 days.

2019-12-18

  • New endpoint to get daily snapshot of account:
    GET /sapi/v1/accountSnapshot

2019-11-30

  • Added parameter sideEffectType in POST /sapi/v1/margin/order (HMAC SHA256) with enums:

    • NO_SIDE_EFFECT for normal trade order;
    • MARGIN_BUY for margin trade order;
    • AUTO_REPAY for making auto repayment after order filled.
  • New field marginBuyBorrowAmount and marginBuyBorrowAsset in FULL response to POST /sapi/v1/margin/order (HMAC SHA256)


2019-11-28

  • New SAPI endpont to disable fast withdraw switch:
    POST /sapi/v1/account/disableFastWithdrawSwitch (HMAC SHA256)
  • New SAPI endpont to enable fast withdraw switch:
    POST /sapi/v1/account/enableFastWithdrawSwitch (HMAC SHA256)

2019-11-22

  • Quote Order Qty Market orders have been enabled on all symbols.
    • Quote Order Qty MARKET orders allow a user to specify the total quoteOrderQty spent or received in the MARKET order.
    • Quote Order Qty MARKET orders will not break LOT_SIZE filter rules; the order will execute a quantity that will have the notional value as close as possible to quoteOrderQty.
    • Using BNBBTC as an example:
      • On the BUY side, the order will buy as many BNB as quoteOrderQty BTC can.
      • On the SELL side, the order will sell as much BNB as needed to receive quoteOrderQty BTC.

2019-11-19

  • GET /sapi/v1/sub-account/margin/account has new field: marginTradeCoeffVo which contains
    • forceLiquidationBar for liquidation margin ratio
    • marginCallBar for margin call margin ratio
    • normalBar for initial margin ratio

2019-11-13

Rest API

  • api/v3/exchangeInfo has new fields:
    • quoteOrderQtyMarketAllowed
    • baseCommissionPrecision
    • quoteCommissionPrecision
  • MARKET orders have a new optional field: quoteOrderQty used to specify the quote quantity to BUY or SELL. This cannot be used in combination with quantity.
    • The exact timing that quoteOrderQty MARKET orders will be enabled is TBD. There will be a separate announcement and further details at that time.
  • All order query endpoints will return a new field origQuoteOrderQty in the JSON payload. (e.g. GET api/v3/allOrders)
    {      "code": -1128,      "msg": "Combination of optional parameters invalid. Recommendation: 'stopLimitTimeInForce' should also be sent."    }
  • Updated error messages for -1128

    • Sending an OCO with a stopLimitPrice but without a stopLimitTimeInForce will return the error:
  • Updated error messages for -1003 to specify the limit is referring to the request weight, not to the number of requests.

Deprecation of v1 endpoints:

By end of Q1 2020, the following endpoints will be removed from the API. The documentation has been updated to use the v3 versions of these endpoints.

  • GET api/v1/depth
  • GET api/v1/historicalTrades
  • GET api/v1/aggTrades
  • GET api/v1/klines
  • GET api/v1/ticker/24hr
  • GET api/v1/ticker/price
  • GET api/v1/exchangeInfo
  • POST api/v1/userDataStream
  • PUT api/v1/userDataStream
  • GET api/v1/ping
  • GET api/v1/time
  • GET api/v1/ticker/bookTicker

These endpoints however, will NOT be migrated to v3. Please use the following endpoints instead moving forward.

Old V1 EndpointsNew V3 Endpoints
GET api/v1/ticker/allPricesGET api/v3/ticker/price
GET api/v1/ticker/allBookTickersGET api/v3/ticker/bookTicker

USER DATA STREAM

  • Changes toexecutionReport event

    • If the C field is empty, it will now properly return null, instead of "null".
    • New field Q which represents the quoteOrderQty.
  • balanceUpdate event type added

    • This event occurs when funds are deposited or withdrawn from your account.

    WEB SOCKET STREAM

  • WSS now supports live subscribing/unsubscribing to streams.


2019-11-08

  • New sapi for subaccount management on margin and futures:
    • GET /sapi/v1/sub-account/status (HMAC SHA256)
    • POST /sapi/v1/sub-account/margin/enable (HMAC SHA256)
    • GET /sapi/v1/sub-account/margin/account (HMAC SHA256)
    • GET /sapi/v1/sub-account/margin/accountSummary (HMAC SHA256)
    • POST /sapi/v1/sub-account/futures/enable (HMAC SHA256)
    • GET /sapi/v1/sub-account/futures/account (HMAC SHA256)
    • GET /sapi/v1/sub-account/futures/accountSummary (HMAC SHA256)
    • GET /sapi/v1/sub-account/futures/positionRisk (HMAC SHA256)

2019-11-04

  • New sapi endpoints for subaccount wallet.
    • GET /sapi/v1/capital/deposit/subAddress (HMAC SHA256)): fetch subaccount deposit address.
    • GET /sapi/v1/capital/deposit/subHisrec (HMAC SHA256)): fetch subaccount deposit history.

2019-10-29

  • New sapi endpoints for wallet.
    • POST /sapi/v1/capital/withdraw/apply (HMAC SHA256): withdraw.
    • Get /sapi/v1/capital/withdraw/history (HMAC SHA256): fetch withdraw history with network.

2019-10-14

  • New sapi endpoints for wallet.
    • GET /sapi/v1/capital/config/getall (HMAC SHA256): get all coins' information for user.
    • GET /sapi/v1/capital/deposit/hisrec (HMAC SHA256): fetch deposit history with network.
    • GET /sapi/v1/capital/deposit/address (HMAC SHA256): fetch deposit address with network.

2019-10-11

  • Added parameter network in POST /wapi/v3/withdraw.html so that asset can be withdrawed with specific network.

2019-09-09

  • New WebSocket streams for bookTickers added: <symbol>@bookTicker and !bookTicker.

2019-09-03

  • Faster order book data with 100ms updates: <symbol>@depth@100ms and <symbol>@depth#@100ms
  • Added "Update Speed:" to Websocket Market Streams
  • Removed deprecated v1 endpoints as per previous announcement:
    • GET api/v1/order
    • GET api/v1/openOrders
    • POST api/v1/order
    • DELETE api/v1/order
    • GET api/v1/allOrders
    • GET api/v1/account
    • GET api/v1/myTrades

2019-08-16

  • GET api/v1/depth limit of 10000 has been temporarily removed

  • In Q4 2017, the following endpoints were deprecated and removed from the API documentation. They have been permanently removed from the API as of this version. We apologize for the omission from the original changelog:

    • GET api/v1/order
    • GET api/v1/openOrders
    • POST api/v1/order
    • DELETE api/v1/order
    • GET api/v1/allOrders
    • GET api/v1/account
    • GET api/v1/myTrades
  • Streams, endpoints, parameters, payloads, etc. described in the documents in this repository are considered official and supported. The use of any other streams, endpoints, parameters, or payloads, etc. is not supported; use them at your own risk and with no guarantees.


2019-09-15

Rest API

  • New order type: OCO ("One Cancels the Other")

    • An OCO has 2 orders: (also known as legs in financial terms)

      • STOP_LOSS or STOP_LOSS_LIMIT leg
      • LIMIT_MAKER leg
    • Price Restrictions:

      • SELL Orders : Limit Price > Last Price > Stop Price
      • BUY Orders : Limit Price < Last Price < Stop Price
      • As stated, the prices must "straddle" the last traded price on the symbol. EX: If the last price is 10:
        • A SELL OCO must have the limit price greater than 10, and the stop price less than 10.
        • A BUY OCO must have a limit price less than 10, and the stop price greater than 10.
    • Quantity Restrictions:

      • Both legs must have the same quantity.
      • ICEBERG quantities however, do not have to be the same.
    • Execution Order:

      • If the LIMIT_MAKER is touched, the limit maker leg will be executed first BEFORE canceling the Stop Loss Leg.
      • if the Market Price moves such that the STOP_LOSS or STOP_LOSS_LIMIT will trigger, the Limit Maker leg will be cancelled BEFORE executing the STOP_LOSS Leg.
    • Cancelling an OCO

      • Cancelling either order leg will cancel the entire OCO.
      • The entire OCO can be canceled via the orderListId or the listClientOrderId.
    • New Enums for OCO:

      1. ListStatusType
        • RESPONSE - used when ListStatus is responding to a failed action. (either order list placement or cancellation)
        • EXEC_STARTED - used when an order list has been placed or there is an update to a list's status.
        • ALL_DONE - used when an order list has finished executing and is no longer active.
      2. ListOrderStatus
        • EXECUTING - used when an order list has been placed or there is an update to a list's status.
        • ALL_DONE - used when an order list has finished executing and is no longer active.
        • REJECT - used when ListStatus is responding to a failed action. (either order list placement or cancellation)
      3. ContingencyType
        • OCO - specifies the type of order list.
    • New Endpoints:

      • POST api/v3/order/oco
      • DELETE api/v3/orderList
      • GET api/v3/orderList
  • recvWindow cannot exceed 60000.

  • New intervalLetter values for headers:

    • SECOND => S
    • MINUTE => M
    • HOUR => H
    • DAY => D
  • New Headers X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter) will give your current used request weight for the (intervalNum)(intervalLetter) rate limiter. For example, if there is a one minute request rate weight limiter set, you will get a X-MBX-USED-WEIGHT-1M header in the response. The legacy header X-MBX-USED-WEIGHT will still be returned and will represent the current used weight for the one minute request rate weight limit.

  • New Header X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter)that is updated on any valid order placement and tracks your current order count for the interval; rejected/unsuccessful orders are not guaranteed to have X-MBX-ORDER-COUNT-** headers in the response.

    • Eg. X-MBX-ORDER-COUNT-1S for "orders per 1 second" and X-MBX-ORDER-COUNT-1D for orders per "one day"
  • GET api/v1/depth now supports limit 5000 and 10000; weights are 50 and 100 respectively.

  • GET api/v1/exchangeInfo has a new parameter ocoAllowed.

USER DATA STREAM

  • executionReport event now contains "g" which has the orderListId; it will be set to -1 for non-OCO orders.
  • New Event Type listStatus; listStatus is sent on an update to any OCO order.
  • New Event Type outboundAccountPosition; outboundAccountPosition is sent any time an account's balance changes and contains the assets that could have changed by the event that generated the balance change (a deposit, withdrawal, trade, order placement, or cancelation).

NEW ERRORS

  • -1131 BAD_RECV_WINDOW
    • recvWindow must be less than 60000
  • -1099 Not found, authenticated, or authorized
    • This replaces error code -1999

NEW -2011 ERRORS

  • OCO_BAD_ORDER_PARAMS
    • A parameter for one of the orders is incorrect.
  • OCO_BAD_PRICES
    • The relationship of the prices for the orders is not correct.
  • UNSUPPORTED_ORD_OCO
    • OCO orders are not supported for this symbol.

2019-03-12

Rest API

  • X-MBX-USED-WEIGHT header added to Rest API responses.
  • Retry-After header added to Rest API 418 and 429 responses.
  • When canceling the Rest API can now return errorCode -1013 OR -2011 if the symbol's status isn't TRADING.
  • api/v1/depth no longer has the ignored and empty [].
  • api/v3/myTrades now returns quoteQty; the price * qty of for the trade.

Websocket streams

  • <symbol>@depth and <symbol>@depthX streams no longer have the ignored and empty [].

System improvements

  • Matching Engine stability/reliability improvements.
  • Rest API performance improvements.

2018-11-13

Rest API

  • Can now cancel orders through the Rest API during a trading ban.
  • New filters: PERCENT_PRICE, MARKET_LOT_SIZE, MAX_NUM_ICEBERG_ORDERS.
  • Added RAW_REQUESTS rate limit. Limits based on the number of requests over X minutes regardless of weight.
  • /api/v3/ticker/price increased to weight of 2 for a no symbol query.
  • /api/v3/ticker/bookTicker increased weight of 2 for a no symbol query.
  • DELETE /api/v3/order will now return an execution report of the final state of the order.
  • MIN_NOTIONAL filter has two new parameters: applyToMarket (whether or not the filter is applied to MARKET orders) and avgPriceMins (the number of minutes over which the price averaged for the notional estimation).
  • intervalNum added to /api/v1/exchangeInfo limits. intervalNum describes the amount of the interval. For example: intervalNum 5, with interval minute, means "every 5 minutes".

Explanation for the average price calculation:

  1. (qty * price) of all trades / numTrades of the trades over previous 5 minutes.

  2. If there is no trade in the last 5 minutes, it takes the first trade that happened outside of the 5min window. For example if the last trade was 20 minutes ago, that trade's price is the 5 min average.

  3. If there is no trade on the symbol, there is no average price and market orders cannot be placed. On a new symbol with applyToMarket enabled on the MIN_NOTIONAL filter, market orders cannot be placed until there is at least 1 trade.

  4. The current average price can be checked here: https://api.binance.com/api/v3/avgPrice?symbol=<symbol> For example: https://api.binance.com/api/v3/avgPrice?symbol=BNBUSDT

User data stream

  • Last quote asset transacted quantity (as variable Y) added to execution reports. Represents the lastPrice lastQty (L l).

2018-07-18

Rest API

  • New filter: ICEBERG_PARTS
  • POST api/v3/order new defaults for newOrderRespType. ACK, RESULT, or FULL; MARKET and LIMIT order types default to FULL, all other orders default to ACK.
  • POST api/v3/order RESULT and FULL responses now have cummulativeQuoteQty
  • GET api/v3/openOrders with no symbol weight reduced to 40.
  • GET api/v3/ticker/24hr with no symbol weight reduced to 40.
  • Max amount of trades from GET /api/v1/trades increased to 1000.
  • Max amount of trades from GET /api/v1/historicalTrades increased to 1000.
  • Max amount of aggregate trades from GET /api/v1/aggTrades increased to 1000.
  • Max amount of aggregate trades from GET /api/v1/klines increased to 1000.
  • Rest API Order lookups now return updateTime which represents the last time the order was updated; time is the order creation time.
  • Order lookup endpoints will now return cummulativeQuoteQty. If cummulativeQuoteQty is < 0, it means the data isn't available for this order at this time.
  • REQUESTS rate limit type changed to REQUEST_WEIGHT. This limit was always logically request weight and the previous name for it caused confusion.

User data stream

  • cummulativeQuoteQty field added to order responses and execution reports (as variable Z). Represents the cummulative amount of the quote that has been spent (with a BUY order) or received (with a SELL order). Historical orders will have a value < 0 in this field indicating the data is not available at this time. cummulativeQuoteQty divided by cummulativeQty will give the average price for an order.
  • O (order creation time) added to execution reports

2018-01-23

  • GET /api/v1/historicalTrades weight decreased to 5
  • GET /api/v1/aggTrades weight decreased to 1
  • GET /api/v1/klines weight decreased to 1
  • GET /api/v1/ticker/24hr all symbols weight decreased to number of trading symbols / 2
  • GET /api/v3/allOrders weight decreased to 5
  • GET /api/v3/myTrades weight decreased to 5
  • GET /api/v3/account weight decreased to 5
  • GET /api/v1/depth limit=500 weight decreased to 5
  • GET /api/v1/depth limit=1000 weight decreased to 10
  • -1003 error message updated to direct users to websockets

2018-01-20

  • GET /api/v1/ticker/24hr single symbol weight decreased to 1
  • GET /api/v3/openOrders all symbols weight decreased to number of trading symbols / 2
  • GET /api/v3/allOrders weight decreased to 15
  • GET /api/v3/myTrades weight decreased to 15
  • GET /api/v3/order weight decreased to 1
  • myTrades will now return both sides of a self-trade/wash-trade

2018-01-14

  • GET /api/v1/aggTrades weight changed to 2
  • GET /api/v1/klines weight changed to 2
  • GET /api/v3/order weight changed to 2
  • GET /api/v3/allOrders weight changed to 20
  • GET /api/v3/account weight changed to 20
  • GET /api/v3/myTrades weight changed to 20
  • GET /api/v3/historicalTrades weight changed to 20

Introduction

API Key Setup#

  • Some endpoints will require an API Key. Please refer to this page regarding API key creation.
  • Once API key is created, it is recommended to set IP restrictions on the key for security reasons.
  • Never share your API key/secret key to ANYONE.

API Key Restrictions#

  • After creating the API key, the default restrictions set will be to enable trade, allowing to make orders on the API.
  • To enable withdrawals via the API, the API key restriction needs to be modified through the Binance UI.

Enabling Accounts#

Spot Account#

A SPOT account is provided by default upon creation of a Binance Account.

Margin Account#

To enable a MARGIN account for Margin Trading, please refer to the Margin Trading Guide

Spot Testnet#

Users can use the SPOT Testnet to practice SPOT trading.

Currently, this is only available via the API.

Please refer to the SPOT Testnet page for more information and how to set up the Testnet API key.

API Library#

Python connector#

This is a lightweight library that works as a connector to Binance public API, written in Python.

https://github.com/binance/binance-connector-python

Node.js connector#

This is a lightweight library that works as a connector to Binance public API, written for Node.js users.

https://github.com/binance/binance-connector-node

Postman Collections#

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

This is recommended for new users who want to get a quick-start into using the API.

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

Swagger#

A YAML file with OpenAPI specification on the RESTful API is available to be used, as well as a Swagger UI page for the consulting.

https://github.com/binance/binance-api-swagger

Contact Us#

  • Binance API Telegram Group
    • For any questions in sudden drop in performance with the API and/or Websockets.
    • For any general questions about the API not covered in the documentation.
  • Binance Developers
    • For any questions on your code implementation with the API and/or Websockets.
  • Binance Customer Support
    • For cases such as missing funds, help with 2FA, etc.

General Info

General API Information#

HTTP Return Codes#

  • HTTP 4XX return codes are used 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. It is important to NOT treat this as a failure operation; the execution status is UNKNOWN and could have been a success.

Error Codes and Messages#

  • If there is an error, the API will return an error with a message of the reason.

The error payload on API and SAPI 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#

General Info on Limits#

  • The following intervalLetter values for headers:
    • SECOND => S
    • MINUTE => M
    • HOUR => H
    • DAY => D
  • intervalNum describes the amount of the interval. For example, intervalNum 5 with intervalLetter M means "Every 5 minutes".
  • The /api/v3/exchangeInfo rateLimits array contains objects related to the exchange's RAW_REQUESTS, REQUEST_WEIGHT, and ORDERS 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.
  • A Retry-After header is sent with a 418 or 429 responses and will give the number of seconds required to wait, in the case of a 429, to prevent a ban, or, in the case of a 418, until the ban is over.
  • The limits on the API are based on the IPs, not the API keys.

Order Rate Limits#

  • Every successful 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.
  • When the order count exceeds the limit, you will receive a 429 error without the Retry-After header. Please check the Order Rate Limit rules using GET api/v3/exchangeInfo and wait for reactivation accordingly.
  • 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.

Websocket Limits#

  • WebSocket connections have a limit of 5 incoming messages per second. A message is considered:
    • A PING frame
    • A PONG frame
    • A JSON controlled 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 1024 streams.

/api/ and /sapi/ Limit Introduction#

The /api/* and /sapi/* endpoints adopt either of two access limiting rules, IP limits or UID (account) limits.

  • Endpoints related to /api/*:

    • According to the two modes of IP and UID (account) limit, each are independent.
    • Endpoints share the 1200 per minute limit based on IP, excluding the new order endpoint POST /api/v3/order which has specific limits of 50 per 10 seconds and 160000 per day based on UID.
    • Responses contain the header X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter), defining the weight used by the current IP.
    • Successful order responses contain the header X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter), defining the order limit used by the UID.
  • Endpoints related to /sapi/*:

    • Endpoints are marked according to IP or UID limit and their corresponding weight value.
    • Each endpoint with IP limits has an independent 12,000 per minute limit.
    • Each endpoint with UID limits has an independent 180,000 per minute limit.
    • Responses from endpoints with IP limits contain the header X-SAPI-USED-IP-WEIGHT-1M, defining the weight used by the current IP.
    • Responses from endpoints with UID limits contain the header X-SAPI-USED-UID-WEIGHT-1M, defining the weight used by the current UID.

Data Sources#

  • The API system is asynchronous, so some delay in the response is normal and expected.
  • Each endpoint has a data source indicating where the data is being retrieved, and thus which endpoints have the most up-to-date response.

These are the three sources, ordered by which is has the most up-to-date response to the one with potential delays in updates.

  • Matching Engine - the data is from the matching Engine
  • Memory - the data is from a server's local or external memory
  • Database - the data is taken directly from a database

Endpoint security type#

  • Each endpoint has a security type that determines how you will interact with it. This is stated next to the NAME of the endpoint.
    • If no security type is stated, assume the security type is NONE.
  • 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.
MARGINEndpoint 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, MARGIN and USER_DATA endpoints are SIGNED endpoints.

SIGNED (TRADE, USER_DATA, AND MARGIN) 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.
  • 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 /api/v3/order#

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
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyNhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
ParameterValue
symbolLTCBTC
sideBUY
typeLIMIT
timeInForceGTC
quantity1
price0.1
recvWindow5000
timestamp1499827319559

Example 1: As a request body#

Example 1

HMAC SHA256 signature:

    $ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"    (stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

curl command:

    (HMAC SHA256)    $ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order' -d 'symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'    
  • requestBody:

symbol=LTCBTC
&side=BUY
&type=LIMIT
&timeInForce=GTC
&quantity=1
&price=0.1
&recvWindow=5000
×tamp=1499827319559

Example 2: As a query string#

Example 2

HMAC SHA256 signature:

    $ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"    (stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71    

curl command:

    (HMAC SHA256)   $ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'    
  • queryString:

symbol=LTCBTC
&side=BUY
&type=LIMIT
&timeInForce=GTC
&quantity=1
&price=0.1
&recvWindow=5000
×tamp=1499827319559

Example 3: Mixed query string and request body#

Example 3

HMAC SHA256 signature:

   $ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTCquantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"    (stdin)= 0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77    

curl command:

    (HMAC SHA256)    $ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC' -d 'quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77'
  • queryString:

symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC

  • requestBody:

quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559

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


Public API Definitions#

Terminology#

These terms will be used throughout the documentation, so it is recommended especially for new users to read to help their understanding of the API.

  • base asset refers to the asset that is the quantity of a symbol. For the symbol BTCUSDT, BTC would be the base asset.
  • quote asset refers to the asset that is the price of a symbol. For the symbol BTCUSDT, USDT would be the quote asset.

ENUM definitions#

Symbol status (status):

  • PRE_TRADING
  • TRADING
  • POST_TRADING
  • END_OF_DAY
  • HALT
  • AUCTION_MATCH
  • BREAK

Symbol type:

  • SPOT

Order status (status):

StatusDescription
NEWThe order has been accepted by the engine.
PARTIALLY_FILLEDA part of the order has been filled.
FILLEDThe order has been completed.
CANCELEDThe order has been canceled by the user.
PENDING_CANCELCurrently unused
REJECTEDThe order was not accepted by the engine and not processed.
EXPIREDThe order was canceled according to the order type's rules (e.g. LIMIT FOK orders with no fill, LIMIT IOC or MARKET orders that partially fill) or by the exchange, (e.g. orders canceled during liquidation, orders canceled during maintenance)

OCO Status (listStatusType):

StatusDescription
RESPONSEThis is used when the ListStatus is responding to a failed action. (E.g. Orderlist placement or cancellation)
EXEC_STARTEDThe order list has been placed or there is an update to the order list status.
ALL_DONEThe order list has finished executing and thus no longer active.

OCO Order Status (listOrderStatus):

StatusDescription
EXECUTINGEither an order list has been placed or there is an update to the status of the list.
ALL_DONEAn order list has completed execution and thus no longer active.
REJECTThe List Status is responding to a failed action either during order placement or order canceled.)

ContingencyType

  • OCO

Order types (orderTypes, type):

More information on how the order types definitions can be found here: Types of Orders

  • LIMIT
  • MARKET
  • STOP_LOSS
  • STOP_LOSS_LIMIT
  • TAKE_PROFIT
  • TAKE_PROFIT_LIMIT
  • LIMIT_MAKER

Order Response Type (newOrderRespType):

  • ACK
  • RESULT
  • FULL

Order side (side):

  • BUY
  • SELL

Time in force (timeInForce):

This sets how long an order will be active before expiration.

StatusDescription
GTCGood Til Canceled
An order will be on the book unless the order is canceled.
IOCImmediate Or Cancel
An order will try to fill the order as much as it can before the order expires.
FOKFill or Kill
An order will expire if the full order cannot be filled upon execution.

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": 1200    }

ORDERS

    {      "rateLimitType": "ORDERS",      "interval": "SECOND",      "intervalNum": 10,      "limit": 100    },    {      "rateLimitType": "ORDERS",      "interval": "DAY",      "intervalNum": 1,      "limit": 200000    }

RAW_REQUESTS

    {      "rateLimitType": "RAW_REQUESTS",      "interval": "MINUTE",      "intervalNum": 5,      "limit": 5000    }
  • REQUEST_WEIGHT

  • ORDERS

  • RAW_REQUESTS

Rate limit intervals (interval)

  • SECOND
  • MINUTE
  • DAY

Filters#

Filters define trading rules on a symbol or an exchange. Filters come in two forms: symbol filters and exchange filters.

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

PERCENT_PRICE#

ExchangeInfo format:

  {    "filterType": "PERCENT_PRICE",    "multiplierUp": "1.3000",    "multiplierDown": "0.7000",    "avgPriceMins": 5  }

The PERCENT_PRICE filter defines valid range for a price based on the average of the previous trades. avgPriceMins is the number of minutes the average price is calculated over. 0 means the last price is used.

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

  • price <= weightedAveragePrice * multiplierUp
  • price >= weightedAveragePrice * multiplierDown

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/icebergQty allowed.
  • maxQty defines the maximum quantity/icebergQty allowed.
  • stepSize defines the intervals that a quantity/icebergQty can be increased/decreased by.

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

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

MIN_NOTIONAL#

ExchangeInfo format:

  {    "filterType": "MIN_NOTIONAL",    "minNotional": "0.00100000",    "applyToMarket": true,    "avgPriceMins": 5  }

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. If the order is an Algo order (e.g. STOP_LOSS_LIMIT), then the notional value of the stopPrice quantity will also be evaluated. If the order is an Iceberg Order, then the notional value of the price * icebergQty will also be evaluated. applyToMarket determines whether or not the MIN_NOTIONAL filter will also be applied to MARKET orders. Since MARKET orders have no price, the average price is used over the last avgPriceMins minutes. avgPriceMins is the number of minutes the average price is calculated over. 0 means the last price is used.

ICEBERG_PARTS#

ExchangeInfo format:

  {    "filterType": "ICEBERG_PARTS",    "limit": 10  }

The ICEBERG_PARTS filter defines the maximum parts an iceberg order can have. The number of ICEBERG_PARTS is defined as CEIL(qty / icebergQty).

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",    "maxNumOrders": 25  }

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",    "maxNumAlgoOrders": 5  }

The MAX_NUM_ALGO_ORDERS filter defines the maximum number of "algo" orders an account is allowed to have open on a symbol. "Algo" orders are STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.

MAX_NUM_ICEBERG_ORDERS#

The MAX_NUM_ICEBERG_ORDERS filter defines the maximum number of ICEBERG orders an account is allowed to have open on a symbol. An ICEBERG order is any order where the icebergQty is > 0.

ExchangeInfo format:

  {    "filterType": "MAX_NUM_ICEBERG_ORDERS",    "maxNumIcebergOrders": 5  }

MAX_POSITION#

The MAX_POSITION filter defines the allowed maximum position an account can have on the base asset of a symbol. An account's position defined as the sum of the account's:

  1. free balance of the base asset
  2. locked balance of the base asset
  3. sum of the qty of all open BUY orders

BUY orders will be rejected if the account's position is greater than the maximum position allowed.

ExchangeInfo format:

{  "filterType":"MAX_POSITION",  "maxPosition":"10.00000000"}

Exchange Filters#

EXCHANGE_MAX_NUM_ORDERS#

ExchangeInfo format:

  {    "filterType": "EXCHANGE_MAX_NUM_ORDERS",    "maxNumOrders": 1000  }

The MAX_NUM_ORDERS filter defines the maximum number of orders an account is allowed to have open on the exchange. Note that both "algo" orders and normal orders are counted for this filter.

EXCHANGE_MAX_NUM_ALGO_ORDERS#

ExchangeInfo format:

  {    "filterType": "EXCHANGE_MAX_ALGO_ORDERS",    "maxNumAlgoOrders": 200  }

The MAX_ALGO_ORDERS filter defines the maximum number of "algo" orders an account is allowed to have open on the exchange. "Algo" orders are STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.


Wallet Endpoints

System Status (System)#

Response

{     "status": 0,              // 0: normal,1:system maintenance    "msg": "normal"           // "normal", "system_maintenance"}

GET /sapi/v1/system/status

Fetch system status.

Weight(IP): 1

All Coins' Information (USER_DATA)#

Get information of coins (available for deposit and withdraw) for user.

Response:

[    {        "coin": "BTC",        "depositAllEnable": true,        "free": "0.08074558",        "freeze": "0.00000000",        "ipoable": "0.00000000",        "ipoing": "0.00000000",        "isLegalMoney": false,        "locked": "0.00000000",        "name": "Bitcoin",        "networkList": [            {                "addressRegex": "^(bnb1)[0-9a-z]{38}$",                "coin": "BTC",                "depositDesc": "Wallet Maintenance, Deposit Suspended", // shown only when "depositEnable" is false.                "depositEnable": false,                "isDefault": false,                        "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$",                "minConfirm": 1,  // min number for balance confirmation                "name": "BEP2",                "network": "BNB",                            "resetAddressStatus": false,                "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-BTCB tokens to Binance.",                "unLockConfirm": 0,  // confirmation number for balance unlock                 "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", // shown only when "withdrawEnable" is false.                "withdrawEnable": false,                "withdrawFee": "0.00000220",                "withdrawIntegerMultiple": "0.00000001",                "withdrawMax": "9999999999.99999999",                "withdrawMin": "0.00000440",                "sameAddress": true  // If the coin needs to provide memo to withdraw            },            {                "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(bc1)[0-9A-Za-z]{39,59}$",                "coin": "BTC",                "depositEnable": true,                "isDefault": true,                "memoRegex": "",                "minConfirm": 1,                 "name": "BTC",                "network": "BTC",                "resetAddressStatus": false,                "specialTips": "",                "unLockConfirm": 2,                "withdrawEnable": true,                "withdrawFee": "0.00050000",                "withdrawIntegerMultiple": "0.00000001",                "withdrawMax": "750",                "withdrawMin": "0.00100000",                "sameAddress": false            }        ],        "storage": "0.00000000",        "trading": true,        "withdrawAllEnable": true,        "withdrawing": "0.00000000"    }]

GET /sapi/v1/capital/config/getall (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Daily Account Snapshot (USER_DATA)#

Response:

{   "code":200, // 200 for success; others are error codes   "msg":"", // error message   "snapshotVos":[      {         "data":{            "balances":[               {                  "asset":"BTC",                  "free":"0.09905021",                  "locked":"0.00000000"               },               {                  "asset":"USDT",                  "free":"1.89109409",                  "locked":"0.00000000"               }            ],            "totalAssetOfBtc":"0.09942700"         },         "type":"spot",         "updateTime":1576281599000      }   ]}

OR

{   "code":200, // 200 for success; others are error codes   "msg":"", // error message   "snapshotVos":[      {         "data":{            "marginLevel":"2748.02909813",            "totalAssetOfBtc":"0.00274803",            "totalLiabilityOfBtc":"0.00000100",            "totalNetAssetOfBtc":"0.00274750",            "userAssets":[               {                  "asset":"XRP",                  "borrowed":"0.00000000",                  "free":"1.00000000",                  "interest":"0.00000000",                  "locked":"0.00000000",                  "netAsset":"1.00000000"               }            ]         },         "type":"margin",         "updateTime":1576281599000      }   ]}

OR

{   "code":200, // 200 for success; others are error codes   "msg":"", // error message   "snapshotVos":[      {         "data":{            "assets":[               {                  "asset":"USDT",                  "marginBalance":"118.99782335",                  "walletBalance":"120.23811389"               }            ],            "position":[               {                  "entryPrice":"7130.41000000",                  "markPrice":"7257.66239673",                  "positionAmt":"0.01000000",                  "symbol":"BTCUSDT",                  "unRealizedProfit":"1.24029054"  // Only show the value at the time of opening the position               }            ]         },         "type":"futures",         "updateTime":1576281599000      }   ]}

GET /sapi/v1/accountSnapshot (HMAC SHA256)

Weight(IP): 2400

Parameters:

NameTypeMandatoryDescription
typeSTRINGYES"SPOT", "MARGIN", "FUTURES"
startTimeLONGNO
endTimeLONGNO
limitINTNOmin 5, max 30, default 5
recvWindowLONGNO
timestampLONGYES
  • The query time period must be less then 30 days

Disable Fast Withdraw Switch (USER_DATA)#

Response:

{}

POST /sapi/v1/account/disableFastWithdrawSwitch (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES
  • Caution:

    This request will disable fastwithdraw switch under your account.
    You need to enable "trade" option for the api key which requests this endpoint.

Enable Fast Withdraw Switch (USER_DATA)#

Response:

{}

POST /sapi/v1/account/enableFastWithdrawSwitch (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES
  • This request will enable fastwithdraw switch under your account.
    You need to enable "trade" option for the api key which requests this endpoint.
  • When Fast Withdraw Switch is on, transferring funds to a Binance account will be done instantly. There is no on-chain transaction, no transaction ID and no withdrawal fee.

Withdraw(USER_DATA)#

Response:

{    "id":"7213fea8e94b4a5593d507237e5a555b"}

POST /sapi/v1/capital/withdraw/apply (HMAC SHA256)

Submit a withdraw request.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
coinSTRINGYES
withdrawOrderIdSTRINGNOclient id for withdraw
networkSTRINGNO
addressSTRINGYES
addressTagSTRINGNOSecondary address identifier for coins like XRP,XMR etc.
amountDECIMALYES
transactionFeeFlagBOOLEANNOWhen making internal transfer, true for returning the fee to the destination account; false for returning the fee back to the departure account. Default false.
nameSTRINGNODescription of the address. Space in name should be encoded into %20.
recvWindowLONGNO
timestampLONGYES
  • If network not send, return with default network of the coin.
  • You can get network and isDefault in networkList of a coin in the response of Get /sapi/v1/capital/config/getall (HMAC SHA256).

Deposit History(supporting network) (USER_DATA)#

Response:

[    {        "amount":"0.00999800",        "coin":"PAXG",        "network":"ETH",        "status":1,        "address":"0x788cabe9236ce061e5a892e1a59395a81fc8d62c",        "addressTag":"",        "txId":"0xaad4654a3234aa6118af9b4b335f5ae81c360b2394721c019b5d1e75328b09f3",        "insertTime":1599621997000,        "transferType":0,        "unlockConfirm":"12/12",  // confirm times for unlocking        "confirmTimes":"12/12"    },    {        "amount":"0.50000000",        "coin":"IOTA",        "network":"IOTA",        "status":1,        "address":"SIZ9VLMHWATXKV99LH99CIGFJFUMLEHGWVZVNNZXRJJVWBPHYWPPBOSDORZ9EQSHCZAMPVAPGFYQAUUV9DROOXJLNW",        "addressTag":"",        "txId":"ESBFVQUTPIWQNJSPXFNHNYHSQNTGKRVKPRABQWTAXCDWOAKDKYWPTVG9BGXNVNKTLEJGESAVXIKIZ9999",        "insertTime":1599620082000,        "transferType":0,        "unlockConfirm":"1/12",        "confirmTimes":"1/1"    }]

GET /sapi/v1/capital/deposit/hisrec (HMAC SHA256)

Fetch deposit history.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
coinSTRINGNO
statusINTNO0(0:pending,6: credited but cannot withdraw, 1:success)
startTimeLONGNODefault: 90 days from current timestamp
endTimeLONGNODefault: present timestamp
offsetINTNODefault:0
limitINTNODefault:1000, Max:1000
recvWindowLONGNO
timestampLONGYES
  • Please notice the default startTime and endTime to make sure that time interval is within 0-90 days.
  • If both startTime and endTime are sent, time between startTime and endTime must be less than 90 days.

Withdraw History (supporting network) (USER_DATA)#

Response:

[    {        "address": "0x94df8b352de7f46f64b01d3666bf6e936e44ce60",        "amount": "8.91000000",        "applyTime": "2019-10-12 11:12:02",        "coin": "USDT",        "id": "b6ae22b3aa844210a7041aee7589627c",        "withdrawOrderId": "WITHDRAWtest123", // will not be returned if there's no withdrawOrderId for this withdraw.        "network": "ETH",         "transferType": 0,   // 1 for internal transfer, 0 for external transfer           "status": 6,        "transactionFee": "0.004",        "confirmNo":3,  // confirm times for withdraw        "txId": "0xb5ef8c13b968a406cc62a93a8bd80f9e9a906ef1b3fcf20a2e48573c17659268"    },    {        "address": "1FZdVHtiBqMrWdjPyRPULCUceZPJ2WLCsB",        "amount": "0.00150000",        "applyTime": "2019-09-24 12:43:45",        "coin": "BTC",        "id": "156ec387f49b41df8724fa744fa82719",        "network": "BTC",        "status": 6,        "transactionFee": "0.004",        "transferType": 0,   // 1 for internal transfer, 0 for external transfer           "confirmNo":2,        "txId": "60fd9007ebfddc753455f95fafa808c4302c836e4d1eebc5a132c36c1d8ac354"    }]

GET /sapi/v1/capital/withdraw/history (HMAC SHA256)

Fetch withdraw history.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
coinSTRINGNO
withdrawOrderIdSTRINGNO
statusINTNO0(0:Email Sent,1:Cancelled 2:Awaiting Approval 3:Rejected 4:Processing 5:Failure 6:Completed)
offsetINTNO
limitINTNODefault: 1000, Max: 1000
startTimeLONGNODefault: 90 days from current timestamp
endTimeLONGNODefault: present timestamp
recvWindowLONGNO
timestampLONGYES
  • network may not be in the response for old withdraw.
  • Please notice the default startTime and endTime to make sure that time interval is within 0-90 days.
  • If both startTime and endTime are sent, time between startTime and endTime must be less than 90 days.

Deposit Address (supporting network) (USER_DATA)#

Response:

{    "address": "1HPn8Rx2y6nNSfagQBKy27GB99Vbzg89wv",    "coin": "BTC",    "tag": "",    "url": "https://btc.com/1HPn8Rx2y6nNSfagQBKy27GB99Vbzg89wv"}

GET /sapi/v1/capital/deposit/address (HMAC SHA256)

Fetch deposit address with network.

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
coinSTRINGYES
networkSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • If network is not send, return with default network of the coin.
  • You can get network and isDefault in networkList in the response of Get /sapi/v1/capital/config/getall (HMAC SHA256).

Account Status (USER_DATA)#

Response:

{    "data": "Normal"}

GET /sapi/v1/account/status

Fetch account status detail.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Account API Trading Status (USER_DATA)#

Response:

{    "data": {          // API trading status detail            "isLocked": false,   // API trading function is locked or not            "plannedRecoverTime": 0,  // If API trading function is locked, this is the planned recover time            "triggerCondition": {                     "GCR": 150,  // Number of GTC orders                    "IFER": 150, // Number of FOK/IOC orders                    "UFR": 300   // Number of orders            },            "indicators": {  // The indicators updated every 30 seconds                 "BTCUSDT": [  // The symbol                    {                    "i": "UFR",  // Unfilled Ratio (UFR)                    "c": 20,     // Count of all orders                    "v": 0.05,   // Current UFR value                    "t": 0.995   // Trigger UFR value                    },                    {                    "i": "IFER", // IOC/FOK Expiration Ratio (IFER)                    "c": 20,     // Count of FOK/IOC orders                    "v": 0.99,   // Current IFER value                    "t": 0.99    // Trigger IFER value                    },                    {                    "i": "GCR",  // GTC Cancellation Ratio (GCR)                    "c": 20,     // Count of GTC orders                    "v": 0.99,   // Current GCR value                    "t": 0.99    // Trigger GCR value                    }                    ],                    "ETHUSDT": [                     {                    "i": "UFR",                    "c": 20,                    "v": 0.05,                    "t": 0.995                    },                    {                    "i": "IFER",                    "c": 20,                    "v": 0.99,                    "t": 0.99                    },                    {                    "i": "GCR",                    "c": 20,                    "v": 0.99,                    "t": 0.99                    }                    ]            },            "updateTime": 1547630471725       }}

GET /sapi/v1/account/apiTradingStatus (HMAC SHA256)

Fetch account api trading status detail.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

DustLog(USER_DATA)#

Response

{        "total": 8,   //Total counts of exchange        "userAssetDribblets": [            {                "operateTime": 1615985535000,                "totalTransferedAmount": "0.00132256",   // Total transfered BNB amount for this exchange.                "totalServiceChargeAmount": "0.00002699",    //Total service charge amount for this exchange.                "transId": 45178372831,                "userAssetDribbletDetails": [           //Details of  this exchange.                    {                        "transId": 4359321,                        "serviceChargeAmount": "0.000009",                        "amount": "0.0009",                        "operateTime": 1615985535000,                        "transferedAmount": "0.000441",                        "fromAsset": "USDT"                    },                    {                        "transId": 4359321,                        "serviceChargeAmount": "0.00001799",                        "amount": "0.0009",                        "operateTime": 1615985535000,                        "transferedAmount": "0.00088156",                        "fromAsset": "ETH"                    }                ]            },            {                "operateTime":1616203180000,                "totalTransferedAmount": "0.00058795",                "totalServiceChargeAmount": "0.000012",                "transId": 4357015,                "userAssetDribbletDetails": [                           {                        "transId": 4357015,                        "serviceChargeAmount": "0.00001",                        "amount": "0.001",                        "operateTime": 1616203180000,                        "transferedAmount": "0.00049",                        "fromAsset": "USDT"                    },                    {                        "transId": 4357015,                        "serviceChargeAmount": "0.000002",                                 "amount": "0.0001",                        "operateTime": 1616203180000,                        "transferedAmount": "0.00009795",                        "fromAsset": "ETH"                    }                ]            }        ]    }}

GET /sapi/v1/asset/dribblet (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
startTimeLONGNO
endTimeLONGNO
recvWindowLONGNO
timestampLONGYES

Dust Transfer (USER_DATA)#

Response:

{    "totalServiceCharge":"0.02102542",    "totalTransfered":"1.05127099",    "transferResult":[        {            "amount":"0.03000000",            "fromAsset":"ETH",            "operateTime":1563368549307,            "serviceChargeAmount":"0.00500000",            "tranId":2970932918,            "transferedAmount":"0.25000000"        },        {            "amount":"0.09000000",            "fromAsset":"LTC",            "operateTime":1563368549404,            "serviceChargeAmount":"0.01548000",            "tranId":2970932918,            "transferedAmount":"0.77400000"        },        {            "amount":"248.61878453",            "fromAsset":"TRX",            "operateTime":1563368549489,            "serviceChargeAmount":"0.00054542",            "tranId":2970932918,            "transferedAmount":"0.02727099"        }    ]}

POST /sapi/v1/asset/dust (HMAC SHA256)

Convert dust assets to BNB.

Weight(UID): 10

Parameters:

NameTypeMandatoryDescription
assetARRAYYESThe asset being converted. For example: asset=BTC&asset=USDT
recvWindowLONGNO
timestampLONGYES

Asset Dividend Record (USER_DATA)#

Response:

{    "rows":[        {            "amount":"10.00000000",            "asset":"BHFT",            "divTime":1563189166000,            "enInfo":"BHFT distribution",            "tranId":2968885920        },        {            "amount":"10.00000000",            "asset":"BHFT",            "divTime":1563189165000,            "enInfo":"BHFT distribution",            "tranId":2968885920        }    ],    "total":2}

GET /sapi/v1/asset/assetDividend (HMAC SHA256)

Query asset dividend record.

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
assetSTRINGNO
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 20, max 500
recvWindowLONGNO
timestampLONGYES

Asset Detail (USER_DATA)#

Response:

{        "CTR": {            "minWithdrawAmount": "70.00000000", //min withdraw amount            "depositStatus": false,//deposit status (false if ALL of networks' are false)            "withdrawFee": 35, // withdraw fee            "withdrawStatus": true, //withdraw status (false if ALL of networks' are false)            "depositTip": "Delisted, Deposit Suspended" //reason        },        "SKY": {            "minWithdrawAmount": "0.02000000",            "depositStatus": true,            "withdrawFee": 0.01,            "withdrawStatus": true        }   }

GET /sapi/v1/asset/assetDetail (HMAC SHA256)

Fetch details of assets supported on Binance.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
assetSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • Please get network and other deposit or withdraw details from GET /sapi/v1/capital/config/getall.

Trade Fee (USER_DATA)#

Response:

[    {        "symbol": "ADABNB",        "makerCommission": "0.001",        "takerCommission": "0.001"    },    {        "symbol": "BNBBTC",        "makerCommission": "0.001",        "takerCommission": "0.001"    }]

GET /sapi/v1/asset/tradeFee (HMAC SHA256)

Fetch trade fee

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNO
timestampLONGYES

User Universal Transfer (USER_DATA)#

Response:

{    "tranId":13526853623}

POST /sapi/v1/asset/transfer (HMAC SHA256)

You need to enable Permits Universal Transfer option for the api key which requests this endpoint.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
typeENUMYES
assetSTRINGYES
amountDECIMALYES
fromSymbolSTRINGNO
toSymbolSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • fromSymbol must be sent when type are ISOLATEDMARGIN_MARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN

  • toSymbol must be sent when type are MARGIN_ISOLATEDMARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN

  • ENUM of transfer types:

    • MAIN_C2C Spot account transfer to C2C account
    • MAIN_UMFUTURE Spot account transfer to USDⓈ-M Futures account
    • MAIN_CMFUTURE Spot account transfer to COIN-M Futures account
    • MAIN_MARGIN Spot account transfer to Margin(cross)account
    • MAIN_MINING Spot account transfer to Mining account
    • C2C_MAIN C2C account transfer to Spot account
    • C2C_UMFUTURE C2C account transfer to USDⓈ-M Futures account
    • C2C_MINING C2C account transfer to Mining account
    • C2C_MARGIN C2C account transfer to Margin(cross) account
    • UMFUTURE_MAIN USDⓈ-M Futures account transfer to Spot account
    • UMFUTURE_C2C USDⓈ-M Futures account transfer to C2C account
    • UMFUTURE_MARGIN USDⓈ-M Futures account transfer to Margin(cross)account
    • CMFUTURE_MAIN COIN-M Futures account transfer to Spot account
    • CMFUTURE_MARGIN COIN-M Futures account transfer to Margin(cross) account
    • MARGIN_MAIN Margin(cross)account transfer to Spot account
    • MARGIN_UMFUTURE Margin(cross)account transfer to USDⓈ-M Futures
    • MARGIN_CMFUTURE Margin(cross)account transfer to COIN-M Futures
    • MARGIN_MINING Margin(cross)account transfer to Mining account
    • MARGIN_C2C Margin(cross)account transfer to C2C account
    • MINING_MAIN Mining account transfer to Spot account
    • MINING_UMFUTURE Mining account transfer to USDⓈ-M Futures account
    • MINING_C2C Mining account transfer to C2C account
    • MINING_MARGIN Mining account transfer to Margin(cross) account
    • MAIN_PAY Spot account transfer to Pay account
    • PAY_MAIN Pay account transfer to Spot account
    • ISOLATEDMARGIN_MARGIN Isolated margin account transfer to Margin(cross) account
    • MARGIN_ISOLATEDMARGIN Margin(cross) account transfer to Isolated margin account
    • ISOLATEDMARGIN_ISOLATEDMARGIN Isolated margin account transfer to Isolated margin account

Query User Universal Transfer History (USER_DATA)#

Response:

{    "total":2,    "rows":[        {            "asset":"USDT",            "amount":"1",            "type":"MAIN_UMFUTURE",            "status": "CONFIRMED",            "tranId": 11415955596,            "timestamp":1544433328000        },        {            "asset":"USDT",            "amount":"2",            "type":"MAIN_UMFUTURE",            "status": "CONFIRMED",            "tranId": 11366865406,            "timestamp":1544433328000        }    ]}

GET /sapi/v1/asset/transfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
typeENUMYES
startTimeLONGNO
endTimeLONGNO
currentINTNODefault 1
sizeINTNODefault 10, Max 100
fromSymbolSTRINGNO
toSymbolSTRINGNO
recvWindowLONGNO
timestampLONGYES
  • fromSymbol must be sent when type are ISOLATEDMARGIN_MARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN
  • toSymbol must be sent when type are MARGIN_ISOLATEDMARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN

Funding Wallet (USER_DATA)#

Response

[    {        "asset": "USDT",        "free": "1",    // avalible balance        "locked": "0",  // locked asset        "freeze": "0",  // freeze asset        "withdrawing": "0",          "btcValuation": "0.00000091"      }]

POST /sapi/v1/asset/get-funding-asset (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
assetSTRINGNO
needBtcValuationSTRINGNOtrue or false
recvWindowLONGNO
timestampLONGYES
  • Currently supports querying the following business assets:Binance Pay, Binance Card, Binance Gift Card, Stock Token

Get API Key Permission (USER_DATA)#

Response

{   "ipRestrict": false,   "createTime": 1623840271000,      "enableWithdrawals": false,   // This option allows you to withdraw via API. You must apply the IP Access Restriction filter in order to enable withdrawals   "enableInternalTransfer": true,  // This option authorizes this key to transfer funds between your master account and your sub account instantly   "permitsUniversalTransfer": true,  // Authorizes this key to be used for a dedicated universal transfer API to transfer multiple supported currencies. Each business's own transfer API rights are not affected by this authorization   "enableVanillaOptions": false,  //  Authorizes this key to Vanilla options trading   "enableReading": true,   "enableFutures": false,  //  API Key created before your futures account opened does not support futures API service   "enableMargin": false,   //  This option can be adjusted after the Cross Margin account transfer is completed   "enableSpotAndMarginTrading": false, // Spot and margin trading   "tradingAuthorityExpirationTime": 1628985600000  // Expiration time for spot and margin trading permission}

GET /sapi/v1/account/apiRestrictions (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Sub-Account Endpoints

Create a Virtual Sub-account(For Master Account)#

Response:

{    "email":"addsdd_virtual@aasaixwqnoemail.com"}

POST /sapi/v1/sub-account/virtualSubAccount (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
subAccountStringSTRINGYESPlease input a string. We will create a virtual email using that string for you to register
recvWindowLONGNO
timestampLONGYES
  • This request will generate a virtual sub account under your master account.
  • You need to enable "trade" option for the api key which requests this endpoint.

Query Sub-account List (For Master Account)#

Response:

{    "subAccounts":[        {            "email":"testsub@gmail.com",            "isFreeze":false,            "createTime":1544433328000        },        {            "email":"virtual@oxebmvfonoemail.com",            "isFreeze":false,            "createTime":1544433328000        }    ]}

GET /sapi/v1/sub-account/list (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGNOSub-account email
isFreezeSTRINGNOtrue or false
pageINTNODefault value: 1
limitINTNODefault value: 1, Max value: 200
recvWindowLONGNO
timestampLONGYES

Query Sub-account Spot Asset Transfer History (For Master Account)#

Response:

[    {        "from":"aaa@test.com",        "to":"bbb@test.com",        "asset":"BTC",        "qty":"10",        "status": "SUCCESS",        "tranId": 6489943656,        "time":1544433328000    },    {        "from":"bbb@test.com",        "to":"ccc@test.com",        "asset":"ETH",        "qty":"2",        "status": "SUCCESS",        "tranId": 6489938713,        "time":1544433328000    }]

GET /sapi/v1/sub-account/sub/transfer/history (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
fromEmailSTRINGNOSub-account email
toEmailSTRINGNOSub-account email
startTimeLONGNO
endTimeLONGNO
pageINTNODefault value: 1
limitINTNODefault value: 500
recvWindowLONGNO
timestampLONGYES
  • fromEmail and toEmail cannot be sent at the same time.
  • Return fromEmail equal master account email by default.

Query Sub-account Futures Asset Transfer History (For Master Account)#

Response

{    "success":true,    "futuresType": 2,    "transfers":[        {            "from":"aaa@test.com",            "to":"bbb@test.com",            "asset":"BTC",            "qty":"1",            "tranId":11897001102,            "time":1544433328000        },        {            "from":"bbb@test.com",            "to":"ccc@test.com",            "asset":"ETH",            "qty":"2",            "tranId":11631474902,            "time":1544433328000        }    ]}

GET /sapi/v1/sub-account/futures/internalTransfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
futuresTypeLONGYES1:USDT-margined Futures,2: Coin-margined Futures
startTimeLONGNODefault return the history with in 100 days
endTimeLONGNODefault return the history with in 100 days
pageINTNODefault value: 1
limitINTNODefault value: 50, Max value: 500
recvWindowLONGNO
timestampLONGYES

Sub-account Futures Asset Transfer (For Master Account)#

Response

{    "success":true,    "txnId":"2934662589"}

POST /sapi/v1/sub-account/futures/internalTransfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
fromEmailSTRINGYESSender email
toEmailSTRINGYESRecipient email
futuresTypeLONGYES1:USDT-margined Futures,2: Coin-margined Futures
assetSTRINGYES
amountDECIMALYES
recvWindowLONGNO
timestampLONGYES
  • Master account can transfer max 2000 times a minute

Query Sub-account Assets (For Master Account)#

Response:

{    "balances":[        {            "asset":"ADA",            "free":10000,            "locked":0        },        {            "asset":"BNB",            "free":10003,            "locked":0        },        {            "asset":"BTC",            "free":11467.6399,            "locked":0        },        {            "asset":"ETH",            "free":10004.995,            "locked":0        },        {            "asset":"USDT",            "free":11652.14213,            "locked":0        }    ]}

GET /sapi/v3/sub-account/assets (HMAC SHA256)

Fetch sub-account assets

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub account email
recvWindowLONGNO
timestampLONGYES

Query Sub-account Spot Assets Summary (For Master Account)#

Response:

{    "totalCount":2,    "masterAccountTotalAsset": "0.23231201",    "spotSubUserAssetBtcVoList":[        {            "email":"sub123@test.com",            "totalAsset":"9999.00000000"        },        {            "email":"test456@test.com",            "totalAsset":"0.00000000"        }    ]}

Get BTC valued asset summary of subaccounts.

GET /sapi/v1/sub-account/spotSummary (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGNOSub account email
pageLONGNOdefault 1
sizeLONGNOdefault 10, max 20
recvWindowLONGNO
timestampLONGYES

Get Sub-account Deposit Address (For Master Account)#

Response:

{    "address":"TDunhSa7jkTNuKrusUTU1MUHtqXoBPKETV",    "coin":"USDT",    "tag":"",    "url":"https://tronscan.org/#/address/TDunhSa7jkTNuKrusUTU1MUHtqXoBPKETV"}

GET /sapi/v1/capital/deposit/subAddress (HMAC SHA256)

Fetch sub-account deposit address

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub account email
coinSTRINGYES
networkSTRINGNO
recvWindowLONGNO
timestampLONGYES

Get Sub-account Deposit History (For Master Account)#

Response:

[    {        "amount":"0.00999800",        "coin":"PAXG",        "network":"ETH",        "status":1,        "address":"0x788cabe9236ce061e5a892e1a59395a81fc8d62c",        "addressTag":"",        "txId":"0xaad4654a3234aa6118af9b4b335f5ae81c360b2394721c019b5d1e75328b09f3",        "insertTime":1599621997000,        "transferType":0,        "confirmTimes":"12/12"    },    {        "amount":"0.50000000",        "coin":"IOTA",        "network":"IOTA",        "status":1,        "address":"SIZ9VLMHWATXKV99LH99CIGFJFUMLEHGWVZVNNZXRJJVWBPHYWPPBOSDORZ9EQSHCZAMPVAPGFYQAUUV9DROOXJLNW",        "addressTag":"",        "txId":"ESBFVQUTPIWQNJSPXFNHNYHSQNTGKRVKPRABQWTAXCDWOAKDKYWPTVG9BGXNVNKTLEJGESAVXIKIZ9999",        "insertTime":1599620082000,        "transferType":0,        "confirmTimes":"1/1"    }]

GET /sapi/v1/capital/deposit/subHisrec (HMAC SHA256)

Fetch sub-account deposit history

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub account email
coinSTRINGNO
statusINTNO0(0:pending,6: credited but cannot withdraw, 1:success)
startTimeLONGNO
endTimeLONGNO
limitINTNO
offsetINTNOdefault:0
recvWindowLONGNO
timestampLONGYES

Get Sub-account's Status on Margin/Futures (For Master Account)#

Response

[    {        "email":"123@test.com",      // user email        "isSubUserEnabled": true,    // true or false        "isUserActive": true,        // true or false        "insertTime": 1570791523523,  // sub account create time        "isMarginEnabled": true,     // true or false for margin        "isFutureEnabled": true,      // true or false for futures.        "mobile": 1570791523523      // user mobile number    }]

GET /sapi/v1/sub-account/status (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
emailSTRINGNOSub-account email
recvWindowLONGNO
timestampLONGYES
  • If no email sent, all sub-accounts' information will be returned.

Enable Margin for Sub-account (For Master Account)#

Response

{
    "email":"123@test.com",    "isMarginEnabled": true
}

POST /sapi/v1/sub-account/margin/enable (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
recvWindowLONGNO
timestampLONGYES

Get Detail on Sub-account's Margin Account (For Master Account)#

Response

{      "email":"123@test.com",      "marginLevel": "11.64405625",      "totalAssetOfBtc": "6.82728457",      "totalLiabilityOfBtc": "0.58633215",      "totalNetAssetOfBtc": "6.24095242",      "marginTradeCoeffVo":             {                "forceLiquidationBar": "1.10000000",  // Liquidation margin ratio                "marginCallBar": "1.50000000",        // Margin call margin ratio                "normalBar": "2.00000000"             // Initial margin ratio            },      "marginUserAssetVoList": [          {              "asset": "BTC",              "borrowed": "0.00000000",              "free": "0.00499500",              "interest": "0.00000000",              "locked": "0.00000000",              "netAsset": "0.00499500"          },          {              "asset": "BNB",              "borrowed": "201.66666672",              "free": "2346.50000000",              "interest": "0.00000000",              "locked": "0.00000000",              "netAsset": "2144.83333328"          },          {              "asset": "ETH",              "borrowed": "0.00000000",              "free": "0.00000000",              "interest": "0.00000000",              "locked": "0.00000000",              "netAsset": "0.00000000"          },          {              "asset": "USDT",              "borrowed": "0.00000000",              "free": "0.00000000",              "interest": "0.00000000",              "locked": "0.00000000",              "netAsset": "0.00000000"          }      ]}

GET /sapi/v1/sub-account/margin/account (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
recvWindowLONGNO
timestampLONGYES

Get Summary of Sub-account's Margin Account (For Master Account)#

Response

{    "totalAssetOfBtc": "4.33333333",     "totalLiabilityOfBtc": "2.11111112",     "totalNetAssetOfBtc": "2.22222221",    "subAccountList":[        {            "email":"123@test.com",            "totalAssetOfBtc": "2.11111111",            "totalLiabilityOfBtc": "1.11111111",            "totalNetAssetOfBtc": "1.00000000"        },        {             "email":"345@test.com",            "totalAssetOfBtc": "2.22222222",             "totalLiabilityOfBtc": "1.00000001",             "totalNetAssetOfBtc": "1.22222221"        }    ]}

GET /sapi/v1/sub-account/margin/accountSummary (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Enable Futures for Sub-account (For Master Account)#

Response

{
    "email":"123@test.com",    "isFuturesEnabled": true  // true or false
}

POST /sapi/v1/sub-account/futures/enable (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
recvWindowLONGNO
timestampLONGYES

Get Detail on Sub-account's Futures Account (For Master Account)#

Response


{    "email": "abc@test.com",    "asset": "USDT",    "assets":[        {            "asset": "USDT",            "initialMargin": "0.00000000",            "maintenanceMargin": "0.00000000",            "marginBalance": "0.88308000",            "maxWithdrawAmount": "0.88308000",            "openOrderInitialMargin": "0.00000000",            "positionInitialMargin": "0.00000000",            "unrealizedProfit": "0.00000000",            "walletBalance": "0.88308000"         }    ],    "canDeposit": true,    "canTrade": true,    "canWithdraw": true,    "feeTier": 2,    "maxWithdrawAmount": "0.88308000",    "totalInitialMargin": "0.00000000",    "totalMaintenanceMargin": "0.00000000",    "totalMarginBalance": "0.88308000",    "totalOpenOrderInitialMargin": "0.00000000",    "totalPositionInitialMargin": "0.00000000",    "totalUnrealizedProfit": "0.00000000",    "totalWalletBalance": "0.88308000",    "updateTime": 1576756674610 }

GET /sapi/v1/sub-account/futures/account (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
recvWindowLONGNO
timestampLONGYES

Get Summary of Sub-account's Futures Account (For Master Account)#

Response

{    "totalInitialMargin": "9.83137400",     "totalMaintenanceMargin": "0.41568700",     "totalMarginBalance": "23.03235621",     "totalOpenOrderInitialMargin": "9.00000000",    "totalPositionInitialMargin": "0.83137400",    "totalUnrealizedProfit": "0.03219710",    "totalWalletBalance": "22.15879444",    "asset": "USD",  // The sum of BUSD and USDT    "subAccountList":[        {            "email": "123@test.com",            "totalInitialMargin": "9.00000000",             "totalMaintenanceMargin": "0.00000000",             "totalMarginBalance": "22.12659734",             "totalOpenOrderInitialMargin": "9.00000000",            "totalPositionInitialMargin": "0.00000000",            "totalUnrealizedProfit": "0.00000000",            "totalWalletBalance": "22.12659734",            "asset": "USD" //The sum of BUSD and USDT        },        {             "email": "345@test.com",            "totalInitialMargin": "0.83137400",             "totalMaintenanceMargin": "0.41568700",             "totalMarginBalance": "0.90575887",             "totalOpenOrderInitialMargin": "0.00000000",            "totalPositionInitialMargin": "0.83137400",            "totalUnrealizedProfit": "0.03219710",            "totalWalletBalance": "0.87356177",            "asset": "USD"        }    ]}

GET /sapi/v1/sub-account/futures/accountSummary (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNO
timestampLONGYES

Get Futures Position-Risk of Sub-account (For Master Account)#

Response

[    {        "entryPrice": "9975.12000",        "leverage": "50",              // current initial leverage        "maxNotional": "1000000",      // notional value limit of current initial leverage        "liquidationPrice": "7963.54",        "markPrice": "9973.50770517",        "positionAmount": "0.010",        "symbol": "BTCUSDT",        "unrealizedProfit": "-0.01612295"    }]

GET /sapi/v1/sub-account/futures/positionRisk (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
recvWindowLONGNO
timestampLONGYES

Futures Transfer for Sub-account (For Master Account)#

Response

{    "txnId":"2966662589"}

POST /sapi/v1/sub-account/futures/transfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
assetSTRINGYESThe asset being transferred, e.g., USDT
amountDECIMALYESThe amount to be transferred
typeINTYES1: transfer from subaccount's spot account to its USDT-margined futures account 2: transfer from subaccount's USDT-margined futures account to its spot account 3: transfer from subaccount's spot account to its COIN-margined futures account 4:transfer from subaccount's COIN-margined futures account to its spot account
recvWindowLONGNO
timestampLONGYES

Margin Transfer for Sub-account (For Master Account)#

Response

{    "txnId":"2966662589"}

POST /sapi/v1/sub-account/margin/transfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
assetSTRINGYESThe asset being transferred, e.g., BTC
amountDECIMALYESThe amount to be transferred
typeINTYES1: transfer from subaccount's spot account to margin account 2: transfer from subaccount's margin account to its spot account
recvWindowLONGNO
timestampLONGYES

Transfer to Sub-account of Same Master (For Sub-account)#

Response

{    "txnId":"2966662589"}

POST /sapi/v1/sub-account/transfer/subToSub (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
toEmailSTRINGYESSub-account email
assetSTRINGYES
amountDECIMALYES
recvWindowLONGNO
timestampLONGYES

Transfer to Master (For Sub-account)#

Response

{    "txnId":"2966662589"}

POST /sapi/v1/sub-account/transfer/subToMaster (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
assetSTRINGYES
amountDECIMALYES
recvWindowLONGNO
timestampLONGYES

Sub-account Transfer History (For Sub-account)#

Response

[  {    "counterParty":"master",    "email":"master@test.com",    "type":1,  // 1 for transfer in, 2 for transfer out    "asset":"BTC",    "qty":"1",    "fromAccountType":"SPOT",    "toAccountType":"SPOT",    "status":"SUCCESS",    "tranId":11798835829,    "time":1544433325000  },  {    "counterParty":"subAccount",    "email":"sub2@test.com",    "type":1,                                     "asset":"ETH",    "qty":"2",    "fromAccountType":"SPOT",    "toAccountType":"SPOT",    "status":"SUCCESS",    "tranId":11798829519,    "time":1544433326000  }]

GET /sapi/v1/sub-account/transfer/subUserHistory (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
assetSTRINGNOIf not sent, result of all assets will be returned
typeINTNO1: transfer in, 2: transfer out
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500
recvWindowLONGNO
timestampLONGYES
  • If type is not sent, the records of type 2: transfer out will be returned by default.
  • If startTime and endTime are not sent, the recent 30-day data will be returned.

Universal Transfer (For Master Account)#

Response

{    "tranId":11945860693}

POST /sapi/v1/sub-account/universalTransfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
fromEmailSTRINGNO
toEmailSTRINGNO
fromAccountTypeSTRINGYES"SPOT","USDT_FUTURE","COIN_FUTURE"
toAccountTypeSTRINGYES"SPOT","USDT_FUTURE","COIN_FUTURE"
assetSTRINGYES
amountDECIMALYES
recvWindowLONGNO
timestampLONGYES
  • You need to enable "internal transfer" option for the api key which requests this endpoint.
  • Transfer from master account by default if fromEmail is not sent.
  • Transfer to master account by default if toEmail is not sent.
  • Transfer between futures accounts is not supported.

Query Universal Transfer History (For Master Account)#

Response

[  {    "tranId":11945860693,    "fromEmail":"master@test.com",    "toEmail":"subaccount1@test.com",    "asset":"BTC",    "amount":"0.1",    "fromAccountType":"SPOT",    "toAccountType":"COIN_FUTURE",    "status":"SUCCESS",    "createTimeStamp":1544433325000  },  {    "tranId":11945857955,    "fromEmail":"master@test.com",    "toEmail":"subaccount2@test.com",                                   "asset":"ETH",    "amount":"0.2",    "fromAccountType":"SPOT",    "toAccountType":"USDT_FUTURE",    "status":"SUCCESS",    "createTimeStamp":1544433326000  }]

GET /sapi/v1/sub-account/universalTransfer (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
fromEmailSTRINGNO
toEmailSTRINGNO
startTimeLONGNO
endTimeLONGNO
pageINTNODefault 1
limitINTNODefault 500, Max 500
recvWindowLONGNO
timestampLONGYES
  • fromEmail and toEmail cannot be sent at the same time.
  • Return fromEmail equal master account email by default.
  • Only get the latest history of past 30 days.

Get Detail on Sub-account's Futures Account V2 (For Master Account)#

Response

USDT Margined Futures:


{    "futureAccountResp": {    "email": "abc@test.com",    "assets":[        {            "asset": "USDT",            "initialMargin": "0.00000000",            "maintenanceMargin": "0.00000000",            "marginBalance": "0.88308000",            "maxWithdrawAmount": "0.88308000",            "openOrderInitialMargin": "0.00000000",            "positionInitialMargin": "0.00000000",            "unrealizedProfit": "0.00000000",            "walletBalance": "0.88308000"         }    ],    "canDeposit": true,    "canTrade": true,    "canWithdraw": true,    "feeTier": 2,    "maxWithdrawAmount": "0.88308000",    "totalInitialMargin": "0.00000000",    "totalMaintenanceMargin": "0.00000000",    "totalMarginBalance": "0.88308000",    "totalOpenOrderInitialMargin": "0.00000000",    "totalPositionInitialMargin": "0.00000000",    "totalUnrealizedProfit": "0.00000000",    "totalWalletBalance": "0.88308000",    "updateTime": 1576756674610 }}

COIN Margined Futures:


{    "deliveryAccountResp": {        "email": "abc@test.com",        "assets":[            {                "asset": "BTC",                "initialMargin": "0.00000000",                "maintenanceMargin": "0.00000000",                "marginBalance": "0.88308000",                "maxWithdrawAmount": "0.88308000",                "openOrderInitialMargin": "0.00000000",                "positionInitialMargin": "0.00000000",                "unrealizedProfit": "0.00000000",                "walletBalance": "0.88308000"             }        ],        "canDeposit": true,        "canTrade": true,        "canWithdraw": true,        "feeTier": 2,        "updateTime": 1598959682001    } }

GET /sapi/v2/sub-account/futures/account (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
futuresTypeINTYES1:USDT Margined Futures, 2:COIN Margined Futures
recvWindowLONGNO
timestampLONGYES

Get Summary of Sub-account's Futures Account V2 (For Master Account)#

Response

USDT Margined Futures:

{  "futureAccountSummaryResp": {    "totalInitialMargin": "9.83137400",     "totalMaintenanceMargin": "0.41568700",     "totalMarginBalance": "23.03235621",     "totalOpenOrderInitialMargin": "9.00000000",    "totalPositionInitialMargin": "0.83137400",    "totalUnrealizedProfit": "0.03219710",    "totalWalletBalance": "22.15879444",    "asset": "USD",  //The sum of BUSD and USDT    "subAccountList":[        {            "email": "123@test.com",            "totalInitialMargin": "9.00000000",             "totalMaintenanceMargin": "0.00000000",             "totalMarginBalance": "22.12659734",             "totalOpenOrderInitialMargin": "9.00000000",            "totalPositionInitialMargin": "0.00000000",            "totalUnrealizedProfit": "0.00000000",            "totalWalletBalance": "22.12659734",            "asset": "USD"  //The sum of BUSD and USDT        },        {             "email": "345@test.com",            "totalInitialMargin": "0.83137400",             "totalMaintenanceMargin": "0.41568700",            "totalMarginBalance": "0.90575887",            "totalOpenOrderInitialMargin": "0.00000000",            "totalPositionInitialMargin": "0.83137400",            "totalUnrealizedProfit": "0.03219710",            "totalWalletBalance": "0.87356177",            "asset": "USD"        }    ]  }}

COIN Margined Futures:

{  "deliveryAccountSummaryResp": {    "totalMarginBalanceOfBTC": "25.03221121",     "totalUnrealizedProfitOfBTC": "0.12233410",    "totalWalletBalanceOfBTC": "22.15879444",    "asset": "BTC",    "subAccountList":[        {            "email": "123@test.com",            "totalMarginBalance": "22.12659734",             "totalUnrealizedProfit": "0.00000000",            "totalWalletBalance": "22.12659734",            "asset": "BTC"        },        {             "email": "345@test.com",            "totalMarginBalance": "0.90575887",            "totalUnrealizedProfit": "0.03219710",            "totalWalletBalance": "0.87356177",            "asset": "BTC"        }    ]  }}

GET /sapi/v2/sub-account/futures/accountSummary (HMAC SHA256)

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
futuresTypeINTYES1:USDT Margined Futures, 2:COIN Margined Futures
pageINTNOdefault:1
limitINTNOdefault:10, max:20
recvWindowLONGNO
timestampLONGYES

Get Futures Position-Risk of Sub-account V2 (For Master Account)#

Response

USDT Margined Futures:

{  "futurePositionRiskVos": [     {        "entryPrice": "9975.12000",        "leverage": "50",              // current initial leverage        "maxNotional": "1000000",      // notional value limit of current initial leverage        "liquidationPrice": "7963.54",        "markPrice": "9973.50770517",        "positionAmount": "0.010",        "symbol": "BTCUSDT",        "unrealizedProfit": "-0.01612295"     }   ]}

COIN Margined Futures:

{  "deliveryPositionRiskVos": [     {        "entryPrice": "9975.12000",        "markPrice": "9973.50770517",        "leverage": "20",                  "isolated": "false",                        "isolatedWallet": "9973.50770517",        "isolatedMargin": "0.00000000",        "isAutoAddMargin": "false",        "positionSide": "BOTH",        "positionAmount": "1.230",        "symbol": "BTCUSD_201225",        "unrealizedProfit": "-0.01612295"     }   ]}

GET /sapi/v2/sub-account/futures/positionRisk (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
futuresTypeINTYES1:USDT Margined Futures, 2:COIN Margined Futures
recvWindowLONGNO
timestampLONGYES

Enable Leverage Token for Sub-account (For Master Account)#

Response

{    "email":"123@test.com",    "enableBlvt":true}

POST /sapi/v1/sub-account/blvt/enable (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYESSub-account email
enableBlvtBOOLEANYESOnly true for now
recvWindowLONGNO
timestampLONGYES

Deposit assets into the managed sub-account(For Investor Master Account)#

Response

{    "tranId":66157362489}

POST /sapi/v1/managed-subaccount/deposit (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
toEmailSTRINGYES
assetSTRINGYES
amountDECIMALYES
recvWindowLONGNO
timestampLONGYES

Query managed sub-account asset details(For Investor Master Account)#

Response

[  {     "coin": "INJ",                     "name": "Injective Protocol",      "totalBalance": "0",               "availableBalance": "0",           "inOrder": "0",                     "btcValue": "0"                 },  {     "coin": "FILDOWN",     "name": "FILDOWN",     "totalBalance": "0",     "availableBalance": "0",     "inOrder": "0",     "btcValue": "0"  }]

GET /sapi/v1/managed-subaccount/asset (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
emailSTRINGYES
recvWindowLONGNO
timestampLONGYES

Withdrawl assets from the managed sub-account(For Investor Master Account)#

Response

{    "tranId":66157362489}

POST /sapi/v1/managed-subaccount/withdraw (HMAC SHA256)

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
fromEmailSTRINGYES
assetSTRINGYES
amountDECIMALYES
transferDateLONGNOWithdrawals is automatically occur on the transfer date(UTC0). If a date is not selected, the withdrawal occurs right now
recvWindowLONGNO
timestampLONGYES

Market Data Endpoints

Test Connectivity#

Response:

{}

GET /api/v3/ping

Test connectivity to the Rest API.

Weight(IP): 1

Parameters:

NONE

Data Source: Memory

Check Server Time#

Response:

{  "serverTime": 1499827319559}

GET /api/v3/time

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

Weight(IP): 1

Parameters:

NONE

Data Source: Memory

Exchange Information#

Response:

{  "timezone": "UTC",  "serverTime": 1565246363776,  "rateLimits": [    {      //These are defined in the `ENUM definitions` section under `Rate Limiters (rateLimitType)`.      //All limits are optional    }  ],  "exchangeFilters": [    //These are the defined filters in the `Filters` section.    //All filters are optional.  ],  "symbols": [    {      "symbol": "ETHBTC",      "status": "TRADING",      "baseAsset": "ETH",      "baseAssetPrecision": 8,      "quoteAsset": "BTC",      "quotePrecision": 8,      "quoteAssetPrecision": 8,      "orderTypes": [        "LIMIT",        "LIMIT_MAKER",        "MARKET",        "STOP_LOSS",        "STOP_LOSS_LIMIT",        "TAKE_PROFIT",        "TAKE_PROFIT_LIMIT"      ],      "icebergAllowed": true,      "ocoAllowed": true,      "isSpotTradingAllowed": true,      "isMarginTradingAllowed": true,      "filters": [        //These are defined in the Filters section.        //All filters are optional      ],      "permissions": [         "SPOT",         "MARGIN"      ]    }  ]}

GET /api/v3/exchangeInfo

Current exchange trading rules and symbol information

Weight(IP): 10

Parameters:

There are 3 possible options:

OptionsExample
No parametercurl -X GET "https://api.binance.com/api/v3/exchangeInfo"
symbolcurl -X GET "https://api.binance.com/api/v3/exchangeInfo?symbol=BNBBTC"
symbolscurl -X GET "https://api.binance.com/api/v3/exchangeInfo?symbols=%5B%22BNBBTC%22,%22BTCUSDT%22%5D" or curl -g GET 'https://api.binance.com/api/v3/exchangeInfo?symbols=["BTCUSDT","BNBBTC"]'

If any symbol provided in either symbol or symbols do not exist, the endpoint will throw an error.

Data Source: Memory

Order Book#

Response:

{  "lastUpdateId": 1027024,  "bids": [    [      "4.00000000",     // PRICE      "431.00000000"    // QTY    ]  ],  "asks": [    [      "4.00000200",      "12.00000000"    ]  ]}

GET /api/v3/depth

Weight(IP):

Adjusted based on the limit:

LimitWeight
5, 10, 20, 50, 1001
5005
100010
500050

Parameters:

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

Data Source: Memory

Recent Trades List#

Response:

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

GET /api/v3/trades

Get recent trades.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
limitINTNODefault 500; max 1000.

Data Source: Memory

Old Trade Lookup (MARKET_DATA)#

Response:

[  {    "id": 28457,    "price": "4.00000100",    "qty": "12.00000000",    "quoteQty": "48.000012",    "time": 1499865549590, // Trade executed timestamp, as same as `T` in the stream    "isBuyerMaker": true,    "isBestMatch": true  }]

GET /api/v3/historicalTrades

Get older market trades.

Weight(IP): 5

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
limitINTNODefault 500; max 1000.
fromIdLONGNOTrade id to fetch from. Default gets most recent trades.

Data Source: Database

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?    "M": true           // Was the trade the best price match?  }]

GET /api/v3/aggTrades

Get compressed, aggregate trades. Trades that fill at the time, from the same order, with the same price will have the quantity aggregated.

Weight(IP): 1

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 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.

Data Source: Database

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 /api/v3/klines

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

Weight(IP): 1

Parameters:

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

Data Source: Database

Current Average Price#

Response:

{  "mins": 5,  "price": "9.35751834"}

GET /api/v3/avgPrice

Current average price for a symbol.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES

Data Source: Memory

24hr Ticker Price Change Statistics#

Response:

{  "symbol": "BNBBTC",  "priceChange": "-94.99999800",  "priceChangePercent": "-95.960",  "weightedAvgPrice": "0.29628482",  "prevClosePrice": "0.10002000",  "lastPrice": "4.00000200",  "lastQty": "200.00000000",  "bidPrice": "4.00000000",  "askPrice": "4.00000200",  "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": "BNBBTC",    "priceChange": "-94.99999800",    "priceChangePercent": "-95.960",    "weightedAvgPrice": "0.29628482",    "prevClosePrice": "0.10002000",    "lastPrice": "4.00000200",    "lastQty": "200.00000000",    "bidPrice": "4.00000000",    "askPrice": "4.00000200",    "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 /api/v3/ticker/24hr

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

Weight(IP):

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.

Data Source: Memory

Symbol Price Ticker#

Response:

{  "symbol": "LTCBTC",  "price": "4.00000200"}

OR

[  {    "symbol": "LTCBTC",    "price": "4.00000200"  },  {    "symbol": "ETHBTC",    "price": "0.07946600"  }]

GET /api/v3/ticker/price

Latest price for a symbol or symbols.

Weight(IP):

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.

Data Source: Memory

Symbol Order Book Ticker#

Response:

{  "symbol": "LTCBTC",  "bidPrice": "4.00000000",  "bidQty": "431.00000000",  "askPrice": "4.00000200",  "askQty": "9.00000000"}

OR

[  {    "symbol": "LTCBTC",    "bidPrice": "4.00000000",    "bidQty": "431.00000000",    "askPrice": "4.00000200",    "askQty": "9.00000000"  },  {    "symbol": "ETHBTC",    "bidPrice": "0.07946700",    "bidQty": "9.00000000",    "askPrice": "100000.00000000",    "askQty": "1000.00000000"  }]

GET /api/v3/ticker/bookTicker

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

Weight(IP):

1 for a single symbol;
2 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.

Data Source: Memory


Websocket Market Streams

  • The base endpoint is: wss://stream.binance.com:9443
  • Streams can be accessed either in a single raw stream or in a combined stream
  • Raw streams are accessed at /ws/\<streamName>
  • Combined streams are accessed at /stream?streams=\<streamName1>/\<streamName2>/\<streamName3>
  • Combined stream events are wrapped as follows: {"stream":"\<streamName>","data":\<rawPayload>}
  • All symbols for streams are lowercase
  • A single connection to stream.binance.com is only valid for 24 hours; expect to be disconnected at the 24 hour mark
  • The websocket server will send a ping frame every 3 minutes. If the websocket server does not receive a pong frame back from the connection within a 10 minute period, the connection will be disconnected. Unsolicited pong frames are allowed.

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.
  • In the response, if the result received is null this means the request sent was a success.

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 or 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", "id": '%s'}Parameter used in the SET_PROPERTY or GET_PROPERTY was invalid
{"code": 1, "msg": "Invalid value type: expected Boolean", "id": '%s'}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": "BNBBTC",    // Symbol  "a": 12345,       // 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?  "M": true         // Ignore}

The Aggregate Trade Streams push trade information that is aggregated for a single taker order.

Stream Name: <symbol>@aggTrade

Update Speed: Real-time

Trade Streams#

Payload:

{  "e": "trade",     // Event type  "E": 123456789,   // Event time  "s": "BNBBTC",    // Symbol  "t": 12345,       // Trade ID  "p": "0.001",     // Price  "q": "100",       // Quantity  "b": 88,          // Buyer order ID  "a": 50,          // Seller order ID  "T": 123456785,   // Trade time  "m": true,        // Is the buyer the market maker?  "M": true         // Ignore}

The Trade Streams push raw trade information; each trade has a unique buyer and seller.

Stream Name: <symbol>@trade

Update Speed: Real-time

Kline/Candlestick Streams#

Payload:

{  "e": "kline",     // Event type  "E": 123456789,   // Event time  "s": "BNBBTC",    // Symbol  "k": {    "t": 123400000, // Kline start time    "T": 123460000, // Kline close time    "s": "BNBBTC",  // 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 second.

Stream Name: <symbol>@kline_<interval>

Update Speed: 2000ms

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

Individual Symbol Mini Ticker Stream#

Payload:

  {    "e": "24hrMiniTicker",  // Event type    "E": 123456789,         // Event time    "s": "BNBBTC",          // 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. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.

Stream Name: <symbol>@miniTicker

Update Speed: 1000ms

All Market Mini Tickers Stream#

Payload:

[  {    // Same as <symbol>@miniTicker payload  }]

24hr rolling window mini-ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. 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": "BNBBTC",      // Symbol  "p": "0.0015",      // Price change  "P": "250.00",      // Price change percent  "w": "0.0018",      // Weighted average price  "x": "0.0009",      // First trade(F)-1 price (first trade before the 24hr rolling window)  "c": "0.0025",      // Last price  "Q": "10",          // Last quantity  "b": "0.0024",      // Best bid price  "B": "10",          // Best bid quantity  "a": "0.0026",      // Best ask price  "A": "100",         // Best ask 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 for the previous 24hrs.

Stream Name: <symbol>@ticker

Update Speed: 1000ms

All Market Tickers Stream#

Payload:

[  {    // Same as <symbol>@ticker payload  }]

24hr rolling window ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. 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:

{  "u":400900217,     // order book updateId  "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

Partial Book Depth Streams#

Payload:

{  "lastUpdateId": 160,  // Last update ID  "bids": [             // Bids to be updated    [      "0.0024",         // Price level to be updated      "10"              // Quantity    ]  ],  "asks": [             // Asks to be updated    [      "0.0026",         // Price level to be updated      "100"             // Quantity    ]  ]}

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

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

Update Speed: 1000ms or 100ms

Diff. Depth Stream#

Payload:

{  "e": "depthUpdate", // Event type  "E": 123456789,     // Event time  "s": "BNBBTC",      // Symbol  "U": 157,           // First update ID in event  "u": 160,           // Final update ID in event  "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    ]  ]}

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

Update Speed: 1000ms or 100ms

Order book price and quantity depth updates used to locally manage an order book.

How to manage a local order book correctly#

  1. Open a stream to wss://stream.binance.com:9443/ws/bnbbtc@depth.
  2. Buffer the events you receive from the stream.
  3. Get a depth snapshot from https://api.binance.com/api/v3/depth?symbol=BNBBTC&limit=1000 .
  4. Drop any event where u is <= lastUpdateId in the snapshot.
  5. The first processed event should have U <= lastUpdateId+1 AND u >= lastUpdateId+1.
  6. While listening to the stream, each new event's U should be equal to the previous event's u+1.
  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.

Spot Account/Trade

Test New Order (TRADE)#

Response:

{}

POST /api/v3/order/test (HMAC SHA256)

Test new order creation and signature/recvWindow long. Creates and validates a new order but does not send it into the matching engine.

Weight: 1

Parameters:

Same as POST /api/v3/order

Data Source: Memory

New Order (TRADE)#

Response ACK:

{  "symbol": "BTCUSDT",  "orderId": 28,  "orderListId": -1, //Unless OCO, value will be -1  "clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",  "transactTime": 1507725176595}

Response RESULT:

{  "symbol": "BTCUSDT",  "orderId": 28,  "orderListId": -1, //Unless OCO, value will be -1  "clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",  "transactTime": 1507725176595,  "price": "0.00000000",  "origQty": "10.00000000",  "executedQty": "10.00000000",  "cummulativeQuoteQty": "10.00000000",  "status": "FILLED",  "timeInForce": "GTC",  "type": "MARKET",  "side": "SELL"}

Response FULL:

{  "symbol": "BTCUSDT",  "orderId": 28,  "orderListId": -1, //Unless OCO, value will be -1  "clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",  "transactTime": 1507725176595,  "price": "0.00000000",  "origQty": "10.00000000",  "executedQty": "10.00000000",  "cummulativeQuoteQty": "10.00000000",  "status": "FILLED",  "timeInForce": "GTC",  "type": "MARKET",  "side": "SELL",  "fills": [    {      "price": "4000.00000000",      "qty": "1.00000000",      "commission": "4.00000000",      "commissionAsset": "USDT"    },    {      "price": "3999.00000000",      "qty": "5.00000000",      "commission": "19.99500000",      "commissionAsset": "USDT"    },    {      "price": "3998.00000000",      "qty": "2.00000000",      "commission": "7.99600000",      "commissionAsset": "USDT"    },    {      "price": "3997.00000000",      "qty": "1.00000000",      "commission": "3.99700000",      "commissionAsset": "USDT"    },    {      "price": "3995.00000000",      "qty": "1.00000000",      "commission": "3.99500000",      "commissionAsset": "USDT"    }  ]}

POST /api/v3/order (HMAC SHA256)

Send in a new order.

Weight(UID): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
sideENUMYES
typeENUMYES
timeInForceENUMNO
quantityDECIMALNO
quoteOrderQtyDECIMALNO
priceDECIMALNO
newClientOrderIdSTRINGNOA unique id among open orders. Automatically generated if not sent.
stopPriceDECIMALNOUsed with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.
icebergQtyDECIMALNOUsed with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.
newOrderRespTypeENUMNOSet the response JSON. ACK, RESULT, or FULL; MARKET and LIMIT order types default to FULL, all other orders default to ACK.
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Additional mandatory parameters based on type:

TypeAdditional mandatory parameters
LIMITtimeInForce, quantity, price
MARKETquantity or quoteOrderQty
STOP_LOSSquantity, stopPrice
STOP_LOSS_LIMITtimeInForce, quantity, price, stopPrice
TAKE_PROFITquantity, stopPrice
TAKE_PROFIT_LIMITtimeInForce, quantity, price, stopPrice
LIMIT_MAKERquantity, price

Other info:

  • LIMIT_MAKER are LIMIT orders that will be rejected if they would immediately match and trade as a taker.
  • STOP_LOSS and TAKE_PROFIT will execute a MARKET order when the stopPrice is reached.
  • Any LIMIT or LIMIT_MAKER type order can be made an iceberg order by sending an icebergQty.
  • Any order with an icebergQty MUST have timeInForce set to GTC.
  • MARKET orders using the quantity field specifies the amount of the base asset the user wants to buy or sell at the market price.
    • For example, sending a MARKET order on BTCUSDT will specify how much BTC the user is buying or selling.
  • MARKET orders using quoteOrderQty specifies the amount the user wants to spend (when buying) or receive (when selling) the quote asset; the correct quantity will be determined based on the market liquidity and quoteOrderQty.
    • Using BTCUSDT as an example:
      • On the BUY side, the order will buy as many BTC as quoteOrderQty USDT can.
      • On the SELL side, the order will sell as much BTC needed to receive quoteOrderQty USDT.
  • MARKET orders using quoteOrderQty will not break LOT_SIZE filter rules; the order will execute a quantity that will have the notional value as close as possible to quoteOrderQty.
  • same newClientOrderId can be accepted only when the previous one is filled, otherwise the order will be rejected.

Trigger order price rules against market price for both MARKET and LIMIT versions:

  • Price above market price: STOP_LOSS BUY, TAKE_PROFIT SELL
  • Price below market price: STOP_LOSS SELL, TAKE_PROFIT BUY

Data Source: Matching Engine

Cancel Order (TRADE)#

Response:

{  "symbol": "LTCBTC",  "origClientOrderId": "myOrder1",  "orderId": 4,  "orderListId": -1, //Unless part of an OCO, the value will always be -1.  "clientOrderId": "cancelMyOrder1",  "price": "2.00000000",  "origQty": "1.00000000",  "executedQty": "0.00000000",  "cummulativeQuoteQty": "0.00000000",  "status": "CANCELED",  "timeInForce": "GTC",  "type": "LIMIT",  "side": "BUY"}

DELETE /api/v3/order (HMAC SHA256)

Cancel an active order.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
newClientOrderIdSTRINGNOUsed to uniquely identify this cancel. Automatically generated by default.
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Either orderId or origClientOrderId must be sent.

Data Source: Matching Engine

Cancel all Open Orders on a Symbol (TRADE)#

Response:

[  {    "symbol": "BTCUSDT",    "origClientOrderId": "E6APeyTJvkMvLMYMqu1KQ4",    "orderId": 11,    "orderListId": -1,    "clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",    "price": "0.089853",    "origQty": "0.178622",    "executedQty": "0.000000",    "cummulativeQuoteQty": "0.000000",    "status": "CANCELED",    "timeInForce": "GTC",    "type": "LIMIT",    "side": "BUY"  },  {    "symbol": "BTCUSDT",    "origClientOrderId": "A3EF2HCwxgZPFMrfwbgrhv",    "orderId": 13,    "orderListId": -1,    "clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",    "price": "0.090430",    "origQty": "0.178622",    "executedQty": "0.000000",    "cummulativeQuoteQty": "0.000000",    "status": "CANCELED",    "timeInForce": "GTC",    "type": "LIMIT",    "side": "BUY"  },  {    "orderListId": 1929,    "contingencyType": "OCO",    "listStatusType": "ALL_DONE",    "listOrderStatus": "ALL_DONE",    "listClientOrderId": "2inzWQdDvZLHbbAmAozX2N",    "transactionTime": 1585230948299,    "symbol": "BTCUSDT",    "orders": [      {        "symbol": "BTCUSDT",        "orderId": 20,        "clientOrderId": "CwOOIPHSmYywx6jZX77TdL"      },      {        "symbol": "BTCUSDT",        "orderId": 21,        "clientOrderId": "461cPg51vQjV3zIMOXNz39"      }    ],    "orderReports": [      {        "symbol": "BTCUSDT",        "origClientOrderId": "CwOOIPHSmYywx6jZX77TdL",        "orderId": 20,        "orderListId": 1929,        "clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",        "price": "0.668611",        "origQty": "0.690354",        "executedQty": "0.000000",        "cummulativeQuoteQty": "0.000000",        "status": "CANCELED",        "timeInForce": "GTC",        "type": "STOP_LOSS_LIMIT",        "side": "BUY",        "stopPrice": "0.378131",        "icebergQty": "0.017083"      },      {        "symbol": "BTCUSDT",        "origClientOrderId": "461cPg51vQjV3zIMOXNz39",        "orderId": 21,        "orderListId": 1929,        "clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",        "price": "0.008791",        "origQty": "0.690354",        "executedQty": "0.000000",        "cummulativeQuoteQty": "0.000000",        "status": "CANCELED",        "timeInForce": "GTC",        "type": "LIMIT_MAKER",        "side": "BUY",        "icebergQty": "0.639962"      }    ]  }]

DELETE /api/v3/openOrders

Cancels all active orders on a symbol.
This includes OCO orders.

Weight(IP): 1

Parameters

NameTypeMandatoryDescription
symbolSTRINGYES
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Data Source: Matching Engine

Query Order (USER_DATA)#

Response:

{  "symbol": "LTCBTC",  "orderId": 1,  "orderListId": -1, //Unless OCO, value will be -1  "clientOrderId": "myOrder1",  "price": "0.1",  "origQty": "1.0",  "executedQty": "0.0",  "cummulativeQuoteQty": "0.0",  "status": "NEW",  "timeInForce": "GTC",  "type": "LIMIT",  "side": "BUY",  "stopPrice": "0.0",  "icebergQty": "0.0",  "time": 1499827319559,  "updateTime": 1499827319559,  "isWorking": true,  "origQuoteOrderQty": "0.000000"}

GET /api/v3/order (HMAC SHA256)

Check an order's status.

Weight(IP): 2

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
origClientOrderIdSTRINGNO
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Notes:

  • Either orderId or origClientOrderId must be sent.
  • For some historical orders cummulativeQuoteQty will be < 0, meaning the data is not available at this time.

Data Source: Database

Current Open Orders (USER_DATA)#

Response:

[  {    "symbol": "LTCBTC",    "orderId": 1,    "orderListId": -1, //Unless OCO, the value will always be -1    "clientOrderId": "myOrder1",    "price": "0.1",    "origQty": "1.0",    "executedQty": "0.0",    "cummulativeQuoteQty": "0.0",    "status": "NEW",    "timeInForce": "GTC",    "type": "LIMIT",    "side": "BUY",    "stopPrice": "0.0",    "icebergQty": "0.0",    "time": 1499827319559,    "updateTime": 1499827319559,    "isWorking": true,    "origQuoteOrderQty": "0.000000"  }]

GET /api/v3/openOrders (HMAC SHA256)

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

Weight(IP): 3 for a single symbol; 40 when the symbol parameter is omitted;

Parameters:

NameTypeMandatoryDescription
symbolSTRINGNO
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES
  • If the symbol is not sent, orders for all symbols will be returned in an array.

Data Source: Database

All Orders (USER_DATA)#

Response:

[  {    "symbol": "LTCBTC",    "orderId": 1,    "orderListId": -1, //Unless OCO, the value will always be -1    "clientOrderId": "myOrder1",    "price": "0.1",    "origQty": "1.0",    "executedQty": "0.0",    "cummulativeQuoteQty": "0.0",    "status": "NEW",    "timeInForce": "GTC",    "type": "LIMIT",    "side": "BUY",    "stopPrice": "0.0",    "icebergQty": "0.0",    "time": 1499827319559,    "updateTime": 1499827319559,    "isWorking": true,    "origQuoteOrderQty": "0.000000"  }]

GET /api/v3/allOrders (HMAC SHA256)

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

Weight(IP): 10 with symbol

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNO
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1000.
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Notes:

  • If orderId is set, it will get orders >= that orderId. Otherwise most recent orders are returned.
  • For some historical orders cummulativeQuoteQty will be < 0, meaning the data is not available at this time.
  • If startTime and/or endTime provided, orderId is not required.

Data Source: Database

New OCO (TRADE)#

Response:

{  "orderListId": 0,  "contingencyType": "OCO",  "listStatusType": "EXEC_STARTED",  "listOrderStatus": "EXECUTING",  "listClientOrderId": "JYVpp3F0f5CAG15DhtrqLp",  "transactionTime": 1563417480525,  "symbol": "LTCBTC",  "orders": [    {      "symbol": "LTCBTC",      "orderId": 2,      "clientOrderId": "Kk7sqHb9J6mJWTMDVW7Vos"    },    {      "symbol": "LTCBTC",      "orderId": 3,      "clientOrderId": "xTXKaGYd4bluPVp78IVRvl"    }  ],  "orderReports": [    {      "symbol": "LTCBTC",      "orderId": 2,      "orderListId": 0,      "clientOrderId": "Kk7sqHb9J6mJWTMDVW7Vos",      "transactTime": 1563417480525,      "price": "0.000000",      "origQty": "0.624363",      "executedQty": "0.000000",      "cummulativeQuoteQty": "0.000000",      "status": "NEW",      "timeInForce": "GTC",      "type": "STOP_LOSS",      "side": "BUY",      "stopPrice": "0.960664"    },    {      "symbol": "LTCBTC",      "orderId": 3,      "orderListId": 0,      "clientOrderId": "xTXKaGYd4bluPVp78IVRvl",      "transactTime": 1563417480525,      "price": "0.036435",      "origQty": "0.624363",      "executedQty": "0.000000",      "cummulativeQuoteQty": "0.000000",      "status": "NEW",      "timeInForce": "GTC",      "type": "LIMIT_MAKER",      "side": "BUY"    }  ]}

POST /api/v3/order/oco (HMAC SHA256)

Send in a new OCO

Weight(UID): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
listClientOrderIdSTRINGNOA unique Id for the entire orderList
sideENUMYES
quantityDECIMALYES
limitClientOrderIdSTRINGNOA unique Id for the limit order
priceDECIMALYES
limitIcebergQtyDECIMALNO
stopClientOrderIdSTRINGNOA unique Id for the stop loss/stop loss limit leg
stopPriceDECIMALYES
stopLimitPriceDECIMALNOIf provided, stopLimitTimeInForce is required.
stopIcebergQtyDECIMALNO
stopLimitTimeInForceENUMNOValid values are GTC/FOK/IOC
newOrderRespTypeENUMNOSet the response JSON.
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Other Info:

  • Price Restrictions:
    • SELL: Limit Price > Last Price > Stop Price
    • BUY: Limit Price < Last Price < Stop Price
  • Quantity Restrictions:
    • Both legs must have the same quantity
    • ICEBERG quantities however do not have to be the same.
  • Order Rate Limit
    • OCO counts as 2 orders against the order rate limit.

Data Source: Matching Engine

Cancel OCO (TRADE)#

Response:

{  "orderListId": 0,  "contingencyType": "OCO",  "listStatusType": "ALL_DONE",  "listOrderStatus": "ALL_DONE",  "listClientOrderId": "C3wyj4WVEktd7u9aVBRXcN",  "transactionTime": 1574040868128,  "symbol": "LTCBTC",  "orders": [    {      "symbol": "LTCBTC",      "orderId": 2,      "clientOrderId": "pO9ufTiFGg3nw2fOdgeOXa"    },    {      "symbol": "LTCBTC",      "orderId": 3,      "clientOrderId": "TXOvglzXuaubXAaENpaRCB"    }  ],  "orderReports": [    {      "symbol": "LTCBTC",      "origClientOrderId": "pO9ufTiFGg3nw2fOdgeOXa",      "orderId": 2,      "orderListId": 0,      "clientOrderId": "unfWT8ig8i0uj6lPuYLez6",      "price": "1.00000000",      "origQty": "10.00000000",      "executedQty": "0.00000000",      "cummulativeQuoteQty": "0.00000000",      "status": "CANCELED",      "timeInForce": "GTC",      "type": "STOP_LOSS_LIMIT",      "side": "SELL",      "stopPrice": "1.00000000"    },    {      "symbol": "LTCBTC",      "origClientOrderId": "TXOvglzXuaubXAaENpaRCB",      "orderId": 3,      "orderListId": 0,      "clientOrderId": "unfWT8ig8i0uj6lPuYLez6",      "price": "3.00000000",      "origQty": "10.00000000",      "executedQty": "0.00000000",      "cummulativeQuoteQty": "0.00000000",      "status": "CANCELED",      "timeInForce": "GTC",      "type": "LIMIT_MAKER",      "side": "SELL"    }  ]}

DELETE /api/v3/orderList (HMAC SHA256) Cancel an entire Order List.

Weight(IP): 1

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderListIdLONGNOEither orderListId or listClientOrderId must be provided
listClientOrderIdSTRINGNOEither orderListId or listClientOrderId must be provided
newClientOrderIdSTRINGNOUsed to uniquely identify this cancel. Automatically generated by default
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Additional notes:

  • Canceling an individual leg will cancel the entire OCO

Data Source: Matching Engine

Query OCO (USER_DATA)#

Response:

{  "orderListId": 27,  "contingencyType": "OCO",  "listStatusType": "EXEC_STARTED",  "listOrderStatus": "EXECUTING",  "listClientOrderId": "h2USkA5YQpaXHPIrkd96xE",  "transactionTime": 1565245656253,  "symbol": "LTCBTC",  "orders": [    {      "symbol": "LTCBTC",      "orderId": 4,      "clientOrderId": "qD1gy3kc3Gx0rihm9Y3xwS"    },    {      "symbol": "LTCBTC",      "orderId": 5,      "clientOrderId": "ARzZ9I00CPM8i3NhmU9Ega"    }  ]}

GET /api/v3/orderList (HMAC SHA256)

Retrieves a specific OCO based on provided optional parameters

Weight(IP): 2

Parameters:

NameTypeMandatoryDescription
orderListIdLONGNOEither orderListId or origClientOrderId must be provided
origClientOrderIdSTRINGNOEither orderListId or origClientOrderId must be provided
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Data Source: Database

Query all OCO (USER_DATA)#

Response:

[  {    "orderListId": 29,    "contingencyType": "OCO",    "listStatusType": "EXEC_STARTED",    "listOrderStatus": "EXECUTING",    "listClientOrderId": "amEEAXryFzFwYF1FeRpUoZ",    "transactionTime": 1565245913483,    "symbol": "LTCBTC",    "orders": [      {        "symbol": "LTCBTC",        "orderId": 4,        "clientOrderId": "oD7aesZqjEGlZrbtRpy5zB"      },      {        "symbol": "LTCBTC",        "orderId": 5,        "clientOrderId": "Jr1h6xirOxgeJOUuYQS7V3"      }    ]  },  {    "orderListId": 28,    "contingencyType": "OCO",    "listStatusType": "EXEC_STARTED",    "listOrderStatus": "EXECUTING",    "listClientOrderId": "hG7hFNxJV6cZy3Ze4AUT4d",    "transactionTime": 1565245913407,    "symbol": "LTCBTC",    "orders": [      {        "symbol": "LTCBTC",        "orderId": 2,        "clientOrderId": "j6lFOfbmFMRjTYA7rRJ0LP"      },      {        "symbol": "LTCBTC",        "orderId": 3,        "clientOrderId": "z0KCjOdditiLS5ekAFtK81"      }    ]  }]

GET /api/v3/allOrderList (HMAC SHA256)

Retrieves all OCO based on provided optional parameters

Weight(IP): 10

Parameters

NameTypeMandatoryDescription
fromIdLONGNOIf supplied, neither startTime or endTime can be provided
startTimeLONGNO
endTimeLONGNO
limitINTNODefault Value: 500; Max Value: 1000
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Data Source: Database

Query Open OCO (USER_DATA)#

Response:

[  {    "orderListId": 31,    "contingencyType": "OCO",    "listStatusType": "EXEC_STARTED",    "listOrderStatus": "EXECUTING",    "listClientOrderId": "wuB13fmulKj3YjdqWEcsnp",    "transactionTime": 1565246080644,    "symbol": "LTCBTC",    "orders": [      {        "symbol": "LTCBTC",        "orderId": 4,        "clientOrderId": "r3EH2N76dHfLoSZWIUw1bT"      },      {        "symbol": "LTCBTC",        "orderId": 5,        "clientOrderId": "Cv1SnyPD3qhqpbjpYEHbd2"      }    ]  }]

GET /api/v3/openOrderList (HMAC SHA256)

Weight(IP): 3

Parameters

NameTypeMandatoryDescription
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Data Source: Database

Account Information (USER_DATA)#

Response:

{  "makerCommission": 15,  "takerCommission": 15,  "buyerCommission": 0,  "sellerCommission": 0,  "canTrade": true,  "canWithdraw": true,  "canDeposit": true,  "updateTime": 123456789,  "accountType": "SPOT",  "balances": [    {      "asset": "BTC",      "free": "4723846.89208129",      "locked": "0.00000000"    },    {      "asset": "LTC",      "free": "4763368.68006011",      "locked": "0.00000000"    }  ],  "permissions": [    "SPOT"  ]}

GET /api/v3/account (HMAC SHA256)

Get current account information.

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Data Source: Memory => Database

Account Trade List (USER_DATA)#

Response:

[  {    "symbol": "BNBBTC",    "id": 28457,    "orderId": 100234,    "orderListId": -1, //Unless OCO, the value will always be -1    "price": "4.00000100",    "qty": "12.00000000",    "quoteQty": "48.000012",    "commission": "10.10000000",    "commissionAsset": "BNB",    "time": 1499865549590,    "isBuyer": true,    "isMaker": false,    "isBestMatch": true  }]

GET /api/v3/myTrades (HMAC SHA256)

Get trades for a specific account and symbol.

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES
orderIdLONGNOThis can only be used in combination with symbol.
startTimeLONGNO
endTimeLONGNO
fromIdLONGNOTradeId to fetch from. Default gets most recent trades.
limitINTNODefault 500; max 1000.
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Notes:

  • If fromId is set, it will get id >= that fromId. Otherwise most recent trades are returned.

Data Source: Database

Margin Account/Trade

Cross Margin Account Transfer (MARGIN)#

Response:

{    //transaction id    "tranId": 100000001}

POST /sapi/v1/margin/transfer (HMAC SHA256)

Execute transfer between spot account and cross margin account.

Weight(IP): 600

Parameters:

NameTypeMandatoryDescription
assetSTRINGYESThe asset being transferred, e.g., BTC
amountDECIMALYESThe amount to be transferred
typeINTYES1: transfer from main account to cross margin account 2: transfer from cross margin account to main account
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES

Margin Account Borrow (MARGIN)#

Response:

{    //transaction id    "tranId": 100000001}

POST /sapi/v1/margin/loan (HMAC SHA256)

Apply for a loan.

Weight(UID): 3000

Parameters:

NameTypeMandatoryDescription
assetSTRINGYES
isIsolatedSTRINGNOfor isolated margin or not, "TRUE", "FALSE",default "FALSE"
symbolSTRINGNOisolated symbol
amountDECIMALYES
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES
  • If "isIsolated" = "TRUE", "symbol" must be sent
  • "isIsolated" = "FALSE" for crossed margin loan

Margin Account Repay (MARGIN)#

Response:

{    //transaction id    "tranId": 100000001}

POST /sapi/v1/margin/repay (HMAC SHA256)

Repay loan for margin account.

Weight(IP): 3000

Parameters:

NameTypeMandatoryDescription
assetSTRINGYES
isIsolatedSTRINGNOfor isolated margin or not, "TRUE", "FALSE",default "FALSE"
symbolSTRINGNOisolated symbol
amountDECIMALYES
recvWindowLONGNOThe value cannot be greater than 60000
timestampLONGYES
  • If "isIsolated" = "TRUE", "symbol" must be sent
  • "isIsolated" = "FALSE" for crossed margin repay

Query Margin Asset (MARKET_DATA)#

Response:

{    "assetFullName": "Binance Coin",    "assetName": "BNB",    "isBorrowable": false,    "isMortgageable": true,    "userMinBorrow": "0.00000000",    "userMinRepay": "0.00000000"}

GET /sapi/v1/margin/asset

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
assetSTRINGYES

Query Cross Margin Pair (MARKET_DATA)#

Response:

{   "id":323355778339572400,   "symbol":"BTCUSDT",   "base":"BTC",   "quote":"USDT",   "isMarginTrade":true,   "isBuyAllowed":true,   "isSellAllowed":true}

GET /sapi/v1/margin/pair

Weight(IP): 10

Parameters:

NameTypeMandatoryDescription
symbolSTRINGYES

Get All Margin Assets (MARKET_DATA)#

Response: