UNPKG

binance-api-networks

Version:

A node API wrapper for Binance (Support Networks SAPI)

2,079 lines (1,695 loc) 70.9 kB
# binance-api-networks ### Installation npm install binance-api-networks ### 2021-02-01 Binance API supports Supports Deposits and Withdrawals for Interoperable Tokens. For example, you can deposit USDT based on OMNI, ERC20 or TRC20 into Binance. > [Latest Binance API docs](https://binance-docs.github.io/apidocs/spot/en/) We name this modules as to binance-api-networks, which is based on top of https://github.com/Ashlar/binance-api-node Version 0.9.15. Follwings are the docs from binance-api-node. ### 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). ```js import Binance from 'binance-api-networks' 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. ```js const Binance = require('binance-api-networks').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 - [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 avgPrice](#futures-avgPrice) - [futures prices](#futures-prices) - [futures allBookTickers](#futures-allbooktickers) - [futures markPrice](#futures-markPrice) - [futures allForceOrders](#futures-allForceOrders) - [Authenticated REST Endpoints](#authenticated-rest-endpoints) - [order](#order) - [orderTest](#ordertest) - [orderOco](#orderoco) - [getOrder](#getorder) - [cancelOrder](#cancelorder) - [cancelOpenOrders](#cancelOpenOrders) - [openOrders](#openorders) - [allOrders](#allorders) - [allOrdersOCO](#allordersoco) - [accountInfo](#accountinfo) - [myTrades](#mytrades) - [tradesHistory](#tradeshistory) - [depositHistory](#deposithistory) - [withdrawHistory](#withdrawhistory) - [withdraw](#withdraw) - [depositAddress](#depositaddress) - [tradeFee](#tradefee) - [capitalConfigs](#capitalConfigs) - [capitalDepositAddress](#capitalDepositAddress) - [universalTransfer](#universalTransfer) - [universalTransferHistory](#universalTransferHistory) - [Margin](#margin) - [marginRepay](#marginRepay) - [marginIsolatedAccount](#marginIsolatedAccount) - [marginMaxBorrow](#marginMaxBorrow) - [marginCreateIsolated](#marginCreateIsolated) - [marginIsolatedTransfer](#marginIsolatedTransfer) - [marginIsolatedTransferHistory](#marginIsolatedTransferHistory) - [Futures Authenticated REST Endpoints](#futures-authenticated-rest-endpoints) - [futuresGetOrder](#futuresGetOrder) - [futuresAllOrders](#futuresAllOrders) - [futuresAccountBalance](#futuresAccountBalance) - [futuresUserTrades](#futuresUserTrades) - [futuresLeverage](#futuresLeverage) - [futuresMarginType](#futuresMarginType) - [futuresPositionMargin](#futuresPositionMargin) - [futuresMarginHistory](#futuresMarginHistory) - [futuresIncome](#futuresIncome) - [Websockets](#websockets) - [depth](#depth) - [partialDepth](#partialdepth) - [ticker](#ticker) - [allTickers](#alltickers) - [candles](#candles-1) - [aggTrades](#aggtrades-1) - [trades](#trades-1) - [user](#user) - [Futures Websockets](#futuresWebsockets) - [futuresDepth](#futuresDepth) - [futuresPartialDepth](#futuresPartialdepth) - [futuresTicker](#futuresTicker) - [futuresAllTickers](#futuresAlltickers) - [futuresCandles](#futuresCandles) - [futuresAggTrades](#futuresAggtrades) - [futuresUser](#futuresUser) - [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 | | 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()) ``` <details> <summary>Output</summary> ```js 1508478457643 ``` </details> #### exchangeInfo Get the current exchange trading rules and symbol information. ```js console.log(await client.exchangeInfo()) ``` <details> <summary>Output</summary> ```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" }] }] } ``` </details> #### 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` | <details> <summary>Output</summary> ```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' } ] } ``` </details> #### 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`,<br>`4h`, `6h`, `8h`, `12h`, `1d`, `3d`, `1w`, `1M` | | limit | Number | false | `500` | Max `1000` | | startTime | Number | false | | endTime | Number | false | <details> <summary>Output</summary> ```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', }, ] ``` </details> #### 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 24 hours. Note: If `frondId`, `startTime`, and `endTime` are not sent, the most recent aggregate trades will be returned. <details> <summary>Output</summary> ```js ;[ { aggId: 2107132, symbol: 'ETHBTC', price: '0.05390400', quantity: '1.31000000', firstId: 2215345, lastId: 2215345, timestamp: 1508478599481, isBuyerMaker: true, wasBestPrice: true, }, ] ``` </details> #### 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` | <details> <summary>Output</summary> ```js ;[ { id: 28457, price: '4.00000100', qty: '12.00000000', time: 1499865549590, isBuyerMaker: true, isBestMatch: true, }, ] ``` </details> #### 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 | <details> <summary>Output</summary> ```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 } ``` </details> #### avgPrice Current average price for a symbol. ```js console.log(await client.avgPrice({ symbol: 'ETHBTC' })) ``` | Param | Type | Required | | ------ | ------ | -------- | | symbol | String | true | <details> <summary>Output</summary> ```js { "mins": 5, "price": "9.35751834" } ``` </details> #### 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 | <details> <summary>Output</summary> ```js { ETHBTC: '0.05392500', LTCBTC: '0.01041100', ... } ``` </details> #### allBookTickers Best price/qty on the order book for all symbols. ```js console.log(await client.allBookTickers()) ``` <details> <summary>Output</summary> ```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' } ... } ``` </details> #### 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()) ``` <details> <summary>Output</summary> ```js 1508478457643 ``` </details> #### futures exchangeInfo Get the current exchange trading rules and symbol information. ```js console.log(await client.futuresExchangeInfo()) ``` <details> <summary>Output</summary> ```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": [...] } ``` </details> #### 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` | <details> <summary>Output</summary> ```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' } ] } ``` </details> #### 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`,<br>`4h`, `6h`, `8h`, `12h`, `1d`, `3d`, `1w`, `1M` | | limit | Number | false | `500` | Max `1000` | | startTime | Number | false | | endTime | Number | false | <details> <summary>Output</summary> ```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', }, ] ``` </details> #### 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. <details> <summary>Output</summary> ```js ;[ { aggId: 2107132, price: '0.05390400', quantity: '1.31000000', firstId: 2215345, lastId: 2215345, timestamp: 1508478599481, isBuyerMaker: true, wasBestPrice: true, }, ] ``` </details> #### 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` | <details> <summary>Output</summary> ```js ;[ { id: 28457, price: '4.00000100', qty: '12.00000000', time: 1499865549590, isBuyerMaker: true, isBestMatch: true, }, ] ``` </details> #### 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 | <details> <summary>Output</summary> ```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 } ``` </details> #### futures prices Latest price for all symbols. ```js console.log(await client.futuresPrices()) ``` <details> <summary>Output</summary> ```js { BTCUSDT: '8590.05392500', ETHUSDT: '154.1100', ... } ``` </details> #### futures allBookTickers Best price/qty on the order book for all symbols. ```js console.log(await client.futuresAllBookTickers()) ``` <details> <summary>Output</summary> ```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' } ... } ``` </details> #### futures markPrice Mark Price and Funding Rate. ```js console.log(await client.futuresMarkPrice()) ``` <details> <summary>Output</summary> ```js { "symbol": "BTCUSDT", "markPrice": "11012.80409769", "lastFundingRate": "-0.03750000", "nextFundingTime": 1562569200000, "time": 1562566020000 } ``` </details> #### 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 | <details> <summary>Output</summary> ```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, }, ] ``` </details> ### 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. ```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 | | 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`. <details> <summary>Output</summary> ```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' } ``` </details> #### 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. ```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 <details> <summary>Output</summary> ```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" } ] } ``` </details> #### 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 | <details> <summary>Output</summary> ```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 } ``` </details> #### 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 | <details> <summary>Output</summary> ```js { symbol: 'ETHBTC', origClientOrderId: 'bnAoRHgI18gRD80FJmsfNP', orderId: 1, clientOrderId: 'RViSsQPTp1v3WmLYpeKT11' } ``` </details> #### 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 | <details> <summary>Output</summary> ```js [ { symbol: 'ETHBTC', origClientOrderId: 'bnAoRHgI18gRD80FJmsfNP', orderId: 1, clientOrderId: 'RViSsQPTp1v3WmLYpeKT11' }, { symbol: 'ETHBTC', origClientOrderId: 'IDbzcGmfwSCKihxILK1snu', orderId: 2, clientOrderId: 'HKFcuWAm9euMgRuwVGR8CL' } ] ``` </details> #### 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 | <details> <summary>Output</summary> ```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, }, ] ``` </details> #### 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 | <details> <summary>Output</summary> ```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, }, ] ``` </details> #### 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 | <details> <summary>Output</summary> ```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" } ] } ] ``` </details> #### accountInfo Get current account information. ```js console.log(await client.accountInfo()) ``` | Param | Type | Required | | ---------- | ------ | -------- | | recvWindow | Number | false | <details> <summary>Output</summary> ```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' }, ] } ``` </details> #### 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 `500` | | fromId | Number | false | | TradeId to fetch from. Default gets most recent trades. | | recvWindow | Number | false | <details> <summary>Output</summary> ```js ;[ { id: 9960, orderId: 191939, price: '0.00138000', qty: '10.00000000', commission: '0.00001380', commissionAsset: 'ETH', time: 1508611114735, isBuyer: false, isMaker: false, isBestMatch: true, }, ] ``` </details> #### 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. | <details> <summary>Output</summary> ```js ;[ { id: 28457, price: '4.00000100', qty: '12.00000000', time: 1499865549590, isBuyerMaker: true, isBestMatch: true, }, ] ``` </details> #### depositHistory Get the account deposit history. ```js console.log(await client.depositHistory()) ``` | Param | Type | Required | Description | | ---------- | ------ | -------- | -------------------------- | | asset | String | false | | status | Number | false | 0 (0: pending, 1: success) | | startTime | Number | false | | endTime | Number | false | | recvWindow | Number | false | <details> <summary>Output</summary> ```js { "depositList": [ { "insertTime": 1508198532000, "amount": 0.04670582, "asset": "ETH", "status": 1 } ], "success": true } ``` </details> #### 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) | | startTime | Number | false | | endTime | Number | false | | recvWindow | Number | false | <details> <summary>Output</summary> ```js { "withdrawList": [ { "amount": 1, "address": "0x6915f16f8791d0a1cc2bf47c13a6b2a92000504b", "asset": "ETH", "applyTime": 1508198532000, "status": 4 }, ], "success": true } ``` </details> #### withdraw Triggers the withdraw process (_untested for now_). ```js console.log( await client.withdraw({ asset: 'ETH', address: '0xfa97c22a03d8522988c709c24283c0918a59c795', amount: 100, }), ) ``` | Param | Type | Required | Description | | ---------- | ------ | -------- | -------------------------- | | asset | String | true | | address | String | true | | amount | Number | true | | name | String | false | Description of the address | | recvWindow | Number | false | <details> <summary>Output</summary> ```js { "msg": "success", "success": true } ``` </details> #### depositAddress Retrieve the account deposit address for a specific asset. ```js console.log(await client.depositAddress({ asset: 'NEO' })) ``` | Param | Type | Required | Description | | ----- | ------ | -------- | -------------- | | asset | String | true | The asset name | <details> <summary>Output</summary> ```js { address: 'AM6ytPW78KYxQCmU2pHYGcee7GypZ7Yhhc', addressTag: '', asset: 'NEO', success: true, } ``` </details> #### tradeFee Retrieve the account trade Fee per asset. ```js console.log(await client.tradeFee()) ``` <details> <summary>Output</summary> ```js { tradeFee: [{ symbol: 'BTC', maker: 0.0001, taker: 0.0001, }, { symbol: 'LTC', maker: 0.0001, taker: 0.0001, } ...], success: true, } ``` </details> #### capitalConfigs Get information of coins (available for deposit and withdraw) for user. ```js console.log(await client.capitalConfigs()) ``` <details> <summary>Output</summary> ```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' } ] ``` </details> #### capitalDepositAddress Fetch deposit address with network. ```js console.log(await client.capitalDepositAddress({ coin: 'NEO' })) ``` | Param | Type | Required | Description | | -------- | ------ | -------- | ---------------- | | coin | String | true | The coin name | | network | String | false | The network name | <details> <summary>Output</summary> ```js { address: 'AM6ytPW78KYxQCmU2pHYGcee7GypZ7Yhhc', coin: 'NEO', tag: '', url: 'https://neoscan.io/address/AM6ytPW78KYxQCmU2pHYGcee7GypZ7Yhhc' } ``` </details> #### 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 | true | <details> <summary>Output</summary> ```js { tranId:13526853623 } ``` </details> #### 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 | true | <details> <summary>Output</summary> ```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 } ] } ``` </details> ### Margin #### 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 | <details> <summary>Output</summary> ```js { "tranId": 100000001 //transaction id } ``` </details> #### 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 | <details> <summary>Output</summary> ```js { "tranId": 100000001 //transaction id } ``` </details> #### 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 | <details> <summary>Output</summary> ```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" } ``` </details> #### 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 | <details> <summary>Output</summary> ```js { "amount": "1.69248805", // account's currently max borrowable amount with sufficient system availability "borrowLimit": "60" // max borrowable amount limited by the account level } ``` </details> #### 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 | <details> <summary>Output</summary> ```js { "success": true, "symbol": "BTCUSDT" } ``` </details> #### 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 | <details> <summary>Output</summary> ```js { //transaction id "tranId": 100000001 } ``` </details> #### 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 | <details> <summary>Output</summary> ```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 } ``` </details> ### Futures Authenticated REST endpoints #### futuresGetOrder Check an order's status. - These orders will not be found - order status is CANCELED or EXPIRED, <b>AND</b> - order has NO filled trade, <b>AND</b> - 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 <b>orderId</b> or <b>origClientOrderId</b> must be sent. ```js console.log( await client.futuresGetOrder({ symbol: 'BNBETH', orderId: 50167927, }) ) ``` <details> <summary>Output</summary> ```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 } ``` </details> #### futuresAllOrders Get all account orders; active, canceled, or filled. - These orders will not be found - order status is CANCELED or EXPIRED, <b>AND</b> - order has NO filled trade, <b>AND</b> - created time + 7 days < current time | Name | Type | Mandatory | Description | | ----------------- | ------ | -------- | ----