npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

binance-api-node-v2

v0.0.2

Published

A node API wrapper for Binance

Downloads

5

Readme

Installation

yarn add binance-api-node-v2

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.

import Binance from 'binance-api-node-v2'

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

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

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

Every REST method returns a Promise, making this library async await ready. Following examples will use the await form, which requires some configuration you will have to lookup.

Table of Contents

Init

| Param | Type | Required | Info | | ----------- | -------- | -------- | -------------------------------------------- | | apiKey | String | false | Required when making private calls | | apiSecret | String | false | Required when making private 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.

console.log(await client.ping())

time

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

console.log(await client.time())
1508478457643

exchangeInfo

Get the current exchange trading rules and symbol information.

console.log(await client.exchangeInfo())
{
  "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.

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

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

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

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 |

;[
  {
    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.

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

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

;[
  {
    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.

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

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

;[
  {
    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.

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

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

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

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

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

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

prices

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

console.log(await client.prices())

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

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

allBookTickers

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

console.log(await client.allBookTickers())
{
  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 ping

Test connectivity to the API.

console.log(await client.futuresPing())

futures time

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

console.log(await client.futuresTime())
1508478457643

futures exchangeInfo

Get the current exchange trading rules and symbol information.

console.log(await client.futuresExchangeInfo())
{
  "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.

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

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

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

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 |

;[
  {
    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.

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.

;[
  {
    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.

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

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

;[
  {
    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.

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

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

{
  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 all symbols.

console.log(await client.futuresPrices())
{
  BTCUSDT: '8590.05392500',
  ETHUSDT: '154.1100',
  ...
}

futures allBookTickers

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

console.log(await client.futuresAllBookTickers())
{
  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.

console.log(await client.futuresMarkPrice())
{
    "symbol": "BTCUSDT",
    "markPrice": "11012.80409769",
    "lastFundingRate": "-0.03750000",
    "nextFundingTime": 1562569200000,
    "time": 1562566020000
}

futures AllForceOrders

Get all Liquidation Orders.

console.log(await client.futuresAllForceOrders())

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

;[
  {
    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,
  },
]

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.

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 | | 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_LOSS | quantity, stopPrice | | STOP_LOSS_LIMIT | timeInForce, quantity, price, stopPrice | | TAKE_PROFIT | quantity, stopPrice | | TAKE_PROFIT_LIMIT | timeInForce, quantity, price, stopPrice | | LIMIT_MAKER | quantity, price |

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

orderOco

Creates a new OCO order.

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

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 |

{
  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

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 |

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

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 |

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

cancelOrderOco

Cancel an entire Order List.

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 |

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

console.log(
  await client.cancelOpenOrders({
    symbol: 'ETHBTC'
  }),
)

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

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

openOrders

Get all open orders on a symbol.

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

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

;[
  {
    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.

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 |

;[
  {
    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

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 |

;[
  {
    "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.

console.log(await client.accountInfo())

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

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

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

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

;[
  {
    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.

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 |

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

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

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

depositHistory

Get the account deposit history.

console.log(await client.depositHistory())

| Param | Type | Required | Description | | ---------- | ------ | -------- | -------------------------- | | coin | String | false | | 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 | | timestamp | Number | yes |

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

withdrawHistory

Get the account withdraw history.

console.log(await client.withdrawHistory())

| Param | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | coin | 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 | | timestamp | Number | yes |

[
    {
        "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 (untested for now).

console.log(
  await client.withdraw({
    coin: 'ETH',
    network: 'ETH'
    address: '0xfa97c22a03d8522988c709c24283c0918a59c795',
    amount: 2,
  }),
)

| Param | Type | Required | Description | | ---------- | ------ | -------- | -------------------------- | | coin | String | true | | network | String | false | | address | String | true | | addressTag | String | false | Secondary address identifier for coins like XRP,XMR etc.| | amount | Number | true | | name | String | false | Description of the address | | recvWindow | Number | false | | timestamp | Number | true |

{
    "id":"7213fea8e94b4a5593d507237e5a555b"
}

depositAddress

Removed. Use capitalDepositAddress

tradeFee

Retrieve the account trade Fee per asset.

console.log(await client.tradeFee())
[
    {
      "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.

console.log(await client.capitalConfigs())
[
  {
    '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'
  }
]

capitalDepositAddress

Fetch deposit address with network.

console.log(await client.capitalDepositAddress({ coin: 'NEO' }))

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

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

universalTransfer

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

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

{
  tranId:13526853623
}

universalTransferHistory

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

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

Margin

marginLoan

Create a loan for margin account.

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

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

{
    "tranId": 100000001 //transaction id
}

marginRepay

Repay loan for margin account.

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

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

{
    "tranId": 100000001 //transaction id
}

marginIsolatedAccount

Query Isolated Margin Account Info

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 |

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

marginMaxBorrow

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

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 |

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

marginCreateIsolated

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 |

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

marginIsolatedTransfer

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 |

{
    //transaction id
    "tranId": 100000001
}

marginIsolatedTransferHistory

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 |

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

Futures Authenticated REST endpoints

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.

console.log(
  await client.futuresGetOrder({
    symbol: 'BNBETH',
    orderId: 50167927,
  })
)
{
    "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.

console.log(
  await client.futuresAllOrders({
    symbol: 'BNBETH',
    orderId: 50167927,
    startTime: 1579276756075,
    limit: 700,
  })
)
[
  {
    "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   
  }
]

futuresLeverage

Change user's initial leverage of specific symbol market.

| Name | Type | Mandatory | Description | | ----------------- | ------ | -------- | ------------------------------------------ | | symbol | STRING | YES | The pair name | | leverage | INT | YES | target initial leverage: int from 1 to 125 | | recvWindow | LONG | NO | |

console.log(
  await client.futuresLeverage({
    symbol: 'BTCUSDT',
    leverage: 21,
  })
)
{
    "leverage": 21,
    "maxNotionalValue": "1000000",
    "symbol": "BTCUSDT"
}

futuresMarginType

Change margin type.

| Name | Type | Mandatory | Description | | ----------------- | ------ | -------- | ----------------- | | symbol | STRING | YES | The pair name | | marginType | ENUM | YES | ISOLATED, CROSSED | | recvWindow | LONG | NO | |

console.log(
  await client.futuresMarginType({
    symbol: 'BTCUSDT',
    marginType: 'ISOLATED',
  })
)
{
    "code": 200,
    "msg": "success"
}

futuresPositionMargin

Modify isolated position margin.

| Name | Type | Mandatory | Description | | ----------------- | ------- | -------- | ------------------------------------------------- | | symbol | STRING | YES | The pair name | | positionSide | ENUM | NO | Default BOTH for One-way Mode; LONG or SHORT for Hedge Mode. It must be sent with Hedge Mode. | | amount | DECIMAL | YES | | | type | INT | YES | 1: Add position margin,2: Reduce position margin | | recvWindow | LONG | NO | |

Only for isolated symbol.

console.log(
  await client.futuresPositionMargin({
    symbol: 'BTCUSDT',
    amount: 100,
    type: 1,
  })
)
{
    "amount": 100.0,
    "code": 200,
    "msg": "Successfully modify position margin.",
    "type": 1
}

futuresMarginHistory

Get position margin change history.

| Name | Type | Mandatory | Description | | ----------------- | ------ | -------- | ------------------------------------------------- | | symbol | STRING | YES | The pair name | | type | INT | NO | 1: Add position margin,2: Reduce position margin | | startTime | LONG | NO | | | endTime | LONG | NO | | | limit | INT | NO | Default 500; | | recvWindow | LONG | NO | |

console.log(
  await client.futuresMarginHistory({
    symbol: 'BTCUSDT',
    type: 1,
    startTime: 1579276756075,
    limit: 700,
  })
)
[
    {
        "amount": "23.36332311",
        "asset": "USDT",
        "symbol": "BTCUSDT",
        "time": 1578047897183,
        "type": 1,
        "positionSide": "BOTH"
    },
    {
        "amount": "100",
        "asset": "USDT",
        "symbol": "BTCUSDT",
        "time": 1578047900425,
        "type": 1,
        "positionSide": "LONG"
    }
]

futuresIncome

Get income history.

| Name | Type | Mandatory | Description | | ----------------- | ------ | -------- | ------------------------------------------------- | | symbol | STRING | NO | The pair name | | incomeType | STRING | NO | "TRANSFER","WELCOME_BONUS", "REALIZED_PNL","FUNDING_FEE", "COMMISSION", and "INSURANCE_CLEAR" | | startTime | LONG | NO | Timestamp in ms to get funding from INCLUSIVE. | | endTime | LONG | NO | Timestamp in ms to get funding until INCLUSIVE. | | limit | INT | NO | Default 100; max 1000 | | recvWindow | LONG | NO | |

  • If incomeType is not sent, all kinds of flow will be returned
  • "trandId" is unique in the same incomeType for a user
console.log(
  await client.futuresIncome({
    symbol: 'BTCUSDT',
    startTime: 1579276756075,
    limit: 700,
  })
)
[
    {
        "symbol": "",                   // trade symbol, if existing
        "incomeType": "TRANSFER",       // income type
        "income": "-0.37500000",        // income amount
        "asset": "USDT",                // income asset
        "info":"TRANSFER",              // extra information
        "time": 1570608000000,      
        "tranId":"9689322392",          // transaction id
        "tradeId":""                    // trade id, if existing
    },
    {
        "symbol": "BTCUSDT",
        "incomeType": "COMMISSION", 
        "income": "-0.01000000",
        "asset": "USDT",
        "info":"COMMISSION",
        "time": 1570636800000,
        "tranId":"9689322392",
        "tradeId":"2059192"
    }
]

futuresAccountBalance

Get futures account balance

console.log(await client.futuresAccountBalance());
[
  {
    "accountAlias": "SgsR",    // unique account code
    "asset": "USDT",    // asset name
    "balance": "122607.35137903", // wallet balance
    "crossWalletBalance": "23.72469206", // crossed wallet balance
    "crossUnPnl": "0.00000000"  // unrealized profit of crossed positions
    "availableBalance": "23.72469206",       // available balance
    "maxWithdrawAmount": "23.72469206"     // maximum amount for transfer out
  }
]

futuresUserTrades

Get trades for a specific account and symbol.

console.log(
  await client.futuresUserTrades({
    symbol: 'ETHBTC',
  }),
)

| Param | Type | Mandatory | Description | | ---------- | ------ | --------- | -------------------------------------------------------- | | symbol | STRING | YES | | | startTime | LONG | NO | | | endTime | LONG | NO | | | limit | INT | NO | Default 500; max 1000. | | fromId | LONG | NO | Trade id to fetch from. Default gets most recent trades. | | recvWindow | LONG | NO | |

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

WebSockets

Every websocket utility returns a function you can call to close the opened connection and avoid memory issues.

const clean = client.ws.depth('ETHBTC', depth => {
  console.log(depth)
})

// After you're done
clean()

depth

Live depth market data feed. The first parameter can either be a singl