UNPKG

cryptocom

Version:

Methods for crypto.com API

424 lines (327 loc) 14.2 kB
# Cryptocom A wrapper for the Crypto.com REST API. Uses promises. For more information on the API and parameters for requests visit https://exchange-docs.crypto.com # Usage/Example ### Installing: ``` npm i cryptocom ``` ### Initialisation ```js const cryptocom = require("cryptocom"); const cdc = new cryptocom(API_KEY, API_SECRET); //const cdc = new cryptocom(); for only public ``` ## Public Endpoints ### get_instruments() ##### Provides information on all supported symbols (e.g. BTC_USDT) ```js cdc.get_instruments().then().catch(); ``` ### get_book(symbol, depth) ##### Fetches the public order book for a particular symbol and depth | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g. BTC_USDT, ETH_CRO, etc. | | depth | number | N | Number of bids and asks to return (up to 150) | ```js cdc.get_book("BTC_USDT", 10).then().catch(); ``` ### get_ticker(symbol) ##### Fetches the public tickers for an symbol (e.g. BTC_USDT). ##### symbol can be omitted to show tickers for all symbol | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | N | e.g. BTC_USDT, ETH_CRO, etc. | ```js cdc.get_ticker("BTC_USDT").then().catch(); ``` ### get_candlestick(interval, symbol) ##### Retrieves candlesticks (k-line data history) over a given period for an instrument (e.g. BTC_USDT) | Param | Type | Required | Description | | --- | --- | --- | --- | | interval | string | Y | See below* | | symbol | string | Y | e.g. BTC_USDT, ETH_CRO, etc. | ###### *Period can be: 1m : one minute 5m : five minutes 15m : 15 minutes 30m: 30 minutes 1h : one hour 4h : 4 hours 6h : 6 hours 12h : 12 hours 1D : one day 7D : one week 14D : two weeks 1M : one month ```js cdc.get_candlestick("5m", "BTC_USDT").then().catch(); ``` ### get_trades(symbol) ##### Fetches the public trades for a particular symbol ##### symbol can be omitted to show tickers for all symbol | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | N | e.g. BTC_USDT, ETH_CRO, etc. | ```js cdc.get_trades("BTC_USDT").then().catch(); ``` ### create_withdrawal(currency, amount, address, options) ##### Creates a withdrawal request. Withdrawal setting must be enabled for your API Key ##### If you do not see the option when viewing your API Key, this feature is not yet available for you. | Param | Type | Required | Description | | --- | --- | --- | --- | | currency | string | Y | e.g. BTC, CRO | | amount | decimal | Y | amount to withdraw | | address | string | Y | withdrawal address | | options | object | N | see table below | *Withdrawal addresses must first be whitelisted in your account’s Withdrawal Whitelist page. *Withdrawal fees and minimum withdrawal amount can be found on the Fees & Limits page on the Exchange website. ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | client_wid | string | N | Client withdrawal ID | | address_tag | string | N | Secondary address identifier for coins like XRP, XLM etc. Also known as memo or tags. | ```js let options = { client_wid: "my_withdrawal_002", address_tag: "1234567" } cdc.create_withdrawal("XRP", 10, "0x23...", options).then().catch(); ``` ### get_withdrawal_history(options) ##### Fetches withdrawal history. Withdrawal setting must be enabled for your API Key ##### If you do not see the option when viewing your API Key, this feature is not yet available for you. | Param | Type | Required | Description | | --- | --- | --- | --- | | options | object | N | see table below | *Withdrawal addresses must first be whitelisted in your account’s Withdrawal Whitelist page. *Withdrawal fees and minimum withdrawal amount can be found on the Fees & Limits page on the Exchange website. ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | currency | string | N | E.g. BTC, CRO | | start_ts | long | N | timestamp is in milliseconds. Default is 90 days from current timestamp | | end_ts | string | N | timestamp is in milliseconds. Default is current timestamp | | page_size | int | N | Page size (Default: 20, Max: 200) | | page | int | N | Page number (0-based) | | status | string | N | e.g. "0" (see below*) | ###### *Available Statuses: 0 - Pending 1 - Processing 2 - Rejected 3 - Payment In-progress 4 - Payment Failed 5 - Completed 6 - Cancelled ```js let options = { currency: "CRO", page: "3", status: "5" } cdc.get_withdrawal_history(options).then().catch(); ``` ## Private Endpoints ### Spot Trading ### account(currency) ##### Returns the account balance of a user for a particular token | Param | Type | Required | Description | | --- | --- | --- | --- | | currency | string | N | Specific currency, e.g. CRO. Omit for 'all' | ```js cdc.account("CRO").then().catch(); ``` ### limit_buy(symbol, price, quantity, options) and limit_sell(symbol, price, quantity, options) ##### Create Limit buy and sell orders *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | price | number | Y | Unit price | | quantity | number | Y | Order Quantity to buy | | options | object | N | see table below | ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | client_oid | string | N | Client order ID | | time_in_force | string | N | GOOD_TILL_CANCEL (Default)/ FILL_OR_KILL / IMMEDIATE_OR_CANCEL | | exec_inst | string | N | POST_ONLY / leave empty | ```js let options = { client_oid: "my_order_01" } cdc.limit_buy("CRO_USDT", "0.06466", 5000, options).then().catch(); // Will buy 5000 CRO IF price reaches 0.06466 USDT let options_2 = { client_oid: "my_order_02", time_in_force: "FILL_OR_KILL" } cdc.limit_sell("CRO_USDT", "0.06766", 5000, options_2).then().catch(); // Will sell 5000 CRO IF price reaches 0.06766 USDT ``` ### market_buy(symbol, notional, options) ##### Create market buy order *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | notional | number | Y | Amount to spend | | client_oid | string | N | Client order ID | ```js cdc.market_buy("CRO_USDT", 20, "my_order").then().catch(); // Buys CRO for 20 USDT at current market price ``` ### market_sell(symbol, quantity, options) ##### Create market sell order *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | quantity | number | Y | Quantity to be Sold | | client_oid | string | N | Client order ID | ```js cdc.market_sell("CRO_USDT", 5000, "my_order").then().catch(); // Sells 5000 CRO at current market price ``` ### stop_loss_buy(symbol, notional, trigger_price, client_oid) ##### Create stop-loss market buy order *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | notional | number | Y | Amount to spend | | trigger_price | number | Y | Dictates when order will be triggered | | client_oid | string | N | Client order ID | ```js cdc.stop_loss_buy("CRO_USDT", 20, "0.00009", "my_order").then().catch(); // Buys CRO usding 20 USDT at current market price IF CRO price reaches 0.00009 USDT ``` ### stop_loss_sell(symbol, quantity, trigger_price, client_oid) ##### Create stop-loss market sell order *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | quantity | number | Y | Quantity to be Sold | | trigger_price | number | Y | Dictates when order will be triggered | | client_oid | string | N | Client order ID | ```js cdc.stop_loss_buy("CRO_USDT", 5000, "0.00009", "my_order").then().catch(); // Sells 5000 CRO at current market price IF CRO price reaches 0.00009 USDT ``` ### stop_limit_buy(symbol, price, quantity, trigger_price, options) and stop_limit_sell(symbol, price, quantity, trigger_price, options) ##### Create stop-loss limit buy or sell order *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | price | number | Y | Unit price | | quantity | number | Y | Quantity to Buy | | trigger_price | number | Y | Dictates when order will be triggered | | options | object | N | see table below | ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | client_oid | string | N | Client order ID | | time_in_force | string | N | GOOD_TILL_CANCEL (Default)/ FILL_OR_KILL / IMMEDIATE_OR_CANCEL | | exec_inst | string | N | POST_ONLY / leave empty | ```js let options = { client_oid: "my_order_02", time_in_force: "FILL_OR_KILL" } cdc.stop_limit_buy("CRO_USDT", "0.06579", 5000, "0.06579", options).then().catch(); // Buys 5000 CRO at 0.06579 or cheaper price IF CRO price is greater or equal to 0.06579 USDT let options_2 = { client_oid: "my_order_02", time_in_force: "FILL_OR_KILL" } cdc.stop_limit_sell("CRO_USDT", "0.06579", 5000, "0.06579", options_2).then().catch(); // Sells 5000 CRO at 0.06579 or higher price IF CRO price is smaller or equal to 0.06579 USDT ``` ### cancel_order(symbol, order_id) ##### Cancels an existing order on the Exchange (asynchronous) *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | | order_id | string | Y | ID of order to be cancelled | ```js cdc.cancel_order("CRO_USDT", "1164074220874569090").then().catch(); ``` ### cancel_all_orders(symbol) ##### Cancels all orders for a particular instrument/pair (asynchronous) *This call is asynchronous, so the response is simply a confirmation of the request. | Param | Type | Required | Description | | --- | --- | --- | --- | | symbol | string | Y | e.g., ETH_CRO, BTC_USDT | ```js cdc.cancel_all_orders("CRO_USDT").then().catch(); ``` ### get_order_history(options) ##### Gets the order history for a particular instrument | Param | Type | Required | Description | | --- | --- | --- | --- | | options | object | N | see table below | ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | instrument_name | string | N | e.g. ETH_CRO, BTC_USDT. Omit for 'all' | | start_ts | long | N | Start timestamp (milliseconds since the Unix epoch) - defaults to 24 hours ago | | end_ts | long | N | End timestamp (milliseconds since the Unix epoch) - defaults to 'now' | | page_size | int | N | Page size (Default: 20, max: 200) | | page | int | N | Page number (0-based) | ```js cdc.get_order_history().then().catch();//with defaults let options = { instrument_name: "CRO_USDT", start_ts: "1612529644978", page: 2 } cdc.get_order_history(options).then().catch(); //with options ``` *The maximum duration between start_ts and end_ts is 24 hours. You will receive an INVALID_DATE_RANGE error if the difference exceeds the maximum duration. For users looking to pull longer historical order data, users can create a loop to make a request for each 24-period from the desired start to end time. ### get_open_orders(options) ##### Gets all open orders for a particular instrument | Param | Type | Required | Description | | --- | --- | --- | --- | | options | object | N | see table below | ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | instrument_name | string | N | e.g. ETH_CRO, BTC_USDT. Omit for 'all' | | page_size | int | N | Page size (Default: 20, max: 200) | | page | int | N | Page number (0-based) | ```js cdc.get_open_orders().then().catch();//get all oopen orders let options = { instrument_name: "CRO_USDT", } cdc.get_order_history(options).then().catch(); //get open orders for CRO_USDT pair ``` ### get_order_details(order_id) ##### Gets details on a particular order ID | Param | Type | Required | Description | | --- | --- | --- | --- | | order_id | string | Y | Order ID | ```js cdc.get_order_details("1164074220874569090").then().catch(); ``` ### get_trades(options) ##### Gets all executed trades for a particular instrument. | Param | Type | Required | Description | | --- | --- | --- | --- | | options | object | N | see table below | ##### Options: | Param | Type | Required | Description | | --- | --- | --- | --- | | instrument_name | string | N | e.g. ETH_CRO, BTC_USDT. Omit for 'all' | | start_ts | long | N | Start timestamp (milliseconds since the Unix epoch) - defaults to 24 hours ago | | end_ts | long | N | End timestamp (milliseconds since the Unix epoch) - defaults to 'now' | | page_size | int | N | Page size (Default: 20, max: 200) | | page | int | N | Page number (0-based) | ```js cdc.get_trades().then().catch();//with defaults let options = { instrument_name: "CRO_USDT", page: 3 } cdc.get_trades(options).then().catch(); //get excuted trades for CRO_USDT pair ``` *The maximum duration between start_ts and end_ts is 24 hours. You will receive an INVALID_DATE_RANGE error if the difference exceeds the maximum duration. For users looking to pull longer historical trade data, users can create a loop to make a request for each 24-period from the desired start to end time.