An open API service indexing awesome lists of open source software.

https://github.com/ccxt/binance-api-node

:chart: A complete and heavily tested wrapper with typings for the Binance API.
https://github.com/ccxt/binance-api-node

binance binance-api cryptocurrency cryptocurrency-exchanges

Last synced: about 1 month ago
JSON representation

:chart: A complete and heavily tested wrapper with typings for the Binance API.

Awesome Lists containing this project

README

          

# binance-api-node [![telegram](https://patrolavia.github.io/telegram-badge/chat.png)](https://t.me/binance_api_node)[![build](https://img.shields.io/github/actions/workflow/status/viewblock/binance-api-node/ci.yml?style=flat-square)](https://github.com/ViewBlock/binance-api-node/actions) [![bnb](https://img.shields.io/badge/binance-winner-yellow.svg?style=flat-square)](https://github.com/binance-exchange/binance-api-node)

> A complete API wrapper for the [Binance](https://binance.com) API.

Note: This wrapper uses Promises, if they are not supported in your environment, you might
want to add [a polyfill](https://github.com/stefanpenner/es6-promise) for them.

For PRs or issues, head over to the [source repository](https://github.com/Ashlar/binance-api-node).

For contribution guidelines and development instructions, see [CONTRIBUTING.md](CONTRIBUTING.md).

#### Community Telegram Chat
https://t.me/binance_api_node

### Installation

```
npm install binance-api-node
```
[![NPM](https://nodei.co/npm/binance-api-node.png?compact=false)](https://npmjs.org/package/binance-api-node)

**This project is powered by**

### Getting started

Import the module and create a new client. Passing api keys is optional only if
you don't plan on doing authenticated calls. You can create an api key
[here](https://www.binance.com/userCenter/createApi.html). If you want to create demo/testnet keys click [here](https://demo.binance.com/)

```js
import Binance from 'binance-api-node'

const client = Binance()

// Authenticated client, can make signed calls
const client2 = Binance({
apiKey: 'xxx',
apiSecret: 'xxx',
getTime: xxx,
})

client.time().then(time => console.log(time))
```

To use testnet, initialize it with the testnet boolean set to true.

```js
const client = Binance({
apiKey: 'xxx',
apiSecret: 'xxx',
getTime: xxx,
testnet: true,
})
```

### Browser vs Node.js

This library works in both browsers and Node.js environments:

### RSA/ECDSA support

This library supports RSA and ED25519 keys out of the box. The usage is straightforward, just provide `privateKey` instead of `apiSecret`.

```js

const apiKey = "ZymCbCxu1LiYIW8IcYSbXQOaAtHaeW3ioCU5qFf5QvUyTfP1runCaY8AwzCaoOaq"
const privateKey = "-----BEGIN PRIVATE KEY-----\ndMC4CAfAwafYDK2cwaCIEIa+Ax8dMK50wcIcD0Zdf2jaCDoRdaoc7KaadRUh+aLdt\n-----END PRIVATE KEY-----"
const client = Binance({
privateKey,
apiKey,
})

```

### Proxy Support (Node.js only)

Proxy support for HTTP and WebSocket connections is available in Node.js:

```js
const client = Binance({
apiKey: 'xxx',
apiSecret: 'xxx',
proxy: 'http://proxy-host:port',
})

// All HTTP requests and WebSocket connections will use the proxy
await client.time()
client.ws.ticker('BTCUSDT', ticker => console.log(ticker))
```

**Notes:**
- `binance-api-node` fully supports the new algo service introduced on the Decemeber 9th of 2025
- Proxy support is only available in Node.js environment
- Browsers use system/OS proxy settings automatically
- Supports HTTP and HTTPS proxies (use `http://` or `https://` protocol)
- Supports authenticated proxies: `http://username:password@proxy-host:port`

If you do not have an appropriate babel config, you will need to use the basic commonjs requires.

```js
const Binance = require('binance-api-node').default
```

Every REST method returns a Promise, making this library [async await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) ready.
Following examples will use the `await` form, which requires some configuration you will have to lookup.

### Table of Contents
- [binance-api-node ](#binance-api-node--)
- [Community Telegram Chat](#community-telegram-chat)
- [Installation](#installation)
- [Getting started](#getting-started)
- [Browser vs Node.js](#browser-vs-nodejs)
- [Proxy Support (Node.js only)](#proxy-support-nodejs-only)
- [Table of Contents](#table-of-contents)
- [Init](#init)
- [Public REST Endpoints](#public-rest-endpoints)
- [ping](#ping)
- [time](#time)
- [exchangeInfo](#exchangeinfo)
- [book](#book)
- [candles](#candles)
- [aggTrades](#aggtrades)
- [trades](#trades)
- [dailyStats](#dailystats)
- [avgPrice](#avgprice)
- [prices](#prices)
- [allBookTickers](#allbooktickers)
- [Futures Public REST Endpoints](#futures-public-rest-endpoints)
- [futures ping](#futures-ping)
- [futures time](#futures-time)
- [futures exchangeInfo](#futures-exchangeinfo)
- [futures book](#futures-book)
- [futures candles](#futures-candles)
- [futures aggTrades](#futures-aggtrades)
- [futures trades](#futures-trades)
- [futures dailyStats](#futures-dailystats)
- [futures prices](#futures-prices)
- [futures allBookTickers](#futures-allbooktickers)
- [futures markPrice](#futures-markprice)
- [futures AllForceOrders](#futures-allforceorders)
- [Delivery Public REST Endpoints](#delivery-public-rest-endpoints)
- [delivery ping](#delivery-ping)
- [delivery time](#delivery-time)
- [delivery exchangeInfo](#delivery-exchangeinfo)
- [delivery book](#delivery-book)
- [delivery candles](#delivery-candles)
- [delivery aggTrades](#delivery-aggtrades)
- [delivery trades](#delivery-trades)
- [delivery dailyStats](#delivery-dailystats)
- [delivery prices](#delivery-prices)
- [delivery allBookTickers](#delivery-allbooktickers)
- [delivery markPrice](#delivery-markprice)
- [Authenticated REST Endpoints](#authenticated-rest-endpoints)
- [order](#order)
- [updateOrder](#updateorder)
- [orderTest](#ordertest)
- [orderOco](#orderoco)
- [getOrder](#getorder)
- [getOrderOco](#getorderoco)
- [cancelOrder](#cancelorder)
- [cancelOrderOco](#cancelorderoco)
- [cancelOpenOrders](#cancelopenorders)
- [openOrders](#openorders)
- [allOrders](#allorders)
- [allOrdersOCO](#allordersoco)
- [accountInfo](#accountinfo)
- [myTrades](#mytrades)
- [dailyAccountSnapshot](#dailyaccountsnapshot)
- [tradesHistory](#tradeshistory)
- [withdrawHistory](#withdrawhistory)
- [withdraw](#withdraw)
- [depositAddress](#depositaddress)
- [depositHistory](#deposithistory)
- [tradeFee](#tradefee)
- [capitalConfigs](#capitalconfigs)
- [universalTransfer](#universaltransfer)
- [universalTransferHistory](#universaltransferhistory)
- [assetDetail](#assetdetail)
- [getBnbBurn](#getbnbburn)
- [setBnbBurn](#setbnbburn)
- [dustLog](#dustlog)
- [dustTransfer](#dusttransfer)
- [accountCoins](#accountcoins)
- [lendingAccount](#lendingaccount)
- [fundingWallet](#fundingwallet)
- [apiPermission](#apipermission)
- [Margin](#margin)
- [marginAccountInfo](#marginaccountinfo)
- [marginLoan](#marginloan)
- [marginRepay](#marginrepay)
- [marginIsolatedAccount](#marginisolatedaccount)
- [disableMarginAccount](#disablemarginaccount)
- [enableMarginAccount](#enablemarginaccount)
- [marginMaxBorrow](#marginmaxborrow)
- [marginCreateIsolated](#margincreateisolated)
- [marginIsolatedTransfer](#marginisolatedtransfer)
- [marginIsolatedTransferHistory](#marginisolatedtransferhistory)
- [marginOrder](#marginorder)
- [marginCancelOrder](#margincancelorder)
- [marginOrderOco](#marginorderoco)
- [marginOpenOrders](#marginopenorders)
- [marginCancelOpenOrders](#margincancelopenorders)
- [marginGetOrder](#margingetorder)
- [marginGetOrderOco](#margingetorderoco)
- [Portfolio Margin Endpoints](#portfolio-margin-endpoints)
- [getPortfolioMarginAccountInfo](#getportfoliomarginaccountinfo)
- [Futures Authenticated REST endpoints](#futures-authenticated-rest-endpoints)
- [futuresOrder](#futuresorder)
- [futuresUpdateOrder](#futuresupdateorder)
- [futuresGetOrder](#futuresgetorder)
- [futuresAllOrders](#futuresallorders)
- [futuresBatchOrders](#futuresbatchorders)
- [futuresCancelBatchOrders](#futurescancelbatchorders)
- [futuresLeverage](#futuresleverage)
- [futuresMarginType](#futuresmargintype)
- [futuresPositionMargin](#futurespositionmargin)
- [futuresMarginHistory](#futuresmarginhistory)
- [futuresIncome](#futuresincome)
- [futuresAccountBalance](#futuresaccountbalance)
- [futuresUserTrades](#futuresusertrades)
- [futuresLeverageBracket](#futuresleveragebracket)
- [Delivery Authenticated REST endpoints](#delivery-authenticated-rest-endpoints)
- [deliveryGetOrder](#deliverygetorder)
- [deliveryAllOrders](#deliveryallorders)
- [deliveryBatchOrders](#deliverybatchorders)
- [deliveryCancelBatchOrders](#deliverycancelbatchorders)
- [deliveryLeverage](#deliveryleverage)
- [deliveryMarginType](#deliverymargintype)
- [deliveryPositionMargin](#deliverypositionmargin)
- [deliveryMarginHistory](#deliverymarginhistory)
- [deliveryIncome](#deliveryincome)
- [deliveryAccountBalance](#deliveryaccountbalance)
- [deliveryUserTrades](#deliveryusertrades)
- [deliveryLeverageBracket](#deliveryleveragebracket)
- [WebSockets](#websockets)
- [depth](#depth)
- [customSubStream](#customsubstream)
- [partialDepth](#partialdepth)
- [ticker](#ticker)
- [allTickers](#alltickers)
- [miniTicker](#miniticker)
- [allMiniTickers](#allminitickers)
- [bookTicker](#bookticker)
- [candles](#candles-1)
- [trades](#trades-1)
- [aggTrades](#aggtrades-1)
- [user](#user)
- [Futures WebSockets](#futures-websockets)
- [futuresDepth](#futuresdepth)
- [futuresPartialDepth](#futurespartialdepth)
- [futuresTicker](#futuresticker)
- [futuresAllTickers](#futuresalltickers)
- [futuresCandles](#futurescandles)
- [futuresAggTrades](#futuresaggtrades)
- [futuresLiquidations](#futuresliquidations)
- [futuresAllLiquidations](#futuresallliquidations)
- [futuresCustomSubStream](#futurescustomsubstream)
- [futuresUser](#futuresuser)
- [Delivery WebSockets](#delivery-websockets)
- [deliveryDepth](#deliverydepth)
- [deliveryPartialDepth](#deliverypartialdepth)
- [deliveryTicker](#deliveryticker)
- [deliveryAllTickers](#deliveryalltickers)
- [deliveryCandles](#deliverycandles)
- [deliveryAggTrades](#deliveryaggtrades)
- [deliveryCustomSubStream](#deliverycustomsubstream)
- [deliveryUser](#deliveryuser)
- [Common](#common)
- [getInfo](#getinfo)
- [ErrorCodes](#errorcodes)

### Init

| Param | Type | Required | Info |
| ----------- | -------- | -------- | -------------------------------------------- |
| apiKey | String | false | Required when making private calls |
| apiSecret | String | false | Required when making private calls |
| privateKey | String | false | Required when using RSA/Ed25519 calls |
| getTime | Function | false | Time generator, defaults to () => Date.now() |
| httpBase | String | false | Changes the default endpoint |
| httpFutures | String | false | Changes the default endpoint |
| wsBase | String | false | Changes the default endpoint |
| wsFutures | String | false | Changes the default endpoint |

### Public REST Endpoints

#### ping

Test connectivity to the API.

```js
console.log(await client.ping())
```

#### time

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

```js
console.log(await client.time())
```

Output

```js
1508478457643
```

#### exchangeInfo

Get the current exchange trading rules and symbol information. You can optionally
pass a symbol to only retrieve info of this specific one.

```js
console.log(await client.exchangeInfo())
```

| Param | Type | Required | Default |
| ------ | ------ | -------- | ------- |
| symbol | String | false | |

Output

```js
{
"timezone": "UTC",
"serverTime": 1508631584636,
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 1200
},
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 1,
"limit": 10
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 100000
}
],
"exchangeFilters": [],
"symbols": [{
"symbol": "ETHBTC",
"status": "TRADING",
"baseAsset": "ETH",
"baseAssetPrecision": 8,
"quoteAsset": "BTC",
"quotePrecision": 8,
"orderTypes": ["LIMIT", "MARKET"],
"icebergAllowed": false,
"filters": [{
"filterType": "PRICE_FILTER",
"minPrice": "0.00000100",
"maxPrice": "100000.00000000",
"tickSize": "0.00000100"
}, {
"filterType": "LOT_SIZE",
"minQty": "0.00100000",
"maxQty": "100000.00000000",
"stepSize": "0.00100000"
}, {
"filterType": "MIN_NOTIONAL",
"minNotional": "0.00100000"
}]
}]
}
```

#### book

Get the order book for a symbol.

```js
console.log(await client.book({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default |
| ------ | ------ | -------- | ------- |
| symbol | String | true |
| limit | Number | false | `100` |

Output

```js
{
lastUpdateId: 17647759,
asks:
[
{ price: '0.05411500', quantity: '5.55000000' },
{ price: '0.05416700', quantity: '11.80100000' }
],
bids:
[
{ price: '0.05395500', quantity: '2.70000000' },
{ price: '0.05395100', quantity: '11.84100000' }
]
}
```

#### candles

Retrieves Candlestick for a symbol. Candlesticks are uniquely identified by their open time.

```js
console.log(await client.candles({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default | Description |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------- |
| symbol | String | true |
| interval | String | false | `5m` | `1m`, `3m`, `5m`, `15m`, `30m`, `1h`, `2h`,
`4h`, `6h`, `8h`, `12h`, `1d`, `3d`, `1w`, `1M` |
| limit | Number | false | `500` | Max `1000` |
| startTime | Number | false |
| endTime | Number | false |

Output

```js
;[
{
openTime: 1508328900000,
open: '0.05655000',
high: '0.05656500',
low: '0.05613200',
close: '0.05632400',
volume: '68.88800000',
closeTime: 1508329199999,
quoteAssetVolume: '2.29500857',
trades: 85,
baseAssetVolume: '40.61900000',
},
]
```

#### aggTrades

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

```js
console.log(await client.aggTrades({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default | Description |
| --------- | ------ | -------- | ------- | -------------------------------------------------------- |
| symbol | String | true |
| fromId | String | false | | ID to get aggregate trades from INCLUSIVE. |
| startTime | Number | false | | Timestamp in ms to get aggregate trades from INCLUSIVE. |
| endTime | Number | false | | Timestamp in ms to get aggregate trades until INCLUSIVE. |
| limit | Number | false | `500` | Max `500` |

Note: If both `startTime` and `endTime` are sent, `limit` should not be sent AND the distance between `startTime` and `endTime` must be less than 1 hour.

Note: If `frondId`, `startTime`, and `endTime` are not sent, the most recent aggregate trades will be returned.

Output

```js
;[
{
aggId: 2107132,
symbol: 'ETHBTC',
price: '0.05390400',
quantity: '1.31000000',
firstId: 2215345,
lastId: 2215345,
timestamp: 1508478599481,
isBuyerMaker: true,
wasBestPrice: true,
},
]
```

#### trades

Get recent trades of a symbol.

```js
console.log(await client.trades({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default | Description |
| ------ | ------ | -------- | ------- | ----------- |
| symbol | String | true |
| limit | Number | false | `500` | Max `500` |

Output

```js
;[
{
id: 28457,
price: '4.00000100',
qty: '12.00000000',
time: 1499865549590,
isBuyerMaker: true,
isBestMatch: true,
},
]
```

#### dailyStats

24 hour price change statistics, not providing a symbol will return all tickers and is resource-expensive.

```js
console.log(await client.dailyStats({ symbol: 'ETHBTC' }))
```

| Param | Type | Required |
| ------ | ------ | -------- |
| symbol | String | false |

Output

```js
{
symbol: 'ETHBTC',
priceChange: '-0.00112000',
priceChangePercent: '-1.751',
weightedAvgPrice: '0.06324784',
prevClosePrice: '0.06397400',
lastPrice: '0.06285500',
lastQty: '0.63500000',
bidPrice: '0.06285500',
bidQty: '0.81900000',
askPrice: '0.06291900',
askQty: '2.93800000',
openPrice: '0.06397500',
highPrice: '0.06419100',
lowPrice: '0.06205300',
volume: '126240.37200000',
quoteVolume: '7984.43091340',
openTime: 1521622289427,
closeTime: 1521708689427,
firstId: 45409308, // First tradeId
lastId: 45724293, // Last tradeId
count: 314986 // Trade count
}
```

#### avgPrice

Current average price for a symbol.

```js
console.log(await client.avgPrice({ symbol: 'ETHBTC' }))
```

| Param | Type | Required |
| ------ | ------ | -------- |
| symbol | String | true |

Output

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

#### prices

Latest price for a symbol, not providing the symbol will return prices for all symbols.

```js
console.log(await client.prices())
```

| Param | Type | Required |
| ------ | ------ | -------- |
| symbol | String | false |

Output

```js
{
ETHBTC: '0.05392500',
LTCBTC: '0.01041100',
...
}
```

#### allBookTickers

Best price/qty on the order book for all symbols.

```js
console.log(await client.allBookTickers())
```

Output

```js
{
DASHBTC: {
symbol: 'DASHBTC',
bidPrice: '0.04890400',
bidQty: '0.74100000',
askPrice: '0.05230000',
askQty: '0.79900000'
},
DASHETH: {
symbol: 'DASHETH',
bidPrice: '0.89582000',
bidQty: '0.63300000',
askPrice: '1.02328000',
askQty: '0.99900000'
}
...
}
```

### Futures Public REST Endpoints

#### futures ping

Test connectivity to the API.

```js
console.log(await client.futuresPing())
```

#### futures time

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

```js
console.log(await client.futuresTime())
```

Output

```js
1508478457643
```

#### futures exchangeInfo

Get the current exchange trading rules and symbol information.

```js
console.log(await client.futuresExchangeInfo())
```

Output

```js
{
"timezone": "UTC",
"serverTime": 1508631584636,
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 1200
},
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 1,
"limit": 10
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 100000
}
],
"exchangeFilters": [],
"symbols": [...]
}
```

#### futures book

Get the order book for a symbol.

```js
console.log(await client.futuresBook({ symbol: 'BTCUSDT' }))
```

| Param | Type | Required | Default |
| ------ | ------ | -------- | ------- |
| symbol | String | true |
| limit | Number | false | `100` |

Output

```js
{
lastUpdateId: 17647759,
asks:
[
{ price: '8000.05411500', quantity: '54.55000000' },
{ price: '8000.05416700', quantity: '1111.80100000' }
],
bids:
[
{ price: '8000.05395500', quantity: '223.70000000' },
{ price: '8000.05395100', quantity: '1134.84100000' }
]
}
```

#### futures candles

Retrieves Candlestick for a symbol. Candlesticks are uniquely identified by their open time.

```js
console.log(await client.futuresCandles({ symbol: 'BTCUSDT' }))
```

| Param | Type | Required | Default | Description |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------- |
| symbol | String | true |
| interval | String | false | `5m` | `1m`, `3m`, `5m`, `15m`, `30m`, `1h`, `2h`,
`4h`, `6h`, `8h`, `12h`, `1d`, `3d`, `1w`, `1M` |
| limit | Number | false | `500` | Max `1000` |
| startTime | Number | false |
| endTime | Number | false |

Output

```js
;[
{
openTime: 1508328900000,
open: '0.05655000',
high: '0.05656500',
low: '0.05613200',
close: '0.05632400',
volume: '68.88800000',
closeTime: 1508329199999,
quoteAssetVolume: '2.29500857',
trades: 85,
baseAssetVolume: '40.61900000',
},
]
```

#### futures aggTrades

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

```js
console.log(await client.futuresAggTrades({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default | Description |
| --------- | ------ | -------- | ------- | -------------------------------------------------------- |
| symbol | String | true | | |
| fromId | String | false | | ID to get aggregate trades from INCLUSIVE. |
| startTime | Number | false | | Timestamp in ms to get aggregate trades from INCLUSIVE. |
| endTime | Number | false | | Timestamp in ms to get aggregate trades until INCLUSIVE. |
| limit | Number | false | `500` | Max `500` |

Note: If both `startTime` and `endTime` are sent, `limit` should not be sent AND the distance between `startTime` and `endTime` must be less than 24 hours.

Note: If `frondId`, `startTime`, and `endTime` are not sent, the most recent aggregate trades will be returned.

Output

```js
;[
{
aggId: 2107132,
price: '0.05390400',
quantity: '1.31000000',
firstId: 2215345,
lastId: 2215345,
timestamp: 1508478599481,
isBuyerMaker: true,
wasBestPrice: true,
},
]
```

#### futures trades

Get recent trades of a symbol.

```js
console.log(await client.futuresTrades({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default | Description |
| ------ | ------ | -------- | ------- | ----------- |
| symbol | String | true |
| limit | Number | false | `500` | Max `500` |

Output

```js
;[
{
id: 28457,
price: '4.00000100',
qty: '12.00000000',
time: 1499865549590,
isBuyerMaker: true,
isBestMatch: true,
},
]
```

#### futures dailyStats

24 hour price change statistics, not providing a symbol will return all tickers and is resource-expensive.

```js
console.log(await client.futuresDailyStats({ symbol: 'ETHBTC' }))
```

| Param | Type | Required |
| ------ | ------ | -------- |
| symbol | String | false |

Output

```js
{
symbol: 'BTCUSDT',
priceChange: '-0.00112000',
priceChangePercent: '-1.751',
weightedAvgPrice: '0.06324784',
prevClosePrice: '0.06397400',
lastPrice: '0.06285500',
lastQty: '0.63500000',
bidPrice: '0.06285500',
bidQty: '0.81900000',
askPrice: '0.06291900',
askQty: '2.93800000',
openPrice: '0.06397500',
highPrice: '0.06419100',
lowPrice: '0.06205300',
volume: '126240.37200000',
quoteVolume: '7984.43091340',
openTime: 1521622289427,
closeTime: 1521708689427,
firstId: 45409308, // First tradeId
lastId: 45724293, // Last tradeId
count: 314986 // Trade count
}
```

#### futures prices

Latest price for symbol, not providing a symbol will return latest price for all symbols and is resource-expensive.

```js
console.log(await client.futuresPrices())
```

| Param | Type | Required |
| ------ | ------ | -------- |
| symbol | String | false |

Output

```js
{
BTCUSDT: '8590.05392500',
ETHUSDT: '154.1100',
...
}
```

#### futures allBookTickers

Best price/qty on the order book for all symbols.

```js
console.log(await client.futuresAllBookTickers())
```

Output

```js
{
BTCUSDT: {
symbol: 'BTCUSDT',
bidPrice: '0.04890400',
bidQty: '0.74100000',
askPrice: '0.05230000',
askQty: '0.79900000'
},
ETHUSDT: {
symbol: 'ETHUSDT',
bidPrice: '0.89582000',
bidQty: '0.63300000',
askPrice: '1.02328000',
askQty: '0.99900000'
}
...
}
```

#### futures markPrice

Mark Price and Funding Rate.

```js
console.log(await client.futuresMarkPrice())
```

Output

```js
{
"symbol": "BTCUSDT",
"markPrice": "11012.80409769",
"lastFundingRate": "-0.03750000",
"nextFundingTime": 1562569200000,
"time": 1562566020000
}
```

#### futures AllForceOrders

Get all Liquidation Orders.

```js
console.log(await client.futuresAllForceOrders())
```

| Param | Type | Required |
| --------- | ------ | -------- |
| symbol | String | false |
| startTime | Long | false |
| endTime | Long | false |
| limit | Long | false |

Output

```js
;[
{
symbol: 'BTCUSDT', // SYMBOL
price: '7918.33', // ORDER_PRICE
origQty: '0.014', // ORDER_AMOUNT
executedQty: '0.014', // FILLED_AMOUNT
avragePrice: '7918.33', // AVG_PRICE
status: 'FILLED', // STATUS
timeInForce: 'IOC', // TIME_IN_FORCE
type: 'LIMIT',
side: 'SELL', // DIRECTION
time: 1568014460893,
},
]
```

### Delivery Public REST Endpoints

#### delivery ping

Test connectivity to the API.

```js
console.log(await client.deliveryPing())
```

#### delivery time

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

```js
console.log(await client.deliveryTime())
```

Output

```js
1508478457643
```

#### delivery exchangeInfo

Get the current exchange trading rules and symbol information.

```js
console.log(await client.deliveryExchangeInfo())
```

Output

```js
{
timezone: 'UTC',
serverTime: 1663099219744,
rateLimits: [
{
rateLimitType: 'REQUEST_WEIGHT',
interval: 'MINUTE',
intervalNum: 1,
limit: 2400
},
{
rateLimitType: 'ORDERS',
interval: 'MINUTE',
intervalNum: 1,
limit: 1200
}
],
exchangeFilters: [],
symbols: [...]
}
```

#### delivery book

Get the order book for a symbol.

```js
console.log(await client.deliveryBook({ symbol: 'TRXUSD_PERP' }))
```

| Param | Type | Required | Default |
| ------ | ------ | -------- | ------- |
| symbol | String | true |
| limit | Number | false | `500` |

Output

```js
{
lastUpdateId: 17647759,
asks:
[
{ price: '8000.05411500', quantity: '54.55000000' },
{ price: '8000.05416700', quantity: '1111.80100000' }
],
bids:
[
{ price: '8000.05395500', quantity: '223.70000000' },
{ price: '8000.05395100', quantity: '1134.84100000' }
]
}
```

#### delivery candles

Retrieves Candlestick for a symbol. Candlesticks are uniquely identified by their open time.

```js
console.log(await client.deliveryCandles({ symbol: 'TRXUSD_PERP' }))
```

| Param | Type | Required | Default | Description |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------- |
| symbol | String | true |
| interval | String | false | `5m` | `1m`, `3m`, `5m`, `15m`, `30m`, `1h`, `2h`,
`4h`, `6h`, `8h`, `12h`, `1d`, `3d`, `1w`, `1M` |
| limit | Number | false | `500` | Max `1000` |
| startTime | Number | false |
| endTime | Number | false |

Output

```js
[
{
openTime: 1663104600000,
open: '0.06091',
high: '0.06091',
low: '0.06086',
close: '0.06090',
volume: '7927',
closeTime: 1663104899999,
baseVolume: '1302212.12820796',
trades: 75,
quoteAssetVolume: '386',
baseAssetVolume: '63382.78318786'
}
]
```

#### delivery aggTrades

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

```js
console.log(await client.deliveryAggTrades({ symbol: 'TRXUSD_PERP' }))
```

| Param | Type | Required | Default | Description |
| --------- | ------ | -------- | ------- | -------------------------------------------------------- |
| symbol | String | true | | |
| fromId | String | false | | ID to get aggregate trades from INCLUSIVE. |
| startTime | Number | false | | Timestamp in ms to get aggregate trades from INCLUSIVE. |
| endTime | Number | false | | Timestamp in ms to get aggregate trades until INCLUSIVE. |
| limit | Number | false | `500` | Max `1000` |

Note: If both `startTime` and `endTime` are sent, `limit` should not be sent AND the distance between `startTime` and `endTime` must be less than 24 hours.

Note: If `fromId`, `startTime`, and `endTime` are not sent, the most recent aggregate trades will be returned.

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

Output

```js
[
{
aggId: 14642023,
symbol: 'TRXUSD_PERP',
price: '0.06087',
quantity: '50',
firstId: 26319898,
lastId: 26319898,
timestamp: 1663105187120,
isBuyerMaker: false,
}
]
```

#### delivery trades

Get recent trades of a symbol.

```js
console.log(await client.deliveryTrades({ symbol: 'TRXUSD_PERP' }))
```

| Param | Type | Required | Default | Description |
| ------ | ------ | -------- | ------- | ----------- |
| symbol | String | true |
| limit | Number | false | `500` | Max `1000` |

Output

```js
;[
{
id: 26319660,
price: '0.06097',
qty: '28',
baseQty: '4592.42250287',
time: 1663103746267,
isBuyerMaker: true
},
]
```

#### delivery dailyStats

24 hour price change statistics, not providing a symbol will return all tickers and is resource-expensive.

```js
console.log(await client.deliveryDailyStats({ symbol: 'TRXUSD_PERP' }))
```

| Param | Type | Required |
| ------ | ------ | -------- |
| symbol | String | false |
| pair | String | false |

Output

```js
{
symbol: 'TRXUSD_PERP',
pair: 'TRXUSD',
priceChange: '-0.00277',
priceChangePercent: '-4.353',
weightedAvgPrice: '0.06248010',
lastPrice: '0.06087',
lastQty: '4',
openPrice: '0.06364',
highPrice: '0.06395',
lowPrice: '0.06069',
volume: '545316',
baseVolume: '87278342.48218514',
openTime: 1663019640000,
closeTime: 1663106045576,
firstId: 26308774,
lastId: 26320065,
count: 11292
}
```

#### delivery prices

Latest price for all symbols.

```js
console.log(await client.futuresPrices())
```

Output

```js
{
BTCUSDT: '8590.05392500',
ETHUSDT: '154.1100',
...
}
```

#### delivery allBookTickers

Best price/qty on the order book for all symbols.

```js
console.log(await client.deliveryAllBookTickers())
```

Output

```js
{
BTCUSD_PERP: {
symbol: 'BTCUSD_PERP',
pair: 'BTCUSD',
bidPrice: '20120.9',
bidQty: '13673',
askPrice: '20121.0',
askQty: '2628',
time: 1663106372658
},
ETHUSD_PERP: {
symbol: 'ETHUSD_PERP',
pair: 'ETHUSD',
bidPrice: '1593.63',
bidQty: '7210',
askPrice: '1593.64',
askQty: '27547',
time: 1663106372667
}
...
}
```

#### delivery markPrice

Mark Price and Funding Rate.

```js
console.log(await client.deliveryMarkPrice())
```

Output

```js
[
{
symbol: 'BTCUSD_221230',
pair: 'BTCUSD',
markPrice: '20158.81560758',
indexPrice: '20152.05327273',
estimatedSettlePrice: '20147.96717735',
lastFundingRate: '',
interestRate: '',
nextFundingTime: 0,
time: 1663106459005
},
{
symbol: 'FILUSD_PERP',
pair: 'FILUSD',
markPrice: '5.88720470',
indexPrice: '5.89106242',
estimatedSettlePrice: '5.89377086',
lastFundingRate: '0.00010000',
interestRate: '0.00010000',
nextFundingTime: 1663113600000,
time: 1663106459005
}
...
]
```

### Authenticated REST Endpoints

Note that for all authenticated endpoints, you can pass an extra parameter
`useServerTime` set to `true` in order to fetch the server time before making
the request.

#### order

- Creates a new order.
- see https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-trade

```js
console.log(
await client.order({
symbol: 'XLMETH',
side: 'BUY',
quantity: '100',
price: '0.0002',
}),
)
```

| Param | Type | Required | Default | Description |
| ---------------- | ------ | -------- | -------- | ------------------------------------------------------------------- |
| symbol | String | true | | |
| side | String | true | | `BUY`,`SELL` |
| type | String | false | `LIMIT` | `LIMIT`, `MARKET` |
| quantity | String | true | | |
| price | String | true | | Optional for `MARKET` orders |
| timeInForce | String | false | `GTC` | `FOK`, `GTC`, `IOC` |
| newClientOrderId | String | false | | A unique id for the order. Automatically generated if not sent. |
| stopPrice | Number | false | | Used with stop orders |
| activationPrice | Number | false | | Used with `TRAILING_STOP_MARKET` |
| callbackRate | Number | false | | Used with `TRAILING_STOP_MARKET` |
| newOrderRespType | String | false | `RESULT` | Returns more complete info of the order. `ACK`, `RESULT`, or `FULL` |
| icebergQty | Number | false | | Used with iceberg orders |
| recvWindow | Number | false | | |

Additional mandatory parameters based on `type`:

| Type | Additional mandatory parameters |
| -----------------------| ----------------------------------------------- |
| `LIMIT` | `timeInForce`, `quantity`, `price` |
| `MARKET` | `quantity` |
| `STOP` | `quantity`, `price`, `stopPrice` |
| `STOP_LOSS_LIMIT` | `timeInForce`, `quantity`, `price`, `stopPrice` |
| `STOP_LOSS_MARKET` | `stopPrice` |
| `TAKE_PROFIT` | `quantity`, `price`, `stopPrice` |
| `TAKE_PROFIT_MARKET` | `stopPrice` |
| `STOP_PROFIT_LIMIT` | `timeInForce`, `quantity`, `price`, `stopPrice` |
| `LIMIT_MAKER` | `quantity`, `price` |
| `TRAILING_STOP_MARKET` | `callbackRate`, `activationPrice` |

- `LIMIT_MAKER` are `LIMIT` orders that will be rejected if they would immediately match and trade as a taker.
- `STOP` 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`.

Output

```js
{
symbol: 'XLMETH',
orderId: 1740797,
clientOrderId: '1XZTVBTGS4K1e',
transactTime: 1514418413947,
price: '0.00020000',
origQty: '100.00000000',
executedQty: '0.00000000',
status: 'NEW',
timeInForce: 'GTC',
type: 'LIMIT',
side: 'BUY'
}
```

#### orderTest

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

Same API as above, but does not return any output on success.

#### updateOrder

- updates an order
- see https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-an-existing-order-and-send-a-new-order-trade

```Js

const order = await client.updateOrder({
symbol: 'LTCUSDT',
cancelOrderId: 12345678,
side: 'BUY',
type: 'LIMIT',
quantity: 1,
price: 80,
timeInForce: 'GTC',
})

```

#### orderOco

Creates a new OCO order.

```js
console.log(
await client.orderOco({
symbol: 'XLMETH',
side: 'SELL',
quantity: 100,
price: 0.0002,
stopPrice: 0.0001,
stopLimitPrice: 0.0001,
}),
)
```

| Param | Type | Required | Description
|----------------------|--------|----------|------------
| symbol | String | true |
| listClientOrderId | String | false | A unique Id for the entire orderList
| side | String | true | `BUY`,`SELL`
| quantity | Number | true |
| limitClientOrderId | String | false | A unique Id for the limit order
| price | Number | true |
| limitIcebergQty | Number | false | Used to make the `LIMIT_MAKER` leg an iceberg order.
| stopClientOrderId | String | false | A unique Id for the stop loss/stop loss limit leg
| stopPrice | Number | true
| stopLimitPrice | Number | false | If provided, `stopLimitTimeInForce` is required.
| stopIcebergQty | Number | false | Used with `STOP_LOSS_LIMIT` leg to make an iceberg order.
| stopLimitTimeInForce | String | false | `FOK`, `GTC`, `IOC`
| newOrderRespType | String | false | Returns more complete info of the order. `ACK`, `RESULT`, or `FULL`
| recvWindow | Number | false | The value cannot be greater than `60000`

Additional 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

Output

```js
{
"orderListId": 0,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "JYVpp3F0f5CAG15DhtrqLp",
"transactionTime": 1514418413947,
"symbol": "XLMETH",
"orders": [
{
"symbol": "XLMETH",
"orderId": 1740797,
"clientOrderId": "1XZTVBTGS4K1e"
},
{
"symbol": "XLMETH",
"orderId": 1740798,
"clientOrderId": "1XZTVBTGS4K1f"
}
],
"orderReports": [
{
"symbol": "XLMETH",
"orderId": 1740797,
"orderListId": 0,
"clientOrderId": "1XZTVBTGS4K1e",
"transactTime": 1514418413947,
"price": "0.000000",
"origQty": "100",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS",
"side": "SELL",
"stopPrice": "0.0001"
},
{
"symbol": "XLMETH",
"orderId": 1740798,
"orderListId": 0,
"clientOrderId": "1XZTVBTGS4K1f",
"transactTime": 1514418413947,
"price": "0.0002",
"origQty": "100",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL"
}
]
}
```

#### getOrder

Check an order's status.

```js
console.log(
await client.getOrder({
symbol: 'BNBETH',
orderId: 50167927,
}),
)
```

| Param | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| symbol | String | true |
| orderId | Number | true | Not required if `origClientOrderId` is used |
| origClientOrderId | String | false |
| recvWindow | Number | false |

Output

```js
{
clientOrderId: 'NkQnNkdBV1RGjUALLhAzNy',
cummulativeQuoteQty: '0.16961580',
executedQty: '3.91000000',
icebergQty: '0.00000000',
isWorking: true,
orderId: 50167927,
origQty: '3.91000000',
price: '0.04338000',
side: 'SELL',
status: 'FILLED',
stopPrice: '0.00000000',
symbol: 'BNBETH',
time: 1547075007821,
timeInForce: 'GTC',
type: 'LIMIT',
updateTime: 1547075016737
}

```

#### getOrderOco

Retrieves a specific OCO based on provided optional parameters

```js
console.log(
await client.getOrderOco({
orderListId: 27,
}),
)
```

| Param | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| orderListId | Number | true | Not required if `listClientOrderId` is used |
| listClientOrderId | String | false |
| recvWindow | Number | false |

Output

```js
{
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'
}
]
}
```

#### cancelOrder

Cancels an active order.

```js
console.log(
await client.cancelOrder({
symbol: 'ETHBTC',
orderId: 1,
}),
)
```

| Param | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------- |
| symbol | String | true |
| orderId | Number | true | Not required if `origClientOrderId` is used |
| origClientOrderId | String | false |
| newClientOrderId | String | false | Used to uniquely identify this cancel. Automatically generated by default. |
| recvWindow | Number | false |

Output

```js
{
symbol: 'ETHBTC',
origClientOrderId: 'bnAoRHgI18gRD80FJmsfNP',
orderId: 1,
clientOrderId: 'RViSsQPTp1v3WmLYpeKT11'
}
```

#### cancelOrderOco

Cancel an entire Order List.

```js
console.log(
await client.cancelOrderOco({
symbol: 'ETHBTC',
orderListId: 0,
}),
)
```

| Param | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------- |
| symbol | String | true |
| orderListId | Number | true | Not required if `listClientOrderId` is used |
| listClientOrderId | String | false |
| newClientOrderId | String | false | Used to uniquely identify this cancel. Automatically generated by default. |
| recvWindow | Number | false |

Output

```js
{
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'
}
]
}
```

#### cancelOpenOrders

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

```js
console.log(
await client.cancelOpenOrders({
symbol: 'ETHBTC'
}),
)
```
| Param | Type | Required |
|------------|----------|-----------|
| symbol | String | true |

Output

```js
[
{
symbol: 'ETHBTC',
origClientOrderId: 'bnAoRHgI18gRD80FJmsfNP',
orderId: 1,
clientOrderId: 'RViSsQPTp1v3WmLYpeKT11'
},
{
symbol: 'ETHBTC',
origClientOrderId: 'IDbzcGmfwSCKihxILK1snu',
orderId: 2,
clientOrderId: 'HKFcuWAm9euMgRuwVGR8CL'
}
]
```

#### openOrders

Get all open orders on a symbol.

```js
console.log(
await client.openOrders({
symbol: 'XLMBTC',
}),
)
```

| Param | Type | Required |
| ---------- | ------ | -------- |
| symbol | String | true |
| recvWindow | Number | false |

Output

```js
;[
{
symbol: 'XLMBTC',
orderId: 11271740,
clientOrderId: 'ekHkROfW98gBN80LTfufQZ',
price: '0.00001081',
origQty: '1331.00000000',
executedQty: '0.00000000',
status: 'NEW',
timeInForce: 'GTC',
type: 'LIMIT',
side: 'BUY',
stopPrice: '0.00000000',
icebergQty: '0.00000000',
time: 1522682290485,
isWorking: true,
},
]
```

#### allOrders

Get all account orders on a symbol; active, canceled, or filled.

```js
console.log(
await client.allOrders({
symbol: 'ETHBTC',
}),
)
```

| Param | Type | Required | Default | Description |
| ---------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------- |
| symbol | String | true |
| orderId | Number | false | | If set, it will get orders >= that orderId. Otherwise most recent orders are returned. |
| limit | Number | false | `500` | Max `500` |
| recvWindow | Number | false |

Output

```js
;[
{
symbol: 'ENGETH',
orderId: 191938,
clientOrderId: '1XZTVBTGS4K1e',
price: '0.00138000',
origQty: '1.00000000',
executedQty: '1.00000000',
status: 'FILLED',
timeInForce: 'GTC',
type: 'LIMIT',
side: 'SELL',
stopPrice: '0.00000000',
icebergQty: '0.00000000',
time: 1508611114735,
isWorking: true,
},
]
```

#### allOrdersOCO

Retrieves all OCO based on provided optional parameters

```js
console.log(
await client.allOrdersOCO({
timestamp: 1565245913483,
}),
)
```

| Param | Type | Required | Default | Description |
|------------|---------|----------|---------|-----------------------------------------------------------|
| timestamp | Number | true | | |
| startTime | Number | false | | |
| endTime | Number | false | | |
| limit | Integer | false | `500` | Max `1000` |
| recvWindow | Number | false | | The value cannot be greater than 60000 |
| formId | Number | false | | If supplied, neither startTime or endTime can be provided |

Output

```js
;[
{
"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"
}
]
}
]
```

#### accountInfo

Get current account information.

```js
console.log(await client.accountInfo())
```

| Param | Type | Required |
| ---------- | ------ | -------- |
| recvWindow | Number | false |

Output

```js
{
makerCommission: 10,
takerCommission: 10,
buyerCommission: 0,
sellerCommission: 0,
canTrade: true,
canWithdraw: true,
canDeposit: true,
balances: [
{ asset: 'BTC', free: '0.00000000', locked: '0.00000000' },
{ asset: 'LTC', free: '0.00000000', locked: '0.00000000' },
]
}
```

#### myTrades

Get trades for the current authenticated account and symbol.

```js
console.log(
await client.myTrades({
symbol: 'ETHBTC',
}),
)
```

| Param | Type | Required | Default | Description |
| ---------- | ------ | -------- | ------- | ------------------------------------------------------- |
| symbol | String | true |
| limit | Number | false | `500` | Max `1000` |
| fromId | Number | false | | TradeId to fetch from. Default gets most recent trades. |
| orderId | Number | false | | This can only be used in combination with symbol. |
| startTime | Number | false | | |
| endTime | Number | false | | |
| recvWindow | Number | false | `5000` | The value cannot be greater than `60000`. |

Output

```js
;[
{
id: 9960,
orderId: 191939,
price: '0.00138000',
qty: '10.00000000',
commission: '0.00001380',
commissionAsset: 'ETH',
time: 1508611114735,
isBuyer: false,
isMaker: false,
isBestMatch: true,
},
]
```

#### dailyAccountSnapshot

Get asset snapshot for the current authenticated account.

```js
console.log(
await client.accountSnapshot({
"type": "SPOT"
});
)
```

| Param | Type | Required | Default | Description |
| ---------- | ------ | -------- | ------- | ------------------------------------------------------- |
| type | String | true |
| startTime | Number | false |
| endTime | Number | false |
| limit | Number | false | `5` | min `5`, max `30`, default `5` |
| recvWindow | Number | false |

Output

```js
{
"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
}
]
}
```

#### tradesHistory

Lookup symbol trades history.

```js
console.log(await client.tradesHistory({ symbol: 'ETHBTC' }))
```

| Param | Type | Required | Default | Description |
| ------ | ------ | -------- | ------- | ------------------------------------------------------- |
| symbol | String | true |
| limit | Number | false | `500` | Max `500` |
| fromId | Number | false | `null` | TradeId to fetch from. Default gets most recent trades. |

Output

```js
;[
{
id: 28457,
price: '4.00000100',
qty: '12.00000000',
time: 1499865549590,
isBuyerMaker: true,
isBestMatch: true,
},
]
```

#### withdrawHistory

Get the account withdraw history.

```js
console.log(await client.withdrawHistory())
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| asset | String | false | |
| status | Number | false | 0 (0: Email Sent, 1: Cancelled 2: Awaiting Approval, 3: Rejected, 4: Processing, 5: Failure, 6: Completed) |
| offset | Number | false | |
| limit | Number | false | |
| startTime | Number | false | |
| endTime | Number | false | |
| recvWindow | Number | false | |

Output

```js
[
{
"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,
"txId": "0xb5ef8c13b968a406cc62a93a8bd80f9e9a906ef1b3fcf20a2e48573c17659268"
},
{
"address": "1FZdVHtiBqMrWdjPyRPULCUceZPJ2WLCsB",
"amount": "0.00150000",
"applyTime": "2019-09-24 12:43:45",
"coin": "BTC",
"id": "156ec387f49b41df8724fa744fa82719",
"network": "BTC",
"status": 6,
"txId": "60fd9007ebfddc753455f95fafa808c4302c836e4d1eebc5a132c36c1d8ac354"
}
]
```

#### withdraw

Triggers the withdraw process.

```js
console.log(
await client.withdraw({
coin: 'ETH',
network: 'ETH',
address: '0xfa97c22a03d8522988c709c24283c0918a59c795',
amount: 100,
// addressTag: '' // MEMO
}),
)
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | -------------------------- |
| asset | String | true |
| address | String | true |
| amount | Number | true |
| name | String | false | Description of the address |
| recvWindow | Number | false |

Output

```js
{
"id":"7213fea8e94b4a5593d507237e5a555b"
}
```

#### depositAddress

Fetch deposit address with network.

```js
console.log(await client.depositAddress({ coin: 'NEO' }))
```

| Param | Type | Required | Description |
| -------- | ------ | -------- | ---------------- |
| coin | String | true | The coin name |
| network | String | false | The network name |

Output

```js
{
address: 'AM6ytPW78KYxQCmU2pHYGcee7GypZ7Yhhc',
coin: 'NEO',
tag: '',
url: 'https://neoscan.io/address/AM6ytPW78KYxQCmU2pHYGcee7GypZ7Yhhc'
}
```

#### depositHistory

Fetch deposit address with network.

```js
console.log(await client.depositHistory())
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | ---------------- |
| coin | String | false | The coin name |
| status | Number | false | 0 (0:pending, 6: credited but cannot withdraw, 1:success) |
| startTime | Number | false | Default: 90 days from current timestamp |
| endTime | Number | false | Default: present timestamp |
| offset | Number | false | default: 0 |
| limit | Number | false | |
| recvWindow | Number | false | |

Output

```js
[
{
"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"
}
]
```

#### tradeFee

Retrieve the account trade Fee per asset.

```js
console.log(await client.tradeFee())
```

Output

```js
[
{
"symbol": "ADABNB",
"makerCommission": 0.9000,
"takerCommission": 1.0000
},
{
"symbol": "BNBBTC",
"makerCommission": 0.3000,
"takerCommission": 0.3000
}
]

```

#### capitalConfigs

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

```js
console.log(await client.capitalConfigs())
```

Output

```js
[
{
'coin': 'CTR',
'depositAllEnable': false,
'free': '0.00000000',
'freeze': '0.00000000',
'ipoable': '0.00000000',
'ipoing': '0.00000000',
'isLegalMoney': false,
'locked': '0.00000000',
'name': 'Centra',
'networkList': [
{
'addressRegex': '^(0x)[0-9A-Fa-f]{40}$',
'coin': 'CTR',
'depositDesc': 'Delisted, Deposit Suspended',
'depositEnable': false,
'isDefault': true,
'memoRegex': '',
'minConfirm': 12,
'name': 'ERC20',
'network': 'ETH',
'resetAddressStatus': false,
'specialTips': '',
'unLockConfirm': 0,
'withdrawDesc': '',
'withdrawEnable': true,
'withdrawFee': '35.00000000',
'withdrawIntegerMultiple': '0.00000001',
'withdrawMax': '0.00000000',
'withdrawMin': '70.00000000'
}
],
'storage': '0.00000000',
'trading': false,
'withdrawAllEnable': true,
'withdrawing': '0.00000000'
}
]
```

#### universalTransfer

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

```js
console.log(await client.universalTransfer({ type: 'MAIN_C2C', asset: 'USDT', amount: '1000' }))
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | ---------------- |
| type | String | true |
| asset | String | true |
| amount | String | true |
| recvWindow | Number | false |

Output

```js
{
tranId:13526853623
}
```

#### universalTransferHistory

```js
console.log(await client.universalTransferHistory({ type: 'MAIN_C2C' }))
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | ------------------- |
| type | String | true |
| startTime | Number | false |
| endTime | Number | false |
| current | Number | false | Default 1 |
| size | Number | false | Default 10, Max 100 |
| recvWindow | Number | false |

Output

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

#### assetDetail

```js
console.log(await client.assetDetail())
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| recvWindow | Number | false |

Output

```js
{
"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
}
}
```

#### getBnbBurn

```js
console.log(await client.getBnbBurn())
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"spotBNBBurn":true,
"interestBNBBurn": false
}
```

#### setBnbBurn

```js
console.log(await client.setBnbBurn({ spotBNBBurn: "true" }))
```

| Param | Type | Required | Description |
| --------------- | -------- | -------- | ------------------- |
| spotBNBBurn | String | false | "true" or "false"; Determines whether to use BNB to pay for trading fees on SPOT |
| interestBNBBurn | String | false | "true" or "false"; Determines whether to use BNB to pay for margin loan's interest |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"spotBNBBurn":true,
"interestBNBBurn": false
}
```

#### dustLog

```js
console.log(await client.dustLog())
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| startTime | Number | false |
| endTime | Number | false |
| recvWindow | Number | false |

Output

```js
{
"total": 8, //Total counts of exchange
"userAssetDribblets": [
{
"operateTime": 1615985535000,
"totalTransferedAmount": "0.00132256",
"totalServiceChargeAmount": "0.00002699",
"transId": 45178372831,
"userAssetDribbletDetails": [
{
"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"
}
]
}
]
}
}
```

#### dustTransfer

```js
console.log(await client.dustTransfer({ asset: ['ETH', 'LTC', 'TRX'] }))
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| asset | [String] | true |
| recvWindow | Number | false |

Output

```js
{
"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"
}
]
}
```

#### accountCoins

Retrieve account coins related information. Implemented as `getAll` in Binance Docs.

```js
console.log(await client.accountCoins())
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| recvWindow | Number | false |

Output

```js
[
{
"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",
"withdrawMin": "0.00000440"
},
{
"addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(bc1)[0-9A-Za-z]{39,59}$",
"coin": "BTC",
"depositEnable": true,
"insertTime": 1563532929000,
"isDefault": true,
"memoRegex": "",
"minConfirm": 1,
"name": "BTC",
"network": "BTC",
"resetAddressStatus": false,
"specialTips": "",
"unLockConfirm": 2,
"updateTime": 1571014804000,
"withdrawEnable": true,
"withdrawFee": "0.00050000",
"withdrawIntegerMultiple": "0.00000001",
"withdrawMin": "0.00100000"
}
],
"storage": "0.00000000",
"trading": true,
"withdrawAllEnable": true,
"withdrawing": "0.00000000"
}
]
```

#### lendingAccount

Get information of lending assets for user.

```js
console.log(await client.lendingAccount())
```

Output

```js
{
"positionAmountVos": [
{
"amount": "75.46000000",
"amountInBTC": "0.01044819",
"amountInUSDT": "75.46000000",
"asset": "USDT"
},
{
"amount": "1.67072036",
"amountInBTC": "0.00023163",
"amountInUSDT": "1.67289230",
"asset": "BUSD"
}
],
"totalAmountInBTC": "0.01067982",
"totalAmountInUSDT": "77.13289230",
"totalFixedAmountInBTC": "0.00000000",
"totalFixedAmountInUSDT": "0.00000000",
"totalFlexibleInBTC": "0.01067982",
"totalFlexibleInUSDT": "77.13289230"
}
```

#### fundingWallet

Query funding wallet, includes Binance Pay, Binance Card, Binance Gift Card, Stock Token.

```js
console.log(await client.fundingWallet())
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| asset | String | false |
| needBtcValuation | String | false | 'true' or 'false'

Output

```js
[
{
"asset": "USDT",
"free": "1",
"locked": "0",
"freeze": "0",
"withdrawing": "0",
"btcValuation": "0.00000091"
}
]
```

#### apiPermission

Get API Key Permission.

```js
console.log(await client.apiPermission())
```

| Param | Type | Required | Description |
| ---------- | -------- | -------- | ------------------- |
| recvWindow | Number | false |

Output

```js
{
"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 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
}
```

### Margin

#### marginAccountInfo

Query cross margin account details (USER_DATA)

```js
console.log(await client.marginAccountInfo());
```

| Param | Type | Required | Description |
| ----- | ------ | -------- | -------------- |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"borrowEnabled": true,
"marginLevel": "11.64405625",
"totalAssetOfBtc": "6.82728457",
"totalLiabilityOfBtc": "0.58633215",
"totalNetAssetOfBtc": "6.24095242",
"tradeEnabled": true,
"transferEnabled": true,
"userAssets": [
{
"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"
}
]
}
```

#### marginLoan

Create a loan for margin account.

```js
console.log(await client.marginLoan({ asset: 'BTC', amount:'0.0001' }));
```

| Param | Type | Required | Description |
| ------ | ------ | -------- | -------------- |
| asset | String | true | The asset name |
| amount | Number | true |

Output

```js
{
"tranId": 100000001 //transaction id
}
```

#### marginRepay

Repay loan for margin account.

```js
console.log(await client.marginRepay({ asset: 'BTC', amount:'0.0001' }));
```

| Param | Type | Required | Description |
| ------ | ------ | -------- | -------------- |
| asset | String | true | The asset name |
| amount | Number | true |

Output

```js
{
"tranId": 100000001 //transaction id
}
```

#### marginIsolatedAccount

Query Isolated Margin Account Info

```js
console.log(await client.marginIsolatedAccount({ symbols: 'BTCUSDT'}));
```

| Param | Type | Required | Description |
| ----- | ------ | -------- | -------------- |
| symbols | String | false | Max 5 symbols can be sent; separated by "," |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"assets":[
{
"baseAsset":
{
"asset": "BTC",
"borrowEnabled": true,
"borrowed": "0.00000000",
"free": "0.00000000",
"interest": "0.00000000",
"locked": "0.00000000",
"netAsset": "0.00000000",
"netAssetOfBtc": "0.00000000",
"repayEnabled": true,
"totalAsset": "0.00000000"
},
"quoteAsset":
{
"asset": "USDT",
"borrowEnabled": true,
"borrowed": "0.00000000",
"free": "0.00000000",
"interest": "0.00000000",
"locked": "0.00000000",
"netAsset": "0.00000000",
"netAssetOfBtc": "0.00000000",
"repayEnabled": true,
"totalAsset": "0.00000000"
},
"symbol": "BTCUSDT"
"isolatedCreated": true,
"marginLevel": "0.00000000",
"marginLevelStatus": "EXCESSIVE", // "EXCESSIVE", "NORMAL", "MARGIN_CALL", "PRE_LIQUIDATION", "FORCE_LIQUIDATION"
"marginRatio": "0.00000000",
"indexPrice": "10000.00000000"
"liquidatePrice": "1000.00000000",
"liquidateRate": "1.00000000"
"tradeEnabled": true
}
],
"totalAssetOfBtc": "0.00000000",
"totalLiabilityOfBtc": "0.00000000",
"totalNetAssetOfBtc": "0.00000000"
}
```

#### disableMarginAccount

Inactive Isolated Margin trading pair for symbol

```js
console.log(await client.disableMarginAccount({ symbol: 'BTCUSDT' }));
```

| Param | Type | Required | Description |
| ----- | ------ | -------- | -------------- |
| symbol | String | true | |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"success": true,
"symbol": "BTCUSDT"
}
```

#### enableMarginAccount

Active Isolated Margin trading pair for symbol

```js
console.log(await client.enableMarginAccount({ symbol: 'BTCUSDT' }));
```

| Param | Type | Required | Description |
| ----- | ------ | -------- | -------------- |
| symbol | String | true | |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"success": true,
"symbol": "BTCUSDT"
}
```

#### marginMaxBorrow

If isolatedSymbol is not sent, crossed margin data will be sent.

```js
console.log(await client.marginMaxBorrow({ asset: 'BTC', isolatedSymbol: 'BTCUSDT'}));
```

| Param | Type | Required | Description |
| ----- | ------ | -------- | -------------- |
| asset | String | true |
| isolatedSymbol| String | false |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"amount": "1.69248805", // account's currently max borrowable amount with sufficient system availability
"borrowLimit": "60" // max borrowable amount limited by the account level
}
```

#### marginCreateIsolated

```js
console.log(await client.marginCreateIsolated({ base: 'BTC', quote: 'USDT'}));
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | --------------------- |
| base | String | true | Base asset of symbol |
| quote | String | true | Quote asset of symbol |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"success": true,
"symbol": "BTCUSDT"
}
```

#### marginIsolatedTransfer

```js
console.log(await client.marginIsolatedTransfer({ asset: 'USDT', symbol: 'BNBUSDT', transFrom: 'ISOLATED_MARGIN', transTo: 'SPOT', amount: 1}));
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------- |
| asset | String | true | asset,such as BTC |
| symbol | String | true |
| transFrom | String | true | "SPOT", "ISOLATED_MARGIN" |
| transTo | String | true | "SPOT", "ISOLATED_MARGIN" |
| amount | Number | true |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
//transaction id
"tranId": 100000001
}
```

#### marginIsolatedTransferHistory

```js
console.log(await client.marginIsolatedTransferHistory({ symbol: 'BNBUSDT'}));
```

| Param | Type | Required | Description |
| ---------- | ------ | -------- | ------------------------- |
| asset | String | false | asset,such as BTC |
| symbol | String | true |
| transFrom | String | false | "SPOT", "ISOLATED_MARGIN" |
| transTo | String | false | "SPOT", "ISOLATED_MARGIN" |
| startTime | Number | false |
| endTime | Number | false |
| current | Number | false | Current page, default 1 |
| size | Number | false | Default 10, max 100 |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"rows": [
{
"amount": "0.10000000",
"asset": "BNB",
"status": "CONFIRMED",
"timestamp": 1566898617000,
"txId": 5240372201,
"transFrom": "SPOT",
"transTo": "ISOLATED_MARGIN"
},
{
"amount": "5.00000000",
"asset": "USDT",
"status": "CONFIRMED",
"timestamp": 1566888436123,
"txId": 5239810406,
"transFrom": "ISOLATED_MARGIN",
"transTo": "SPOT"
}
],
"total": 2
}
```

#### marginOrder

```js
console.log(await client.marginOrder({
symbol: 'BTCUSDT',
type: 'MARKET',
side: 'SELL',
quantity: '10',
}));
```

| Param | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------- |
| symbol | String | true | asset, such as `BTC` |
| isIsolated | String | false | for isolated margin or not, `TRUE`, `FALSE`, default `FALSE`
| side | String | true | `BUY` `SELL` |
| type | String | true |
| quantity | String | false |
| quoteOrderQty | String | false |
| price | String | false |
| stopPrice | String | false | Used with `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, and `TAKE_PROFIT_LIMIT` orders.
| newClientOrderId | String | false | A unique id among open orders. Automatically generated if not sent.
| icebergQty | Boolean | false | Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.
| newOrderRespType | String | false | Set the response JSON. `ACK`, `RESULT`, or `FULL`; `MARKET` and `LIMIT` order types default to `FULL`, all other orders default to `ACK`.
| sideEffectType | String | false | `NO_SIDE_EFFECT`, `MARGIN_BUY`, `AUTO_REPAY`; default `NO_SIDE_EFFECT`.
| timeInForce | String | false | `GTC`,`IOC`,`FOK` |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"symbol": "BTCUSDT",
"orderId": 28,
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"marginBuyBorrowAmount": 5, // will not return if no margin trade happens
"marginBuyBorrowAsset": "BTC", // will not return if no margin trade happens
"isIsolated": true, // if isolated margin
"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"
}
]
}
```

#### marginCancelOrder

Cancels an active margin order.

```js
console.log(
await client.marginCancelOrder({
symbol: 'ETHBTC',
orderId: 1,
}),
)
```

| Param | Type | Required | Description |
| ----------------- | ------ | -------- | -------------------------------------------------------------------------- |
| symbol | String | true |
| orderId | Number | true | Not required if `origClientOrderId` is used |
| origClientOrderId | String | false |
| newClientOrderId | String | false | Used to uniquely identify this cancel. Automatically generated by default. |
| recvWindow | Number | false |

Output

```js
{
symbol: "LTCBTC",
orderId: 28,
origClientOrderId: "myOrder1",
clientOrderId: "cancelMyOrder1",
price: "1.00000000",
origQty: "10.00000000",
executedQty: "8.00000000",
cummulativeQuoteQty: "8.00000000",
status: "CANCELED",
timeInForce: "GTC",
type: "LIMIT",
side: "SELL"
}
```

#### marginOrderOco

```js
console.log(await client.marginOrderOco({
symbol: 'AUDIOUSDT',
type: 'MARKET',
side: 'SELL',
quantity: '10',
}));
```

| Param | Type | Required | Description |
| ----------------- | ------- | -------- | ------------------------- |
| symbol | String | true | asset, such as `BTC` |
| isIsolated | String | false | for isolated margin or not, `TRUE`, `FALSE`, default `FALSE`
| side | String | true | `BUY` `SELL` |
| type | String | true |
| quantity | String | false |
| quoteOrderQty | String | false |
| price | String | false |
| stopPrice | String | false | Used with `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, and `TAKE_PROFIT_LIMIT` orders.
| stopLimitPrice | String | false | Used with `STOP_LOSS_LIMIT` orders.
| newClientOrderId | String | false | A unique id among open orders. Automatically generated if not sent.
| icebergQty | Boolean | false | Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.
| newOrderRespType | String | false | Set the response JSON. `ACK`, `RESULT`, or `FULL`; `MARKET` and `LIMIT` order types default to `FULL`, all other orders default to `ACK`.
| sideEffectType | String | false | `NO_SIDE_EFFECT`, `MARGIN_BUY`, `AUTO_REPAY`; default `NO_SIDE_EFFECT`.
| timeInForce | String | false | `GTC`,`IOC`,`FOK` |
| recvWindow | Number | false | No more than 60000 |

Output

```js
{
"orderListId": 45514668,
"contingencyType": 'OCO',
"listStatusType": 'EXEC_STARTED',
"listOrderStatus": 'EXECUTING',
"listClientOrderId": 'CD9UzEJfmcGZ4kLfZT2ga2',
"transactionTime": 1632192162785,
"symbol": 'AUDIOUSDT',
"isIsolated": true,
"orders": [
{
"symbol": 'AUDIOUSDT',
"orderId": 239313661,
"clientOrderId": 'ZbUwgKv6UB8eMzf2yfXENl'
},
{
"symbol": 'AUDIOUSDT',
"orderId": 239313662,
"clientOrderId": 'f5u1RIHAPRd4W3fFhFykBo'
}
],
"orderReports": [
{
"symbol": 'AUDIOUSDT',
"orderId": 239313661,
"orderListId": 45514668,
"clientOrderId": 'ZbUwgKv6UB8eMzf2yfXENl',
"transactTime": 1632192162785,
"price": '2.20000000',
"origQty": '12.80000000',
"executedQty": '0',
"cummulativeQuoteQty": '0',
"status": 'NEW',
"timeInForce": 'GTC',
"type": 'STOP_LOSS_LIMIT',
"side": 'SELL',
"stopPrice": '2.20000000'
},
{
"symbol": 'AUDIOUSDT',
"orderId": 239313662,
"orderListId": 45514668,
"clientOrderId": 'f5u1RIHAPRd4W3fFhFykBo',
"transactTime": 1632192162785,
"price": '2.50000000',
"origQty": '12.80000000',
"executedQty": '0',
"cummulativeQuoteQty": '0',
"status": 'NEW',
"timeInForce": 'GTC',
"type": 'LIMIT_MAKER',
"side": 'SELL'
}
]
}
```

#### marginOpenOrders

Query Margin Account's Open Orders

```js
console.log(
await client.marginOpenOrders({
symbol: 'XLMBTC',
}),
)
```

| Param | Type | Required |
| ---------- | ------ | -------- |
| symbol | String | false |
| isIsolated | String | false |
| recvWindow | Number | false |

Output

```js
;[
{
clientOrderId: "qhcZw71gAkCCTv0t0k8LUK",
cummulativeQuoteQty: "0.00000000",
executedQty: "0.00000000",
icebergQty: "0.00000000",
isWorking: true,
orderId: 211842552,
origQty: "0.30000000",
price: "0.00475010",
side: "SELL",
status: "NEW",
stopPrice: "0.00000000",
symbol: "BNBBTC",
isIsolated: true,
time: 1562040170089,
timeInForce: "GTC",
type: "LIMIT",
selfTradePreventionMode: "NONE",
updateTime: 1562040170089
}
]
```

#### marginCancelOpenOrders

Cancels all active orders on a symbol for margin account.
This includes OCO orders.

```js
console.log(
await client.marginCancelOpenOrders({
symbol: 'ETHBTC'
}),
)
```
| Param | Type | Required |
|------------|----------|-----------|
| symbol | String | true |
| isIsolated | String | false |

Output

```js
[
{
symbol: 'ETHBTC',
isIsolated: false,
origClientOrderId: 'bnAoRHgI18gRD80FJmsfNP',
orderId: 1,
clientOrderId: 'RViSsQPTp1v3WmLYpeKT11'
},
{
symbol: 'ETHBTC',
isIsolated: false,
origClientOrderId: 'IDbzcGmfwSCKihxILK1snu',
orderId: 2,
clientOrderId: 'HKFcuWAm9euMgRuwVGR8CL'
}
]
```

#### marginGetOrder

Query Margin Account's Order

```js
console.log(await client.marginGetOrder({
symbol: 'BNBBTC',
orderId: '213205622',
}));
```

| Param | Type | Required | Description |
| -------------------- | ------ | -------- | ------------------------- |
| symbol | String | true | asset,such as BTC |
| isIsolated | String | false | for isolated margin or not, `TRUE`, `FALSE`, default `FALSE`
| orderId | String | false |
| origClientOrderId | String | false |
| recvWindow | Number | false | The value cannot be greater than `60000`

Output

```js
{
"clientOrderId": "ZwfQzuDIGpceVhKW5DvCmO",
"cummulativeQuoteQty": "0.00000000",
"executedQty": "0.00000000",
"icebergQty": "0.00000000",
"isWorking": true,
"orderId": 213205622,
"origQty": "0.30000000",
"price": "0.00493630",
"side": "SELL",
"status": "NEW",
"stopPrice": "0.00000000",
"symbol": "BNBBTC",
"isIsolated": true,
"time": 1562133008725,
"timeInForce": "GTC",
"type": "LIMIT",
"updateTime": 1562133008725
}
```

#### marginGetOrderOco

Retrieves a specific Margin OCO based on provided optional parameters

```js
console.log(
await client.getMarginOrderOco({
orderListId: 27,
}),
)
```

| Param | Type | Required | Description |
| ----------------- | ------ | -------- | ------------------------------------------- |
| orderListId | Number | true | Not required if `listClientOrderId` is used |
| symbol | Boolean| false | mandatory for isolated margin, not supported for cross margin
| isIsolated | Boolean| false |
| listClientOrderId | String | false |
| recvWindow | Number | false |

Output

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

### Portfolio Margin Endpoints

Only Portfolio Margin Account is accessible to these endpoints.

#### getPortfolioMarginAccountInfo

Get a Portfolio Margin Account Info.

```js
console.log(await client.getPortfolioMarginAccountInfo())
```

Output

```js
{
"uniMMR": "1.87987800", // Portfolio margin account maintenance margin rate
"accountEquity": "122607.35137903", // Account equity, unit:USD
"accountMaintMargin": "23.72469206", // Portfolio margin account maintenance margin, unit:USD
"accountStatus": "NORMAL" // Portfolio margin account status:"NORMAL", "MARGIN_CALL", "SUPPLY_MARGIN", "REDUCE_ONLY", "ACTIVE_LIQUIDATION", "FORCE_LIQUIDATION", "BANKRUPTED"
}
```

### Futures Authenticated REST endpoints

#### futuresOrder

- Creates a futures order
- see https://developers.binance.com/docs/derivatives/usds-margined-futures/trade/rest-api

```js
console.log(
await client.futuresOrder({
symbol: 'LTCUSDT',
side: 'BUY',
type: 'LIMIT',
quantity: 1,
price: 80,
timeInForce: 'GTC',
})
)
```

#### futuresUpdateOrder
- Updates a futures order
- see https://developers.binance.com/docs/derivatives/usds-margined-futures/trade/rest-api/Modify-Order

```js
console.log(
await client.futuresUpdateOrder({
orderId: 23423423423,
symbol: 'LTCUSDT',
side: 'BUY',
type: 'LIMIT',
quantity: 1,
price: 80,
timeInForce: 'GTC',
})
)
```

#### futuresGetOrder

Check an order's status.

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

| Name | Type | Mandatory | Description |
| ----------------- | ------ | -------- | ---------------- |
| symbol | STRING | YES | The pair name |
| orderId | LONG | NO | |
| origClientOrderId | STRING | NO | |
| recvWindow | LONG | NO | |

Either orderId or origClientOrderId must be sent.

```js
console.log(
await client.futuresGetOrder({
symbol: 'BNBETH',
orderId: 50167927,
})
)
```

Output

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

#### futuresAllOrders

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

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

| Name | Type | Mandatory | Description |
| ----------------- | ------ | -------- | ---------------------- |
| symbol | STRING | YES | The pair name |
| orderId | LONG | NO | |
| startTime | LONG | NO | |
| endTime | LONG | NO | |
| limit | INT | NO | Default 500; max 1000. |
| recvWindow | LONG | NO | |

If orderId is set, it will get orders >= that orderId. Otherwise most recent orders are returned.

```js
console.log(
await client.futuresAllOrders({
symbol: 'BNBETH',
orderId: 50167927,
startTime: 1579276756075,
limit: 700,
})
)
```

Output

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

#### futuresBatchOrders

Place multiple orders

| Name