{"id":21638843,"url":"https://github.com/gemsgame/kucoin-futures-node-api","last_synced_at":"2026-05-18T22:02:01.594Z","repository":{"id":125473750,"uuid":"385059495","full_name":"GemsGame/kucoin-futures-node-api","owner":"GemsGame","description":"modificated  api for kucco project","archived":false,"fork":false,"pushed_at":"2021-09-27T10:03:28.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T02:48:17.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GemsGame.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-11T21:57:13.000Z","updated_at":"2021-09-27T10:03:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"61a37e1a-1bf4-4420-8e18-b47d3a419777","html_url":"https://github.com/GemsGame/kucoin-futures-node-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Fkucoin-futures-node-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Fkucoin-futures-node-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Fkucoin-futures-node-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GemsGame%2Fkucoin-futures-node-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GemsGame","download_url":"https://codeload.github.com/GemsGame/kucoin-futures-node-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244338994,"owners_count":20437167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T04:12:08.967Z","updated_at":"2026-05-18T22:01:56.533Z","avatar_url":"https://github.com/GemsGame.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kucoin-futures-node-api\n\nJust a KuCoin Futures API version of https://github.com/escwdev/kucoin-node-api/. \n\n## Installation\n\n`npm install kucoin-futures-node-api`\n\nAlternatively, you can clone/download the repository and import into your project by file path.\n\n## Getting Started\n\nTo begin using the API wrapper, require it, create a config object that contains your API key, Secret key and Passphrase provided by Kucoin. Create an instantiation of the class then run the custom init() function with your config object as a parameter. If you are only using Public endpoints, the config object only requires the environment key/value pair. \n\nExample code is as follows:\n\n```javascript \nconst api = require('./kucoin-futures-node-api')\n\nconst config = {\n  apiKey: 'xXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxXXX',\n  secretKey: 'xxxxxxxxXXXXXXXXXXXXXxxXXXXXXXXXXXXXxxxXXX',\n  passphrase: 'xxxxxx',\n  environment: 'live'\n}\n\nconst apiLive = new api()\napiLive.init(config)\n```\n\n## Using the API Wrapper\n\nOnce the API wrapper object is created, you can call any of the associated functions. They will return a Promise which can be utlized with .then/.catch or async/await. Note that the Promise based approach will return directly whereas the async/await approach requires calling the function.\n\nSimple example:\n\n```javascript\n// Promise based approach for getting account information (private \u0026 signed)\napiLive.getAccountOverview().then((r) =\u003e {\n  console.log(r.data)\n}).catch((e) =\u003e {\n  console.log(e))\n})\n\n// Async/Await get account info example (private \u0026 signed)\nasync function getAccountOverview() {\n  try {\n    let r = await apiLive.getAccountOverview()\n    console.log(r.data)\n  } catch(err) {\n    console.log(err)\n  } \n}\n```\n\nThis approach allows for more complex multi-call asynchronous functionality, especially useful for automated trading.\n\n## Market Endpoint (Public)\n\nPublic endpoints do not require an API Key, Secret Key or API Passphrase. \n\n```javascript\n/* \n  Get Order Info. of the Contract\n  GET /api/v1/contracts\n  symbol = string [optional]\n*/\napiLive.getContract(symbol)\n```\n\n```javascript\n/* \n  Get Open Contract List\n  GET /api/v1/contracts\n  symbol = string [optional]\n*/\napiLive.getAllContracts()\n```\n\n```javascript\n/*  \n  Get Ticker\n  GET /api/v1/ticker\n  symbol = string\n*/\napiLive.getTicker(symbol)\n```\n\n```javascript\n/* \n  Get Full Order Book - Level 2 (aggregated)\n  see details at: https://docs.kucoin.com/futures/#get-full-order-book-level-2\n  GET /api/v1/level2/snapshot?symbol=\u003csymbol\u003e\n  symbol = string\n*/\napiLive.getFullOrderBook(symbol)\n```\n\n```javascript\n/* \n  Get Part Order Book (aggregated) \n  GET /api/v1/level2/depth20?symbol=\u003csymbol\u003e\n  GET /api/v1/level2/depth100?symbol=\u003csymbol\u003e\n  params = {\n    amount: integer (20 || 100) \n    symbol: string\n  }\n*/\napiLive.getPartOrderBook(params)\n```\n\n```javascript\n/* \n  Level 2 Pulling Messages\n  see details at: https://docs.kucoin.com/futures/#level-2-pulling-messages\n  GET /api/v1/level2/message/query\n  params = {\n    symbol: string\n    start: long\n    end\t: long\n  }\n*/\napiLive.pullMessagesLvl2(params)\n```\n\n```javascript\n/* \n  Get Full Order Book (atomic) \n  GET /api/v2/level3/snapshot?symbol=\u003csymbol\u003e\n  symbol = string\n*/\napiLive.getFullOrderBookAtomic(symbol)\n```\n\n```javascript\n/* \n  Level 3 Pulling Messages\n  see details at: https://docs.kucoin.com/futures/#level-3-pulling-messages\n  GET /api/v1/level3/snapshot\n  params = {\n    symbol: string\n    start: long\n    end\t: long\n  }\n*/\napiLive.pullMessagesLvl3(params)\n```\n\n```javascript\n/* \n  List the last 100 trades for a symbol\n  GET /api/v1/trade/history?symbol=\u003csymbol\u003e\n  symbol = string\n*/\napiLive.getTradeHistories(symbol)\n```\n\n```javascript\n/* \n  Get Interest Rate List\n  GET /api/v1/interest/query\n  params = {\n    symbol = string\n    startAt = long (unix time) [optional]\n    endAt = long (unix time) [optional]\n    reverse = boolean [optional, default: true]\n    offset = long [optional]\n    forward = boolean [optional, default: true]\n    maxCount = int [optional, default: 10]\n  }\n*/\napiLive.getInterestRate(params)\n```\n\n```javascript\n/* \n  Get Index List\n  GET /api/v1/index/query\n  params = {\n    symbol = string\n    startAt = long (unix time) [optional]\n    endAt = long (unix time) [optional]\n    reverse = boolean [optional, default: true]\n    offset = long [optional]\n    forward = boolean [optional, default: true]\n    maxCount = int [optional, default: 10]\n  }\n*/\napiLive.getIndexList(params)\n```\n\n```javascript\n/* \n  Get Current Mark Price\n  GET /api/v1/mark-price/{symbol}/current\n  symbol = string\n*/\napiLive.getMarkPrice(symbol)\n```\n\n```javascript\n/* \n  Get Premium Index\n  GET /api/v1/index/query\n  params = {\n    symbol = string\n    startAt = long (unix time) [optional]\n    endAt = long (unix time) [optional]\n    reverse = boolean [optional, default: true]\n    offset = long [optional]\n    forward = boolean [optional, default: true]\n    maxCount = int [optional, default: 10]\n  }\n*/\napiLive.getPremiumIndex(params)\n```\n\n```javascript\n/* \n  Get Current Funding Rate\n  GET /api/v1/funding-rate/{symbol}/current\n  symbol = string\n*/\napiLive.getFundingRate(symbol)\n```\n\n```javascript\n/* \n  Server Time\n  GET /api/v1/timestamp\n*/\napiLive.getServerTime() \n```\n\n```javascript\n/* \n  Get Klines\n  GET /api/v1/kline/query\n  params = {\n    symbol: string [Required]\n    granularity: int [Required] - Granularity (minute)\n    startAt: long (unix time) [Optional]\n    endAt: long (unix time) [Optional]\n  }\n*/\napiLive.getKlines(params) \n```\n\n## User Endpoints (Private)\n```javascript\n/* \n  Get Account Overview\n  GET /api/v1/account-overview\n  params = {\n    currency: string [optional, default: XBT]\n  }\n*/\napiLive.getAccountOverview(params)\n```\n\n```javascript\n/* \n  Get Transaction History, see: https://docs.kucoin.com/futures/#get-transaction-history\n  GET /api/v1/transaction-history\n  params = {\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n    type: string [optional]\n    offset: long [optional]\n    maxCount: long [optional, default: 50]\n    currency: string [optional]\n    forward: boolean [optional, default: True]\n  }\n*/\napiLive.getTransactionHist(params)\n```\n\n```javascript\n/* \n  Get Deposit Address\n  GET /api/v1/deposit-address?currency=\u003ccurrency\u003e\n  params = {\n    currency: string\n  }\n*/\napiLive.getDepositAddress(params)\n```\n\n```javascript\n/* \n  Get Deposit List\n  GET /api/v1/deposit-list\n  params = {\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n    status: string [optional]\n    currency: string [optional]\n  }\n*/\napiLive.getDepositList(params)\n```\n\n```javascript\n/* \n  Get Withdrawal Quotas\n  GET /api/v1/withdrawals/quotas\n  params = {\n    currency: string\n  }\n*/\napiLive.getWithdrawalQuotas(params)\n```\n\n```javascript\n/* \n  Withdraw Funds\n  POST /api/v1/withdrawals\n  params = {\n    currency: string\n    address: string\n    amount: number\n    isInner: boolean [optional]\n    remark: string [optional]\n    chain: string [optional, default: ERC20]\n    memo: string [optional]\n  }\n*/\napiLive.applyForWithdrawal(params)\n```\n\n```javascript\n/*  \n  Get Withdrawals List\n  GET /api/v1/withdrawal-list\n  params = {\n    status: string [optional]\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n    currency: string [optional]\n  }\n*/\napiLive.getWithdrawalsList(params)\n```\n\n```javascript\n/* \n  Cancel Withdrawal\n  DELETE /api/v1/withdrawals/\u003cwithdrawalId\u003e\n  params = {\n    withdrawalId: string\n  }\n*/\napiLive.cancelWithdrawal(params)\n```\n\n```javascript\n/* \n  Transfer Funds\n  POST /api/v2/transfer-out\n  params = {\n    bizNo: string\n    amount: number\n    currency: string\n  }\n*/\napiLive.transferFunds(params)\n```\n\n```javascript\n/*  \n  Get Transfer List\n  GET /api/v1/transfer-list\n  params = {\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n    status: string [optional]\n    currency: string\n  }\n*/\napiLive.getTransferList(params)\n```\n\n```javascript\n/* \n  Cancel Withdrawal\n  DELETE /api/v1/cancel/transfer-out\n  params = {\n    applyId: string\n  }\n*/\napiLive.cancelWithdrawal(params)\n```\n\n## Trade Endpoints (Private)\n\n```javascript\n/* \n  Place a new order\n  POST /api/v1/orders\n  Details for market order vs. limit order and params see https://docs.kucoin.com/futures/#place-a-new-order\n  General params\n  params = {\n    clientOid: string - Unique order id created by users to identify their orders\n    side: string ['buy' || 'sell]\n    symbol: string - a valid contract code. e.g. XBTUSDM\n    type: string [optional] - Either limit or market\n    leverage: string - Leverage of the order\n    remark: string [optional] - remark for the order, length cannot exceed 100 utf8 characters\n    stop: string [optional] - Either down or up. Requires stopPrice and stopPriceType to be defined\n    stopPriceType: string [optional] - Either TP, IP or MP, Need to be defined if stop is specified.\n    stopPrice: string [optional] - Need to be defined if stop is specified.\n    reduceOnly: boolean [optional, default: false] - A mark to reduce the position size only\n    closeOrder: boolean [optional, default: false] - A mark to close the position\n    forceHold: boolean [optional, default: false] -  A mark to forcely hold the funds for an order\n    \n    LIMIT ORDER PARAMETERS\n    price: string - Limit price\n    size: Integer - Order size\n    timeInForce: string [optional, default is GTC] - GTC, IOC. read: https://docs.kucoin.com/futures/#time-in-force\n    postOnly: boolean [optional] - Post only flag, invalid when timeInForce is IOC\n    hidden: boolean [optional] - Orders not displaying in order book\n    iceberg: boolean [optional]\n    visibleSize: Integer [optional]\n\n    MARKET ORDER PARAMETERS\n    size: Integer [optional] - amount of contract to buy or sell\n  }\n*/\napiLive.placeOrder(params)\n```\n\n```javascript\n/* \n  Cancel an order (including a stop order)\n  DELETE /api/v1/orders/\u003corder-id\u003e\n  params = {\n    id: order-id\n  }\n*/\napiLive.cancelOrder(params)\n```\n\n```javascript\n/* \n  Cancel all open orders (excluding stop orders)\n  DELETE /api/v1/orders\n  params = {\n    symbol: string [optional]\n  }\n*/\napiLive.cancelAllOrders(params)\n```\n\n```javascript\n/* \n  Cancel all untriggered stop orders\n  DELETE /api/v1/stopOrders\n  params = {\n    symbol: string [optional] - Cancel all untriggered stop orders for a specific contract only\n  }\n*/\napiLive.cancelAllStopOrders(params)\n```\n\n```javascript\n/* \n  List your current orders\n  GET /api/v1/orders\n  params = {\n    status: string [optional, default: done, alt: active]\n    symbol: string [optional]\n    side: string [optional, 'buy' || 'sell]\n    type: string [optional, limit || market || limit_stop || market_stop]\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n  }\n*/\napiLive.getOrders(params) \n```\n\n```javascript\n/* \n  Get the un-triggered stop orders list.\n  GET /api/v1/stopOrders\n  params = {\n    symbol: string [optional]\n    side: string [optional, 'buy' || 'sell]\n    type: string [optional, limit || market]\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n  }\n*/\napiLive.getStopOrders(params)\n```\n\n```javascript\n/* \n  Get a list of recent 1000 orders in the last 24 hours.\n  GET /api/v1/recentDoneOrders\n*/\napiLive.getRecentOrders()\n```\n\n```javascript\n/* \n  Get a single order by order id (including a stop order)\n  GET /api/v1/orders/\u003corder-id\u003e?clientOid=\u003cclient-order-id\u003e\n  params = {\n    oid: order-id,\n    cid: client-order-id [optional] - oid (order-id) must be undefined\n  }\n*/\napiLive.getOrderById(params)\n```\n\n```javascript\n/* \n  List Fills\n  GET /api/v1/fills\n  params: {\n    orderId: string [optional]\n    symbol: string [optional]\n    side: string [optional, 'buy' || 'sell]\n    type: string [optional, limit || market || limit_stop || market_stop]\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n  }\n*/\napiLive.listFills(params)\n```\n\n```javascript\n/* \n  List Your Recent Fills: max 1000 fills in the last 24 hours, all symbols\n  GET /api/v1/recentFills\n*/\napiLive.recentFills()\n```\n\n```javascript\n/* \n  Active Order Value Calculation\n  GET /api/v1/openOrderStatistics\n  params: {\n    symbol: string\n  }\n*/\napiLive.listFills(params)\n```\n\n```javascript\n/* \n  Get the position details of a specified position.\n  GET /api/v1/position\n  params: {\n    symbol: string\n  } \n*/\napiLive.getPosition(params)\n```\n\n```javascript\n/* \n  Get all the positions\n  GET /api/v1/positions\n*/\napiLive.getAllPositions()\n```\n\n```javascript\n/* \n  Enable/Disable of Auto-Deposit Margin\n  POST /api/v1/position/margin/auto-deposit-status\n  params = {\n    symbol: string - Symbol of the contract\n    status: boolean - Status\n  }\n*/\napiLive.changeAutoDeposit(params)\n```\n\n```javascript\n/* \n  Add Margin Manually\n  POST /api/v1/position/margin/deposit-margin\n  params = {\n    symbol: string - Ticker symbol of the contract\n    margin: number - Margin amount (min. margin amount≥0.00001667XBT）\n    bizNo: string - A unique ID generated by the user\n  }\n*/\napiLive.addMargin(params)\n```\n\n```javascript\n/* \n  Get V1 Historical Orders List\n  GET /api/v1/funding-history\n  params: {\n    symbol: string\n    startAt: long (unix time) [optional]\n    endAt: long (unix time) [optional]\n    reverse: boolean [optional, default: true]\n    offset: long [optional]\n    forward: boolean [optional, default: true]\n    maxCount: int [optional, default: 10]\n  }\n*/\napiLive.getFundingHistory(params)\n```\n\n## Websockets\n\nThe websocket component of the API wrapper is utilized by initializing websockets based on topics that match Kucoin endpoints. These include:\n\n- 'ticker'\n- 'tickerv2'\n- 'orderbook'\n- 'execution'\n- 'fullMatch'\n- 'depth5'\n- 'depth50' \n- 'market'\n- 'announcement'\n- 'snapshot'\n- 'ordersMarket' (private)\n- 'orders' (private)\n- 'advancedOrders' (private)\n- 'balances' (private)\n- 'position' (private)\n\n\nTo initialize a websocket, provide the paramaters and an event handler. A simple example is as follows:\n\n```javascript\n// Parameters \nparams = {\n  topic: enum (see above)\n  symbols: array (ignored if not required by the endpoint, single array element if single, multiple if desired)\n}\n\n// Public streaming websocket for the orderbook of the provide symbol(s)\napiLive.initSocket({topic: \"orderbook\", symbols: ['KCS-BTC']}, (msg) =\u003e {\n  let data = JSON.parse(msg)\n  console.log(data)\n})\n\n// Private streaming websocket for account balances\napiLive.initSocket({topic: \"balances\"}, (msg) =\u003e {\n  let data = JSON.parse(msg)\n  console.log(data)\n})\n```\n\nThe event handler can be programmed to manipulate/store the returned websocket stream data as desired.\n\n[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC) ![Language: Javascript](https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge\u0026logo=javascript\u0026logoColor=black) ![Framework: Node.JS](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge\u0026logo=node-dot-js\u0026logoColor=white)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemsgame%2Fkucoin-futures-node-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgemsgame%2Fkucoin-futures-node-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemsgame%2Fkucoin-futures-node-api/lists"}