openapi: 3.0.3 info: title: Crypto.com Exchange API v1 version: 1.0.0 description: "## Welcome\n\nWelcome to the Crypto.com Exchange API v1 reference documentation.\n\nThe Crypto.com Exchange API v1 provides developers with a **REST** and **WebSocket** API. The majority of API calls are available across both mediums in the **same** request and response formats, allowing smooth transition and a reduced learning curve between the two platforms.\n\nThe majority of API calls are available across both mediums in the same request and response formats, allowing smooth transition and a reduced learning curve between the two platforms.\n\nWhere applicable, all API calls come with detailed information on both the request and response parameters, all in a simple JSON format, as well as sample requests and code snippets in JavaScript, Python which can be viewed on the right.\n\n### Notes on Exchange Upgrade and API Versions\n\n- Exchange v1 API is the latest version of API which can trade Spot / Derivatives / Margin.\n- Derivatives v1 API has been upgraded into Exchange v1 API with additional capabilities for Spot Trading / Margin Trading / Wallet Management. As Exchange v1 API is a superset of Derivatives v1 API, existing customer can continue using the same for trading.\n- For full details about the exchange upgrade, please refer to this (blog post)[https://crypto.com/product-news/introducing-the-gen-3-0-crypto-com-exchange] with FAQ documents.\n\n## Breaking Change Schedule\n\n- On 2025-12-17 8:00 UTC, \n The current trigger order creation/cancellation will be migrated to Advanced Order Management API.\n\n- On 2025-02-27 8:00 UTC, \n For `book.{instrument_name}.{depth}`, the full snapshot subscription (`book_subscription_type=SNAPSHOT`) `100ms` frequency is removed. \n Customers wishing to continue with the faster `100ms` frequency should switch to the delta subscription (`book_subscription_type=SNAPSHOT_AND_UPDATE`). \n This higher performing subscription benefits the user with reduced bandwidth/processing compared to the snapshot subscription. \n For a transition period, users subscribing to the removed `100ms` snapshot will receive the `500ms` subscription.\n\n The `book.{instrument_name}` subscription (default depth) will be removed. \n Customers should use the explicit `book.{instrument_name}.{depth}` subscription and specify the required depth.\n\n For a transition period, users subscribing to the removed subscription will receive the default `50` depth subscription.\n\n- These changes will take place around 17 December 2023 8:00 UTC.\n\n- Market Data wildcard ticker subscription will be removed. Users should use the instrument specific subscription.\n\n## Change Log\n\n- **2026-05-21**\n - `public/get-instruments` response updated, new field `product_type` was added\n - Trading Bot API section was added:\n `private/bot/create-trading-bot` (DCA, TWAP, GRID, FUNDING_ARBITRAGE)\n `private/bot/terminate-trading-bot`\n `private/bot/update-trading-bot`\n `private/bot/pause-trading-bot`\n `private/bot/resume-trading-bot`\n `private/bot/get-trading-bots`\n `private/bot/get-trading-bot-executions`\n- **2026-05-07**\n - Advanced Order Management API section was updated for DerivAttach\n - `private/advanced/create-oto` and `private/advanced/create-otoco` — contingency type is now resolved from instrument type: spot instruments create SPOT_ATTACH, derivative instruments create DERIV_ATTACH. DerivAttach supports `isolation_id`, `leverage`, `isolated_margin_amount` on the primary leg and `ISOLATED_MARGIN` in `exec_inst`. Trigger legs inherit isolation mode from the parent.\n - `private/advanced/create-order` — `attach_order_id` now applies to both SpotAttach and DerivAttach. New optional field `attach_isolation_id` for DerivAttach attach-to-position (derivatives only).\n - `private/advanced/cancel-oto` and `private/advanced/cancel-otoco` — updated to cover both SPOT_ATTACH and DERIV_ATTACH.\n - `private/advanced/cancel-all-orders` — new optional field `position_type` (CROSS_MARGIN, ISOLATED_MARGIN).\n - `private/advanced/get-open-orders`, `private/advanced/get-order-detail`, `private/advanced/get-order-history`, and `user.advance.order` — response attributes extended with `exchange_order_id`, `ref_price`, `ref_price_type`, `reject_reason`, `attach_isolation_id`, `isolation_id`, `isolation_type`, `leverage`, `isolated_margin_amount`. `contingency_type` now includes DERIV_ATTACH.\n - `private/advanced/amend-order` — corrected required/optional flags: `new_price` is Y, `new_quantity` is Y, `new_ref_price` is N.\n- **2026-04-29**\n - Fee Credits\n - `private/get-fee-credit-balances` was added\n - `private/get-trades` response updated, new field `fee_credits` was added\n - `user.trade.{instrument_name}` response updated, new field `fee_credits` was added\n- **2026-04-07**\n - `private/get-accounts` response updated, new field `hierarchy` was added\n- **2026-04-01**\n - `private/create-order` request updated, `REDUCE_ONLY` was added to `exec_inst`\n- **2026-01-08**\n - Add support for isolated position\n - `private/create-isolated-margin-transfer` was added\n - `private/change-isolated-margin-leverage` was added\n - `private/user-balance` response updated, new fields `total_isolated_cash_balance` and `isolated_positions` were added\n - `private/user-balance-history` response updated, new field `i` was added\n - `private/get-subaccount-balances` response updated, new fields `total_isolated_cash_balance` and `isolated_positions` were added\n - `private/get-positions` response updated, new fields `isolation_id` and `isolation_type` were added\n - `private/create-order` request updated, new optional fields `isolation_id`, `leverage`, `isolated_margin_amount` were added, `exec_inst` added support for `ISOALTED_MARGIN`\n - `private/close-position` request updated, new optional field `isolation_id` was added\n - `private/get-open-orders` response updated, new fields `isolation_id` and `isolation_type` were added\n - `private/get-order-detail` response updated, new fields `isolation_id` and `isolation_type` were added\n - `private/get-order-history` request updated, new optional field `isolation_id` was added, response updated, new fields `isolation_id` and `isolation_type` were added\n - `private/get-trades` request updated, new optional field `isolation_id` was added, response updated, new fields `isolation_id` and `isolation_type` were added\n - `private/get-transactions` request updated, new optional field `isolation_id` was added, response updated, new fields `isolation_id` and `isolation_type` were added\n - `user.order.{instrument_name}` response updated, new fields `isolation_id` and `isolation_type` were added\n - `user.trade.{instrument_name}` response updated, new fields `isolation_id` and `isolation_type` were added\n - `user.balance` response updated, new fields `total_isolated_cash_balance` and `isolated_positions` were added\n - `user.positions` response updated, new fields `isolation_id`, `leverage`, `isolation_type`, `liquidation_price` and `isolated_margin_balance` were added\n - `user.account_risk` response updated, new fields `total_isolated_cash_balance`, `isolated_positions` were added\n - `user.position_balance` response updated, new field `isolated_positions` was added\n- **2025-03-26**\n - `transaction_time` was added into `user.order.{instrument_name}`\n- **2025-11-18**\n - `public/get-risk-parameters` was added new columns\n- **2025-10-16**\n - `Advanced Order Management API` section was updated\n- **2025-07-17**\n - `private/fiat/fiat-deposit-info` was added\n - `private/fiat/fiat-deposit-history` was added\n - `private/fiat/fiat-withdraw-history` was added\n - `private/fiat/fiat-create-withdraw` was added\n - `private/fiat/fiat-get-bank-accounts` was added\n - `private/fiat/fiat-transaction-quota` was added\n - `private/fiat/fiat-transaction-limit` was added\n- **2025-07-04**\n - `private/create-order` exec_inst was added `SMART_POST_ONLY`\n - `private/create-order-list (LIST)` exec_inst was added `SMART_POST_ONLY`\n - `private/get-open-orders` exec_inst was added `SMART_POST_ONLY`\n - `private/get-order-detail` was added, exec_inst was added `SMART_POST_ONLY`\n - `private/get-order-history` exec_inst was added `SMART_POST_ONLY`\n- **2025-06-10**\n - `private/amend-order` was added\n - `public/get-announcements` was added\n- **2025-05-29**\n - transaction_time_ns field was added into `user.order.{instrument_name}` response\n- **2025-03-14**\n - Removed deprecated attributes system_label in `private/get-accounts`\n- **2025-03-06**\n - Removed deprecated `book.{instrument_name}` default book subscription\n - Removed deprecated 100ms interval from full snapshot `book.{instrument_name}.{depth}` book subscription\n- **2025-03-04**\n - Remove section: `Unified Wallet and System Label`\n- **2025-01-27**\n - `book.{instrument_name}.{depth}` - The following additional update frequencies are now supported: \n Full snapshot subscription (`book_subscription_type=SNAPSHOT`) `500ms` \n Delta subscription (`book_subscription_type=SNAPSHOT_AND_UPDATE`) `100ms`\n- **2024-12-11**\n - `private/create-order` fee_instrument_name was added\n- **2024-10-02**\n - `public/get-risk-parameters` was added\n- **2024-08-15**\n - `private/get-fee-rate` was added\n - `private/get-instrument-fee-rate` was added\n- **2024-07-12**\n - Staking API added: \n `private/staking/stake` \n `private/staking/unstake` \n `private/staking/get-staking-position` \n `private/staking/get-staking-instruments` \n `private/staking/get-open-stake` \n `private/staking/get-stake-history` \n `private/staking/get-reward-history` \n `private/staking/convert` \n `private/staking/get-open-convert` \n `private/staking/get-convert-history` \n `public/staking/get-conversion-rate`\n- **2024-06-27**\n - `private/create-order` self-trade prevent (STP) was added\n - `private/create-order-list (LIST)` self-trade prevent (STP) was added\n- **2024-02-12**\n - `public/get-trades`, `trade.{instrument_name}` subscription, clarification for the public trade side field\n - Side is the side of the taker order\n - `book.{instrument_name}.{depth}` clarifications for book delta sequence number handling and re-subscription\n- **2024-01-04**\n - Market data websocket subscription enhancements:\n - `book.{instrument_name}` - The `subscription` result value is now explicit \n e.g. previous `\"subscription\": \"book.BTC_USD\"` -> new `\"subscription\": \"book.BTC_USD.50\"`\n - `book.{instrument_name}.{depth}` - For delta updates, the fixed 500ms delta full book snapshot heartbeat is replaced with empty delta in the case of no book changes\n - `ticker` - Documented existing 'bs' and 'ks' fields (bid/ask size)\n - `settlement` - For wildcard subscription, the `subscription` result value is now explicit \n e.g. previous `\"subscription\": \"settlement\"` -> new `\"subscription\": \"settlement.BTCUSD-231124\"`\n - Applied consistent field ordering for all market data subscriptions (`book`, `ticker`, `trade`, `candlestick`, `index`, `mark`, `settlement`, `funding`, `estimatedfunding`). \n Result fields are always in the following order: \n `id, method, code, instrument_name, subscription, channel`\n - Market data REST `public/get-trades`\n - Added additional `tn` nanoseconds timestamp field to the trade response\n - Clarified timestamp pagination parameters\n- **2023-12-18**\n - Market Data wildcard ticker subscription removed. Users should use the instrument specific subscription.\n- **2023-12-11**\n - Introduced Market Data subscription limiting. Refer to Market Data Websocket Subscription Limits for more details\n- **2023-10-31**\n - `user.balance`, `private/user-balance` will be updated: \n 1. Existing field total_margin_balance will represent new margin balance calculation without haircut. \n 2. Existing field total_initial_margin previously is made up of position IM only. On effective date, this field will represent the total sum of total_position_im + total_haircut \n 3. New field total_position_im will be introduced to represent initial margin requirement to support open positions and orders \n 4. New field total_haircut will be introduced to represent the total haircut on eligible collateral token assets. Refer to [Smart Cross Margin Enhancement Guide](https://static2.crypto.com/exchange/assets/documents/Exchange%20Smart%20Cross%20Margin%20Enhancement%20Guide%202023.pdf) for details\n - `user.balance`, `user.account_risk`, `private/user-balance`, `private/get-subaccount-balances` will be updated: \n 1. New field collateral_eligible will be introduced to indicate if token is eligible Collateral \n 2. collateral_weight will be deprecated \n 3. New field haircut will be introduced to show haircut of eligible collateral token instead of collateral Weight. Refer to [Smart Cross Margin Enhancement Guide](https://static2.crypto.com/exchange/assets/documents/Exchange%20Smart%20Cross%20Margin%20Enhancement%20Guide%202023.pdf) for details\n- **2023-08-11**\n - `private/create-order-list (LIST)` for batch order creation added\n - `private/cancel-order-list (LIST)` for batch order cancel added\n- **2023-07-31**\n - Market Data Websocket Subscriptions is effective:\n - `funding.{instrument_name}` - channel will return the fixed hourly rate that will settle at the end of the hour.\n - `estimatedfunding.{instrument_name}` - channel will return the estimated hourly rate that will begin in the next interval.\n - Added new \"funding_rate\" and \"estimated_funding_rate\" valuation types for public/get-valuations\n- **2023-06-28**\n - `private/get-deposit-history` added\n - `private/get-withdrawal-history` added\n- **2022-11-30**\n - Support using `client_oid` to query in `private/get-order-detail` REST API\n- **2022-11-10**\n - `USD_Stable_Coin` (aka USD Bundle), will be renamed as `USD`. Customer can test the change in UAT from 2022-11-10 before the change is effective in PROD. Target date for PROD is TBD.\n - Customer can input both `USD` and `USD_Stable_Coin` to mean the same USD Bundle.\n - However, on response, `USD` will be used to mean USD Bundle, instead of `USD_Stable_Coin`.\n- **2022-10-31**\n - Added `private/create-order-list`, `private/create-subaccount-transfer` REST APIs\n - Added `user.account_risk` and `user.position_balance` WebSocket subscriptions\n - Added more `period` in `public/get-candlestick` `candlestick.{time_frame}.{instrument_name}` WebSocket subscription\n- **2022-09-21** - Added **Unified Wallet and System Label** section, to illustrate the transition from multiple wallets into unified wallet.\n- **2022-09-21** - Added new sub-account management endpoints: `private/get-accounts`, `private/create-subaccount-transfer`\n- **2022-09-21** - Added new exchange wallet management endpoints: `private/create-withdrawal`, `private/get-deposit-address`, `private/get-curency-networks`\n- **2022-09-21** - First publish, based on Derivative Exchange API v1.\n\n## Common API References\n\n### Naming Conventions\n\n- All **methods and URLs** in **dash-case**\n- All **parameters** in **snake_case**\n- **Enums** in full **UPPERCASE** and **snake_case**\n\n### Generating the API Key\n\nBefore sending any requests, generate a new API key on the Exchange website under **User Center** → **API**. Note down:\n\n- **API Key**\n- **Secret Key**\n\nDefault settings are \"Can Read\" only; you can add or remove permissions via the Web UI. You may optionally specify a whitelist of IP addresses; if set, the API can only be used from those IPs.\n\n### REST API Root Endpoints\n\nREST API requests must be sent with **Content-Type: application/json**.\n\n| Environment | REST API |\n|-------------|----------|\n| **UAT Sandbox** | `https://uat-api.3ona.co/exchange/v1/{method}` |\n| **Production** | `https://api.crypto.com/exchange/v1/{method}` |\n\n### Websocket Root Endpoints\n\n| Environment | Websocket (User API) |\n|-------------|----------|\n| **UAT Sandbox** | `wss://uat-stream.3ona.co/exchange/v1/user` |\n| **Production** | `wss://stream.crypto.com/exchange/v1/user` |\n\n| Environment | Websocket (Market Data) |\n|-------------|----------|\n| **UAT Sandbox** | `wss://uat-stream.3ona.co/exchange/v1/market` |\n| **Production** | `wss://stream.crypto.com/exchange/v1/market` |\n\n### Rate Limits\n\n#### REST API\n\nFor authenticated calls, rate limits are per API method, per API key:\n\n| Method | Limit |\n|--------|-------|\n| `private/create-order`,
`private/cancel-order`,
`private/cancel-all-orders` | 15 requests per 100ms each |\n| `private/get-order-detail` | 30 requests per 100ms |\n| `private/get-trades` | 1 request per second |\n| `private/get-order-history` | 1 request per second |\n| All others | 3 requests per 100ms each |\n\nFor public market data calls, rate limits are per API method, per IP address:\n\n| Method | Limit |\n|--------|-------|\n| All | 100 requests per second each |\n\n#### Staking\n\n| Method | Limit |\n|--------|-------|\n| All | 50 requests per second each |\n\n#### Websocket\n\n| Method | Limit |\n|--------|-------|\n| User API | 150 requests per second |\n| Market Data | 100 requests per second |\n\n### Request Format\n\nThe following information applies to both REST API and websockets commands:\n\n| Name | Type | Required | Description |\n|------|------|----------|-------------|\n| id | long | Y | Request identifier (0 to 9,223,372,036,854,775,807). Response echoes the same id. |\n| method | string | Y | The method to be invoked (e.g. `private/get-order-detail`). |\n| params | object | Y | Parameters for the method. Use `{}` when a method has no parameters. |\n| api_key | string | Depends | API key. Required for **private** methods (see Digital Signature). |\n| sig | string | Depends | Digital signature. Required for **private** methods. |\n| nonce | long | Y | Current timestamp in **milliseconds** since the Unix epoch. |\n\n**⚠️ All numbers must be strings, and must be wrapped in double quotes. e.g. \"12.34\", instead of 12.34.**\n\n### Digital Signature\n\nFor REST API, only private methods require a digital signature (as `sig`) and API key (as `api_key`) to be passed in. These private endpoints are only accessible by authenticated users.\n\nFor WebSocket (User API), the `public/auth` command has to be invoked once per session, with the digital signature (as `sig`) and API key (as `api_key`) as part of the request. Once authenticated, you will gain access to user-specific commands and no longer need to pass in the digital signature and API key for the duration of the session.\n\nThe authentication is based on the pairing of the API Key, along with the HMAC-SHA256 hash of the request parameters using the API Secret as the cryptographic key.\n\n**⚠️ You should NEVER explicitly include the API Secret Key in plain-text in your request**\n\nThe algorithm for generating the HMAC-SHA256 signature is as follows:\n\n1. If \"params\" exist in the request, sort the request parameter keys in ascending order.\n2. Combine all the ordered parameter keys as key + value (no spaces, no delimiters). Let's call this the parameter string\n3. Next, do the following: method + id + api_key + parameter string + nonce\n4. Use HMAC-SHA256 to hash the above using the API Secret as the cryptographic key\n5. Encode the output as a hex string -- this is your Digital Signature\n\nSince all parameters for calculating the HMAC-SHA256 hash are present in the request except the API Secret, the server-side will independently calculate the Digital Signature as well, and if done correctly, the computed hashes will match.\n\nBesides, for JavaScript client calling `private/get-order-detail` API, it is highly recommended to use STRING format of `order_id` in the JSON request payload, in order to guarantee the correctness of Digital Signature.\n\n#### JavaScript Example\n\n```javascript\nconst crypto = require(\"crypto-js\");\n\nconst signRequest = (request_body, api_key, secret) => {\n const { id, method, params, nonce } = request_body;\n\n function isObject(obj) { \n return obj !== undefined && obj !== null && obj.constructor == Object; \n }\n function isArray(obj) { \n return obj !== undefined && obj !== null && obj.constructor == Array; \n }\n function arrayToString(obj) { \n return obj.reduce((a,b) => { return a + (isObject(b) ? objectToString(b) : (isArray(b) ? arrayToString(b) : b)); }, \"\"); \n }\n function objectToString(obj) { \n return (obj == null ? \"\" : Object.keys(obj).sort().reduce((a, b) => { \n return a + b + (isArray(obj[b]) ? arrayToString(obj[b]) : (isObject(obj[b]) ? objectToString(obj[b]) : obj[b])); \n }, \"\")); \n }\n\n const paramsString = objectToString(params);\n\n const sigPayload = method + id + api_key + paramsString + nonce;\n request_body.sig = crypto.HmacSHA256(sigPayload, secret).toString(crypto.enc.Hex);\n\n return request_body;\n};\n\nconst apiKey = \"token\"; /* User API Key */\nconst apiSecret = \"secretKey\"; /* User API Secret */\n\nlet request = {\n id: \"11\",\n method: \"private/get-order-detail\",\n api_key: apiKey,\n params: {\n order_id: \"53287421324\"\n },\n nonce: \"1587846358253\",\n};\n\nconst requestBody = JSON.stringify(signRequest(request, apiKey, apiSecret));\n```\n\n#### Python Example\n\n```python\nimport hmac\nimport hashlib\nimport time\n\nAPI_KEY = \"API_KEY\"\nSECRET_KEY = \"SECRET_KEY\"\n\nreq = {\n \"id\": \"14\",\n \"method\": \"private/create-order-list\",\n \"api_key\": API_KEY,\n \"params\": {\n \"contingency_type\": \"LIST\",\n \"order_list\": [\n {\n \"instrument_name\": \"ONE_USDT\",\n \"side\": \"BUY\",\n \"type\": \"LIMIT\",\n \"price\": \"0.24\",\n \"quantity\": \"1.0\"\n },\n {\n \"instrument_name\": \"ONE_USDT\",\n \"side\": \"BUY\",\n \"type\": \"STOP_LIMIT\",\n \"price\": \"0.27\",\n \"quantity\": \"1.0\",\n \"trigger_price\": \"0.26\"\n }\n ]\n },\n \"nonce\": str(int(time.time() * 1000))\n}\n\n# First ensure the params are alphabetically sorted by key\nparam_str = \"\"\n\nMAX_LEVEL = 3\n\n\ndef params_to_str(obj, level):\n if level >= MAX_LEVEL:\n return str(obj)\n\n return_str = \"\"\n for key in sorted(obj):\n return_str += key\n if obj[key] is None:\n return_str += 'null'\n elif isinstance(obj[key], list):\n for subObj in obj[key]:\n return_str += params_to_str(subObj, level + 1)\n else:\n return_str += str(obj[key])\n return return_str\n\n\nif \"params\" in req:\n param_str = params_to_str(req['params'], 0)\n\npayload_str = req['method'] + str(req['id']) + req['api_key'] + param_str + str(req['nonce'])\n\nreq['sig'] = hmac.new(\n bytes(str(SECRET_KEY), 'utf-8'),\n msg=bytes(payload_str, 'utf-8'),\n digestmod=hashlib.sha256\n).hexdigest()\n```\n\n#### C# Example\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\n\nprivate const string API_KEY = \"YOUR_API_KEY\";\nprivate const string API_SECRET = \"YOUR_API_SECRET\";\n\nprivate static string GetSign(Dictionary request)\n{\n var paramsDict = request[\"params\"] as Dictionary;\n\n // Ensure the params are alphabetically sorted by key\n // Note: For nested objects or lists, implement recursive sorting similar to JS/Python examples\n string paramString = paramsDict != null\n ? string.Join(\"\", paramsDict.Keys.OrderBy(key => key).Select(key => key + paramsDict[key]))\n : \"\";\n\n string sigPayload = request[\"method\"].ToString()\n + request[\"id\"].ToString()\n + API_KEY\n + paramString\n + request[\"nonce\"].ToString();\n\n using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(API_SECRET)))\n {\n var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(sigPayload));\n return BitConverter.ToString(hash).Replace(\"-\", \"\").ToLowerInvariant();\n }\n}\n```\n\n#### Java Example\n\n```java\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport lombok.AllArgsConstructor;\nimport lombok.Builder;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport java.util.Map;\n\n@Data\n@Builder\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ApiRequestJson {\n private Long id;\n private String method;\n private Map params;\n private String sig;\n\n @JsonProperty(\"api_key\")\n private String apiKey;\n\n private Long nonce;\n}\n\n//------------\n\nimport java.math.BigDecimal;\nimport java.nio.charset.StandardCharsets;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.TreeMap;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport org.apache.commons.codec.binary.Hex;\n\npublic class SigningUtil {\n\n private static final String HMAC_SHA256 = \"HmacSHA256\";\n private static final int MAX_LEVEL = 3;\n\n public static boolean verifySignature(ApiRequestJson apiRequestJson, String secret) {\n try {\n return genSignature(apiRequestJson, secret).equalsIgnoreCase(apiRequestJson.getSig());\n } catch (Exception e) {\n return false;\n }\n }\n\n @SuppressWarnings(\"unchecked\")\n public static String getParamString(final Object paramObject) {\n StringBuilder sb = new StringBuilder();\n appendParamString(sb, paramObject, 0);\n return sb.toString();\n }\n\n\n @SuppressWarnings(\"unchecked\")\n private static void appendParamString(final StringBuilder paramsStringBuilder, final Object paramObject, final int level) {\n if (level >= MAX_LEVEL) {\n paramsStringBuilder.append(paramObject.toString());\n return;\n }\n\n if (paramObject instanceof Map) {\n TreeMap params = new TreeMap<>((Map) paramObject);\n for (Map.Entry entry : params.entrySet()) {\n if (entry.getValue() instanceof Double) {\n paramsStringBuilder\n .append(entry.getKey())\n .append((new BigDecimal(entry.getValue().toString()))\n .stripTrailingZeros()\n .toPlainString());\n } else if (entry.getValue() instanceof List || entry.getValue() instanceof Map) {\n paramsStringBuilder\n .append(entry.getKey());\n appendParamString(paramsStringBuilder, entry.getValue(), level + 1);\n } else {\n paramsStringBuilder\n .append(entry.getKey())\n .append(entry.getValue());\n }\n }\n } else if (paramObject instanceof List) {\n List list = (List) paramObject;\n for (Object o : list) {\n appendParamString(paramsStringBuilder, o, level + 1);\n }\n } else {\n paramsStringBuilder.append(paramObject.toString());\n }\n }\n\n public static String genSignature(ApiRequestJson apiRequestJson, String secret)\n throws NoSuchAlgorithmException, InvalidKeyException {\n final byte[] byteKey = secret.getBytes(StandardCharsets.UTF_8);\n Mac mac = Mac.getInstance(HMAC_SHA256);\n SecretKeySpec keySpec = new SecretKeySpec(byteKey, HMAC_SHA256);\n mac.init(keySpec);\n\n String paramsString = \"\";\n\n if (apiRequestJson.getParams() != null) {\n paramsString += getParamString(apiRequestJson.getParams());\n }\n\n String sigPayload =\n apiRequestJson.getMethod()\n + apiRequestJson.getId()\n + apiRequestJson.getApiKey()\n + paramsString\n + (apiRequestJson.getNonce() == null ? \"\" : apiRequestJson.getNonce());\n\n byte[] macData = mac.doFinal(sigPayload.getBytes(StandardCharsets.UTF_8));\n\n return Hex.encodeHexString(macData);\n }\n\n public static ApiRequestJson sign(ApiRequestJson apiRequestJson, String secret)\n throws InvalidKeyException, NoSuchAlgorithmException {\n apiRequestJson.setSig(genSignature(apiRequestJson, secret));\n\n return apiRequestJson;\n }\n\n public static void main(String[] argv) throws InvalidKeyException, NoSuchAlgorithmException {\n ApiRequestJson apiRequestJson = ApiRequestJson.builder()\n .id(11L)\n .apiKey(\"token\")\n .method(\"public/auth\")\n .nonce(1589594102779L)\n .build();\n\n System.out.println(genSignature(apiRequestJson, \"secretKey\"));\n\n System.out.println(sign(apiRequestJson, \"secretKey\"));\n\n }\n}\n```\n\n### Response Format\n\n| Name | Type | Description |\n|------|------|-------------|\n| id | long | Original request identifier (or -1 if omitted in request). |\n| method | string | Method invoked. |\n| result | object | Result object (present on success). |\n| code | int | 0 for success; see Response and Reason Codes |\n| message | string | Optional; server or error message. |\n| original | string | Optional; original request as escaped string (for error cases). |\n\n### Response and Reason Codes\n\n#### 200 OK\n\n| HTTP Status | Code | Message Code / Description |\n|-------------|------|----------------------------|\n| 200 | 0 | --:

Success |\n| 200 | 40401 | NOT_FOUND:

Not found |\n| 200 | 43012 | SELF_TRADE_PREVENTION:

Canceled due to Self Trade Prevention |\n\n#### 400 Bad Request\n\n| HTTP Status | Code | Message Code / Description |\n|-------------|------|----------------------------|\n| 400 | 202 | ACCOUNT_IS_SUSPENDED:

Account is suspended |\n| 400 | 204 | DUPLICATE_CLORDID:

Duplicate client order id |\n| 400 | 207 | NO_MARK_PRICE:

No mark price |\n| 400 | 208 | INSTRUMENT_NOT_TRADABLE:

Instrument is not tradable |\n| 400 | 209 | INVALID_INSTRUMENT:

Instrument is invalid |\n| 400 | 213 | INVALID_ORDERQTY:

Invalid order quantity |\n| 400 | 218 | INVALID_ORDTYPE:

Invalid order_type |\n| 400 | 220 | INVALID_SIDE:

Invalid side |\n| 400 | 221 | INVALID_TIF:

Invalid time_in_force |\n| 400 | 222 | STALE_MARK_PRICE:

Stale mark price |\n| 400 | 223 | NO_CLORDID:

No client order id |\n| 400 | 224 | REJ_BY_MATCHING_ENGINE:

Rejected by matching engine |\n| 400 | 225 | EXCEED_MAXIMUM_ENTRY_LEVERAGE:

Exceeds maximum entry leverage |\n| 400 | 226 | INVALID_LEVERAGE:

Invalid leverage |\n| 400 | 227 | INVALID_SLIPPAGE:

Invalid slippage |\n| 400 | 228 | INVALID_FLOOR_PRICE:

Invalid floor price |\n| 400 | 229 | INVALID_REF_PRICE:

Invalid ref price |\n| 400 | 230 | INVALID_REF_PRICE_TYPE:

Invalid ref price type |\n| 400 | 308 | INVALID_PRICE:

Invalid price |\n| 400 | 314 | EXCEEDS_MAX_ORDER_SIZE:

Exceeds max order size |\n| 400 | 315 | FAR_AWAY_LIMIT_PRICE:

Far away limit price |\n| 400 | 318 | EXCEEDS_MAX_ALLOWED_ORDERS:

Exceeds max allowed orders |\n| 400 | 319 | EXCEEDS_MAX_POSITION_SIZE:

Exceeds max position size |\n| 400 | 401 | ACCOUNT_DOES_NOT_EXIST:

Account does not exist |\n| 400 | 408 | MARGIN_UNIT_IS_SUSPENDED:

Margin unit is suspended |\n| 400 | 30024 | MAX_AMOUNT_VIOLATED:

If create-withdrawal call quantity > max_withdrawal_balance in user-balance api |\n| 400 | 40001 | BAD_REQUEST:

Bad request |\n| 400 | 40002 | METHOD_NOT_FOUND:

Method not found |\n| 400 | 40003 | INVALID_REQUEST:

Invalid request |\n| 400 | 40004 | MISSING_OR_INVALID_ARGUMENT:

Required argument is blank or missing |\n| 400 | 40005 | INVALID_DATE:

Invalid date |\n| 400 | 40006 | DUPLICATE_REQUEST:

Duplicate request received |\n| 400 | 40102 | INVALID_NONCE:

Nonce value differs by more than 60 seconds |\n| 400 | 40107 | EXCEED_MAX_SUBSCRIPTIONS:

Session subscription limit has been exceeded |\n| 400 | 50001 | ERR_INTERNAL:

Internal error |\n| 400 | 50002 | DW_CREDIT_LINE_NOT_MAINTAINED:

If create-withdrawal call breaches credit line check |\n\n#### 401 Unauthorized\n\n| HTTP Status | Code | Message Code / Description |\n|-------------|------|----------------------------|\n| 401 | 40101 | UNAUTHORIZED:

Not authenticated, or key/signature incorrect |\n| 401 | 40103 | IP_ILLEGAL:

IP address not whitelisted |\n| 401 | 40104 | USER_TIER_INVALID:

Disallowed based on user tier |\n\n#### 408 Request Timeout\n\n| HTTP Status | Code | Message Code / Description |\n|-------------|------|----------------------------|\n| 408 | 40801 | REQUEST_TIMEOUT:

Request has timed out |\n\n#### 429 Too Many Requests\n\n| HTTP Status | Code | Message Code / Description |\n|-------------|------|----------------------------|\n| 429 | 42901 | TOO_MANY_REQUESTS:

Requests have exceeded rate limits |\n\n#### 500 Internal Server Error\n\n| HTTP Status | Code | Message Code / Description |\n|-------------|------|----------------------------|\n| 500 | 201 | NO_POSITION:

No position |\n| 500 | 203 | ACCOUNTS_DO_NOT_MATCH:

Accounts do not match |\n| 500 | 205 | DUPLICATE_ORDERID:

Duplicate order id |\n| 500 | 206 | INSTRUMENT_EXPIRED:

Instrument has expired |\n| 500 | 210 | INVALID_ACCOUNT:

Account is invalid |\n| 500 | 211 | INVALID_CURRENCY:

Currency is invalid |\n| 500 | 212 | INVALID_ORDERID:

Invalid order id |\n| 500 | 214 | INVALID_SETTLE_CURRENCY:

Invalid settlement currency |\n| 500 | 215 | INVALID_FEE_CURRENCY:

Invalid fee currency |\n| 500 | 216 | INVALID_POSITION_QTY:

Invalid position quantity |\n| 500 | 217 | INVALID_OPEN_QTY:

Invalid open quantity |\n| 500 | 219 | INVALID_EXECINST:

Invalid exec_inst |\n| 500 | 301 | ACCOUNT_IS_IN_MARGIN_CALL:

Account is in margin call |\n| 500 | 302 | EXCEEDS_ACCOUNT_RISK_LIMIT:

Exceeds account risk limit |\n| 500 | 303 | EXCEEDS_POSITION_RISK_LIMIT:

Exceeds position risk limit |\n| 500 | 304 | ORDER_WILL_LEAD_TO_IMMEDIATE_LIQUIDATION:

Order will lead to immediate liquidation |\n| 500 | 305 | ORDER_WILL_TRIGGER_MARGIN_CALL:

Order will trigger margin call |\n| 500 | 306 | INSUFFICIENT_AVAILABLE_BALANCE:

Insufficient available balance |\n| 500 | 307 | INVALID_ORDSTATUS:

Invalid order status |\n| 500 | 309 | MARKET_IS_NOT_OPEN:

Market is not open |\n| 500 | 310 | ORDER_PRICE_BEYOND_LIQUIDATION_PRICE:

Order price beyond liquidation price |\n| 500 | 311 | POSITION_IS_IN_LIQUIDATION:

Position is in liquidation |\n| 500 | 312 | ORDER_PRICE_GREATER_THAN_LIMITUPPRICE:

Order price is greater than the limit up price |\n| 500 | 313 | ORDER_PRICE_LESS_THAN_LIMITDOWNPRICE:

Order price is less than the limit down price |\n| 500 | 316 | NO_ACTIVE_ORDER:

No active order |\n| 500 | 317 | POSITION_NO_EXIST:

Position does not exist |\n| 500 | 320 | EXCEEDS_INITIAL_MARGIN:

Exceeds initial margin |\n| 500 | 321 | EXCEEDS_MAX_AVAILABLE_BALANCE:

Exceeds maximum available balance |\n| 500 | 406 | ACCOUNT_IS_NOT_ACTIVE:

Account is not active |\n| 500 | 407 | MARGIN_UNIT_DOES_NOT_EXIST:

Margin unit does not exist |\n| 500 | 409 | INVALID_USER:

Invalid user |\n| 500 | 410 | USER_IS_NOT_ACTIVE:

User is not active |\n| 500 | 411 | USER_NO_DERIV_ACCESS:

User does not have derivative access |\n| 500 | 412 | ACCOUNT_NO_DERIV_ACCESS:

Account does not have derivative access |\n| 500 | 415 | BELOW_MIN_ORDER_SIZE:

Below Min. Order Size |\n| 500 | 501 | EXCEED_MAXIMUM_EFFECTIVE_LEVERAGE:

Exceeds maximum effective leverage |\n| 500 | 604 | INVALID_COLLATERAL_PRICE:

Invalid collateral price |\n| 500 | 605 | INVALID_MARGIN_CALC:

Invalid margin calculation |\n| 500 | 606 | EXCEED_ALLOWED_SLIPPAGE:

Exceed allowed slippage |\n| 500 | 613 | INVALID_ISOLATION_ID:

Invalid isolation ID |\n| 500 | 614 | EXCEEDS_ISOLATED_POSITION_LIMIT:

Exceeds maximum allowed number of isolated position |\n| 500 | 615 | ACCOUNT_DOES_NOT_SUPPORT_ISOLATED_POSITION:

Account does not support isolated position |\n| 500 | 616 | CREATE_ISOLATED_POSITION_FAILED:

Failed to create isolated position |\n| 500 | 617 | DUPLICATED_INSTRUMENT_ORDER_FOR_ISOLATED_MARGIN:

Account already have isolated position with same instrument |\n| 500 | 618 | TOO_MANY_PENDING_ISOLATED_MARGIN_REQUESTS:

Exceeds request limit for isolated margin order |\n| 500 | 619 | UNSUPPORTED_OPERATION_ON_ISOLATED_POSITION:

Unsupported operation on isolated position |\n| 500 | 620 | CREATE_ISOLATED_POSITION_TIMEOUT:

Request for create isolated position has timed out |\n| 400 | 1110 | REDUCE_ONLY_REJECTED:

Rejected REDUCE_ONLY create-order request |\n| 500 | 43003 | FILL_OR_KILL:

FOK order has not been filled and cancelled |\n| 500 | 43004 | IMMEDIATE_OR_CANCEL:

IOC order has not been filled and cancelled |\n| 500 | 43005 | POST_ONLY_REJ:

Rejected POST_ONLY create-order request (normally happened when exec_inst contains POST_ONLY but time_in_force is NOT GOOD_TILL_CANCEL) |\n| 500 | 120009 | REJECTED:

Request rejected by upstream service |\n| 500 | 130008 | NON_APPLICABLE:

Operation not applicable for current state |\n\n### Websocket Termination Codes\n\n| Code |\tDescription |\n|------|--------------|\n| 1000 | Normal disconnection by server, usually when the heartbeat isn't handled properly |\n| 1006 | Abnormal disconnection |\n| 1013 | Server restarting -- try again later |\n\n### Error Response Format\n\nDue to the asynchronous nature of websocket requests, a robust and consistent error response is crucial in order to match the response with the request.\n\nTo ensure API consistency for websocket error responses, if the `id` and `method` is omitted in the original request, `id` will have a value of `-1` and `method` will have a value of ERROR.\n\nThe original request will be returned as an escaped string in the `original` field.\n\n### Common Issues\n\n#### TOO_MANY_REQUESTS After Websocket Connects\n\nWebsocket rate limits are pro-rated based on the calendar-second that the websocket connection was opened.\n\nThis means, depending on the fraction of the calendar-second that the connection was established, the rate limit could be pro-rated to a small number.\n\nBy adding a 1-second sleep after establishing the websocket connection, and before requests are sent, this will ensure the rate limit is properly reset and sync'd to your session.\n\nThis will avoid occurrences of rate-limit (TOO_MANY_REQUESTS) errors.\n\n#### INVALID_NONCE On All Requests\n\nThe nonce should be the UTC Unix timestamp in milliseconds.\n\nIf this has been carefully checked, then the issue occurs when the system clock of the client machine is greater than 60 seconds in the future / past.\n\nUsually, re-syncing with the NTP time server on the client machine will correct the issue.\n\nIf the issue persists, you can try deliberately subtracting N seconds from the nonce to force it to be N seconds in the past, which is still within the 60-second past tolerance.\n" servers: - url: https://api.crypto.com/exchange/v1 description: Production - url: https://uat-api.3ona.co/exchange/v1 description: UAT Sandbox tags: - name: Reference and Market Data x-slug: reference-and-market-data x-deploy-envs-by-business-units: fcm: - local - develop - staging description: | Reference and market data endpoints provide public, unauthenticated access to instrument metadata, real-time market data, and historical pricing information. These endpoints form the foundation for price discovery, order book analysis, and trading decision workflows. ## Core Data Types ### Instrument Reference Data Use [`public/get-instruments`](/docs/api/rest/public-get-instruments) to retrieve the full catalog of tradable instruments. Each instrument includes: - Contract specifications (tick size, quantity decimals, leverage limits) - Product classification (perpetual swap, future, option) - Trading status and expiry information - Underlying index reference This endpoint should be called on application startup and periodically refreshed to detect new listings or contract expirations. ### Real-Time Market Data | Endpoint | Use Case | Update Frequency | |----------|----------|------------------| | [`public/get-book`](/docs/api/rest/public-get-book) | Order book depth (bids/asks) | Snapshot on request (up to 50 levels) | | [`public/get-tickers`](/docs/api/rest/public-get-tickers) | 24h summary (high, low, volume, open interest) | Updated per trade | | [`public/get-trades`](/docs/api/rest/public-get-trades) | Recent trade history | Last 150 trades (7-day max window) | For low-latency applications, use WebSocket subscriptions instead: - `book.{instrument_name}.{depth}` - Order book updates (10 or 50 levels) - `ticker.{instrument_name}` - Real-time ticker updates - `trade.{instrument_name}` - Trade feed ### Settlement and Expiry [`public/get-expired-settlement-price`](/docs/api/rest/public-get-expired-settlement-price) provides historical settlement prices for expired futures contracts. Use this for post-trade reconciliation and historical PnL calculations. ## Rate Limits Public endpoints share a global rate limit pool. For market data-intensive applications: - Use WebSocket subscriptions instead of polling REST endpoints - Cache `public/get-instruments` responses (updates infrequently) - Batch ticker requests by omitting `instrument_name` to get all tickers in one call ## Typical Integration Flow **Step 1 — Bootstrap Reference Data** Call `public/get-instruments` to load the instrument catalog. Store contract specifications locally. **Step 2 — Subscribe to Market Data** For real-time pricing, establish WebSocket connections and subscribe to: - `book.{instrument_name}.10` - top 10 order book levels - `ticker.{instrument_name}` - 24h summary stats - `trade.{instrument_name}` - trade feed **Step 3 — Polling Fallback** If WebSocket connections are unavailable, poll `public/get-tickers` and `public/get-book` at reasonable intervals (e.g., 1-5 seconds). - name: Account Balance and Positions x-deploy-envs-by-business-units: fcm: - local - develop - staging description: | Retrieve real-time and historical snapshots of wallet balances, open positions, margin requirements, and collateral status. Use these endpoints to monitor account health, risk exposure, and available trading capacity. ## Account Balance The user balance response provides a comprehensive view of the account: - **Available balance** — funds available for new positions and withdrawals - **Margin balance** — total collateral value (cash + collateral-eligible tokens after haircut) - **Initial margin (IM)** — collateral required to open current positions and orders - **Maintenance margin (MM)** — minimum collateral threshold to avoid liquidation - **Position balance** — per-token breakdown showing quantity, market value, haircut rate, and collateral contribution If margin balance falls below maintenance margin, the account enters liquidation. ## Positions The positions endpoint returns all open derivative contracts, including instrument name, quantity (signed to indicate direction), position cost, and session PnL. For real-time mark price, liquidation price, and margin requirements, subscribe to the `user.positions` WebSocket channel. ## Subaccounts Master accounts can create subaccounts to isolate trading activity. Use the subaccount transfer endpoint to move funds between accounts. - name: Trading x-deploy-envs-by-business-units: fcm: - local - develop - staging description: | Private trading endpoints manage order placement and lifecycle. All order operations (create, amend, cancel) are asynchronous — the REST response confirms the request was received, but order lifecycle updates arrive via WebSocket subscriptions. ## Order Management Workflow **Create Order** Call `private/create-order` to submit a new order. The response returns an `order_id` and `client_oid`, but the order may still be pending acceptance by the matching engine. Subscribe to `user.order` or `user.order.{instrument_name}` to receive real-time order status updates. **Amend Order** Call [`private/amend-order`](/docs/api/rest/private-amend-order) to modify price or quantity on an existing order. Behind the scenes, amend performs a cancel-then-create operation. The new order loses queue priority unless you are only reducing quantity. **Cancel Order** Call [`private/cancel-order`](/docs/api/rest/private-cancel-order) to cancel a single order by `order_id` or `client_oid`, or [`private/cancel-all-orders`](/docs/api/rest/private-cancel-all-orders) to cancel all orders for a given instrument. ## Order Types | Type | Description | |------|-------------| | `LIMIT` | Limit order with specified price. Rests on the order book until filled or canceled. | | `MARKET` | Market order that executes immediately at best available price. | For trigger orders (stop-loss, take-profit) and multi-leg strategies (OCO, OTO, OTOCO), see [Advanced Order Management](/docs/api/rest/advanced-order-management). ## Time in Force | Value | Description | |-------|-------------| | `GOOD_TILL_CANCEL` | Order remains active until filled or explicitly canceled. Default for limit orders. | | `IMMEDIATE_OR_CANCEL` | Order fills immediately (partial or full), unfilled portion is canceled. | | `FILL_OR_KILL` | Order must fill entirely and immediately, or the entire order is canceled. | ## Execution Instructions Execution instructions are passed as an array in `exec_inst`. Multiple instructions can be combined. | Instruction | Description | |-------------|-------------| | `POST_ONLY` | Order is rejected if it would take liquidity. Ensures maker fee. | | `SMART_POST_ONLY` | If the order would take liquidity, it is repriced to the best maker level instead of being rejected. | | `REDUCE_ONLY` | Order can only reduce an existing position, not increase or open a new position. | ## Order Statuses | Status | Description | |--------|-------------| | `PENDING` | Order submitted, awaiting processing by the matching engine. | | `NEW` | Order accepted by the matching engine, not yet on the order book. | | `ACTIVE` | Order is live on the order book, waiting to be filled. | | `FILLED` | Order has been completely filled. | | `CANCELED` | Order was canceled (by user request, or by system). | | `EXPIRED` | Order expired due to time-in-force constraints. | | `REJECTED` | Order was rejected (e.g., invalid parameters, risk checks failed). | ## Querying Orders and Trades - [`private/get-open-orders`](/docs/api/rest/private-get-open-orders) — retrieve all currently active orders - [`private/get-order-detail`](/docs/api/rest/private-get-order-detail) — fetch detailed information about a single order - [`private/get-order-history`](/docs/api/rest/private-get-order-history) — retrieve past orders (filled, canceled, or rejected) - [`private/get-trades`](/docs/api/rest/private-get-trades) — retrieve executed trades (fills) ## Real-Time Order and Trade Updates Subscribe to the following WebSocket channels for real-time updates: | Channel | Description | |---------|-------------| | `user.order` | Order lifecycle events across all instruments | | `user.order.{instrument_name}` | Order updates for a specific instrument | | `user.trade` | Trade execution events across all instruments | | `user.trade.{instrument_name}` | Trade execution events for a specific instrument | These subscriptions require authentication and eliminate the need for polling REST endpoints. - name: Advanced Order Management description: | Advanced Order Management provides trigger orders and multi-leg execution strategies beyond basic LIMIT and MARKET orders. Use these endpoints for conditional order execution based on price triggers. ## Trigger Orders Trigger orders activate when a reference price condition is met. Use [`private/advanced/create-order`](/docs/api/rest/private-advanced-create-order) to create trigger orders. | Type | Description | |------|-------------| | `STOP_LOSS` | Converts to a market order when trigger price is reached. Used to limit losses. | | `STOP_LIMIT` | Converts to a limit order when trigger price is reached. Offers price control on stop execution. | | `TAKE_PROFIT` | Market order activated when price moves favorably to the trigger level. Used to lock in gains. | | `TAKE_PROFIT_LIMIT` | Limit order activated when price moves favorably to the trigger level. | Trigger orders require: - `ref_price` — the trigger price - `ref_price_type` — reference price source: `MARK_PRICE` (default), `INDEX_PRICE`, or `LAST_PRICE` ## Multi-Leg Strategies Multi-leg orders link multiple orders together with conditional execution logic. | Strategy | Description | Endpoint | |----------|-------------|----------| | **OCO** (One-Cancels-Other) | Two orders where filling one cancels the other. Typically pairs a take-profit with a stop-loss. | [`private/advanced/create-oco`](/docs/api/rest/private-advanced-create-oco) | | **OTO** (One-Triggers-Other) | Primary order triggers a secondary order when filled. Used to attach TP/SL to an entry order. | [`private/advanced/create-oto`](/docs/api/rest/private-advanced-create-oto) | | **OTOCO** (One-Triggers-OCO) | Primary order triggers an OCO pair when filled. Entry order with both TP and SL attached. | [`private/advanced/create-otoco`](/docs/api/rest/private-advanced-create-otoco) | ## Contingency Types Multi-leg orders use contingency types to define the relationship between legs: | Type | Description | |------|-------------| | `OCO` | One-Cancels-Other: two orders, one cancels when the other fills | | `SPOT_ATTACH` | Attach trigger orders to a spot position | | `DERIV_ATTACH` | Attach trigger orders to a derivatives position (supports isolated margin) | ## Order Management - [`private/advanced/amend-order`](/docs/api/rest/private-advanced-amend-order) — modify trigger price or quantity - [`private/advanced/cancel-order`](/docs/api/rest/private-advanced-cancel-order) — cancel a single advanced order - [`private/advanced/cancel-all-orders`](/docs/api/rest/private-advanced-cancel-all-orders) — cancel all advanced orders for an instrument - [`private/advanced/get-open-orders`](/docs/api/rest/private-advanced-get-open-orders) — retrieve open advanced orders - [`private/advanced/get-order-history`](/docs/api/rest/private-advanced-get-order-history) — retrieve advanced order history ## Real-Time Updates Subscribe to `user.advanced.order` for real-time advanced order lifecycle events. - name: OTC RFQ for Taker x-deploy-envs-by-business-units: fcm: - local - develop - staging dcm: - local - develop - staging - pre - master description: | OTC RFQ (Request For Quote) enables takers to request block trade quotes from multiple liquidity providers, evaluate received quotes, and execute trades at the best available price. This workflow is designed for institutional clients who need to trade large sizes with minimal market impact. ## RFQ Trading Flow **Step 1 — Request a Quote** Call the request-quote endpoint to create a new quote request. Key parameters include: - `cl_quote_req_id` — Client-assigned quote request ID for tracking - `firm_quote` — Whether quotes should be firm (guaranteed execution) or indicative - `settlement_arrangement` — `IMMEDIATE` for instant settlement - `duration` — How long the quote request remains open (milliseconds) - `quote_ttl` — Time-to-live for received quotes (milliseconds) - `leg_list` — Array of instruments to trade (supports multi-leg combo trades) The response returns a `quote_req_id` that identifies this request in subsequent calls. **Step 2 — Monitor Incoming Quotes** As liquidity providers respond to your quote request, you can retrieve quotes via REST polling or WebSocket subscriptions. Each quote includes `bid` and `ask` prices, available quantities, and an expiration time. **WebSocket Subscriptions (Recommended):** Subscribe to real-time quote updates for lower latency: - Quote request status updates - Quote updates from makers - Deal execution updates **Step 3 — Accept a Quote** Call the request-deal endpoint to execute the trade with the best available quote. Required parameters: - `deal_type` — Set to `QUOTE_REQUEST` for RFQ flow - `cl_deal_id` — Client-assigned deal ID for tracking - `quote_id` — The ID of the quote you're accepting - `quote_req_id` — The original quote request ID - `leg_list` — Must match the quote's instrument, price, quantity, and side ## Quote Request Lifecycle | Status | Description | |--------|-------------| | `NEW` | Quote request created, not yet sent to makers | | `ACTIVE` | Quote request sent to makers, awaiting responses | | `COMPLETED` | Quote accepted and deal executed | | `REJECTED` | Quote request rejected | ## Quote Lifecycle | Status | Description | |--------|-------------| | `ACTIVE` | Quote is valid and can be accepted | | `EXPIRED` | Quote has exceeded its TTL | | `CANCELED` | Maker canceled the quote | | `FILLED` | Quote was accepted and executed | ## Deal History Use the deal history endpoint to retrieve executed trades. Deal statuses: | Status | Description | |--------|-------------| | `ACCEPTED` | Deal request accepted by the system. | | `CONFIRMED` | Liquidity provider has executed the deal. | | `SETTLED` | Deal settled and funds transferred. | | `REJECTED` | Deal request rejected (quote expired, insufficient balance, etc.) | ## Best Practices - **Use WebSocket subscriptions** for production systems to receive real-time quote updates - **Monitor quote expiration times** to avoid accepting stale quotes - **Track client IDs** (`cl_quote_req_id`, `cl_deal_id`) for reconciliation and audit purposes - name: Crypto Wallet description: | Manages the user's wallet. Most of the endpoints are only available at master account level. Some endpoints requires Withdrawal setting to be enabled for your API Key. If you do not see the option when viewing your API Keys, this feature is not yet available for you. - name: Fiat Wallet description: | Manages the user's fiat wallet. Most of the endpoints are only available at master account level. Some endpoints requires Withdrawal setting to be enabled for your API Key. If you do not see the option when viewing your API Keys, this feature is not yet available for you. ## Payment Networks and Currencies This section provides a comprehensive reference table of all supported payment network and currency combinations available for use with the Fiat API endpoints. When making API calls to any of the Fiat service endpoints, use the payment network identifiers listed in this table for the payment_network or payment_networks parameters. ### Supported Payment Networks | Payment Network | Currency | |-----------------|----------| | openpayd_exchange_sepa | EUR | | usd_swift | USD | | usd_fedwire | USD | | usd_cubix | USD | | uk_fps | GBP | | aed_ipi | AED | ### Usage Notes Activate the fiat service in your account before using the API. Go to Wallet page and select fiat currency to activate the fiat service. Bank account for USD need to be added in Crypto.com Wallet before using the API. For other currencies, bank account will be created after deposit. When calling Fiat API endpoints, you can specify payment networks in the following ways: - Single Payment Network: `json { "payment_network": "usd_cubix" }` - Multiple Payment Networks (comma-separated): `json { "payment_networks": "usd_cubix, usd_swift" }` Refer to the individual API endpoint documentation above for specific parameter requirements and usage examples. - name: Staking description: | Stake crypto assets on-chain to earn rewards directly from the Exchange. Staking locks your tokens for a period, during which you earn periodic rewards. Liquid staking tokens (e.g., CDCETH) allow you to maintain liquidity while staking. ## Staking Workflow **1. Check Available Instruments** Call [`private/staking/get-staking-instruments`](/docs/api/rest/private-staking-get-staking-instruments) to retrieve the list of tokens available for staking, including minimum stake amounts and reward rates. **2. Stake Tokens** Call [`private/staking/stake`](/docs/api/rest/private-staking-stake) to lock tokens and begin earning rewards. The request is processed asynchronously. **3. Monitor Position** Use [`private/staking/get-staking-position`](/docs/api/rest/private-staking-get-staking-position) to view your total staked balance and [`private/staking/get-open-stake`](/docs/api/rest/private-staking-get-open-stake) to track pending stake requests. **4. Unstake Tokens** Call [`private/staking/unstake`](/docs/api/rest/private-staking-unstake) to unlock staked tokens. Unstaking may involve a waiting period depending on the underlying blockchain protocol. ## Liquid Staking Liquid staking tokens (e.g., CDCETH for staked ETH) represent staked assets and can be traded or held. Use the conversion endpoints to move between staked tokens and liquid staking tokens: - [`public/staking/get-conversion-rate`](/docs/api/rest/public-staking-get-conversion-rate) — get the current conversion rate - [`private/staking/convert`](/docs/api/rest/private-staking-convert) — convert between staked and liquid staking tokens - [`private/staking/get-open-convert`](/docs/api/rest/private-staking-get-open-convert) — track pending conversion requests ## History | Endpoint | Description | |----------|-------------| | [`private/staking/get-stake-history`](/docs/api/rest/private-staking-get-stake-history) | Past stake and unstake requests | | [`private/staking/get-reward-history`](/docs/api/rest/private-staking-get-reward-history) | Earned staking rewards | | [`private/staking/get-convert-history`](/docs/api/rest/private-staking-get-convert-history) | Past conversion requests | - name: Trading Bot API description: | Manage automated trading bots including DCA (Dollar-Cost Averaging), TWAP (Time-Weighted Average Price), GRID, and Funding Arbitrage strategies. ## Bot Types | Type | Description | |------|-------------| | DCA | Dollar-Cost Averaging - automatically buys or sells at regular intervals over a preset time frame | | TWAP | Time-Weighted Average Price - executes large orders by splitting them into smaller slices over a defined time window | | GRID | Grid Trading - automatically places buy and sell orders within a defined price range | | FUNDING_ARBITRAGE | Funding Arbitrage - simultaneously holds a spot position and an opposing perpetual swap position to capture funding rate income | ## Bot States | State | Description | |-------|-------------| | RUNNING | Bot is actively placing orders | | PAUSED | Bot is paused, no new orders will be placed | | TERMINATED | Bot has been terminated | - name: Transaction History description: History will be stored for recent 6 months record only. For records over 6 months, please contact our support team. x-additional-descriptions: - name: Prediction Reference Data slug: prediction-reference-data x-guide: prediction-reference-data tags: - Reference and Market Data location: insert method: guide description: | ## Prediction Reference Data Prediction market instruments contain rich metadata from `public/get-events` and `public/get-instruments` response. This metadata enables partners to build flexible navigation hierarchies tailored to their application's needs. ### Physical Instrument Hierarchy The physical data model consists of two levels: ``` Event (underlying game/match/tournament) └─ Instrument (tradable contract) ``` - Each **Event** groups related instruments under a common `event_symbol`. Event has metadata which allows you to extract League and Year information for higher level grouping, e.g. a Series. - Given an `event_symbol`, you can drill down for associated Instruments. Each **Instrument** represents a single tradable outcome with its own symbol and metadata. You can try [Prediction Instrument Hierarchy Explorer](/prediction-explorer) to visualise the instrument hierarchy. ### Event An **Event** represents a real-world occurrence that can have tradable outcomes — such as a sports match, tournament, election, or other predictable event. Events are returned by `public/get-events` and serve as the grouping level for related instruments. #### Sample Event Response ```json { "symbol": "FIFA-00001-260629-M", "series_symbols": [], "name": "Japan @ Brazil", "description": "Japan @ Brazil", "event_date": 1782766800000000000, "last_updated_time": 1782443710514350000, "event_details": { "metaData": { "NAME": "Japan @ Brazil", "EVENT_DATE": "2026-06-29T17:00:00-04:00", "SPORTS_GROUPING": "SOCCER" }, "eventName": "Japan @ Brazil" } } ``` #### Key Event Fields | Field | Description | Example | |-------|-------------|---------| | `symbol` | Unique event identifier. The prefix indicates the league (e.g., `FIFA`, `MLB`, `UFC`). Use this to query instruments via `public/get-instruments?event_symbol=...` | `"FIFA-00001-260629-M"` | | `event_details.metaData.SPORTS_GROUPING` | Sport category for grouping events. Specific to sports events. | `"SOCCER"`, `"MLB"`, `"ESPORT"`, `"MMA"` | | `event_details.metaData.NAME` | Human-readable event name, typically in "Away @ Home" format for matches | `"Japan @ Brazil"` | | `event_details.metaData.EVENT_DATE` | Event start time in ISO 8601 format. Extract the year component for season-based grouping. | `"2026-06-29T17:00:00-04:00"` | ### Instrument An **Instrument** represents a single tradable option contract tied to a specific outcome of an event. Instruments are returned by `public/get-instruments` and contain rich metadata for building navigation hierarchies and displaying contract details. #### Sample Instrument Response ```json { "id": -1, "method": "public/get-instruments", "code": 0, "result": { "data": [ { "symbol": "NX.F.OPT.FIFA-00001-260714-M.O.1.67.20260830", "inst_type": "BINARY_OPTION", "display_name": "France vs Spain ; Spain (2-Way) ; AT&T Stadium ; 260714", "base_ccy": "USD", "quote_ccy": "USD", "tradable": true, "expiry_timestamp_ms": 1788127200000, "underlying_symbol": "FIFA-00001-260714-M", "event_details": { "metaData": { "NAME": "Spain @ France", "VENUE": "AT&T Stadium", "LEAGUE": "FIFA", "EVENT_DATE": "2026-07-14T19:00:00+00:00", "PARTICIPANT": "Spain", "SPORTS_GROUPING": "SOCCER", "AWAY_PARTICIPANT": "Spain", "HOME_PARTICIPANT": "France", "PREDICT_CATEGORY": "Sports", "PREDICT_EVENT_TYPE": "Game", "PREDICT_MARKET_TYPE": "Game Line", "PREDICT_PERIOD_TYPE": "90 Minutes and Stoppage Time", "PREDICT_OUTCOME_TYPE": "Away", "PREDICT_CONTRACT_TYPE": "Moneyline (2-Way)" }, "eventName": "Spain to win" } }, { "symbol": "NX.F.OPT.FIFA-00001-260714-M.O.1.68.20260830", "inst_type": "BINARY_OPTION", "display_name": "France vs Spain ; France (2-Way) ; AT&T Stadium ; 260714", "base_ccy": "USD", "quote_ccy": "USD", "tradable": true, "expiry_timestamp_ms": 1788127200000, "underlying_symbol": "FIFA-00001-260714-M", "event_details": { "metaData": { "NAME": "Spain @ France", "VENUE": "AT&T Stadium", "LEAGUE": "FIFA", "EVENT_DATE": "2026-07-14T19:00:00+00:00", "PARTICIPANT": "France", "SPORTS_GROUPING": "SOCCER", "AWAY_PARTICIPANT": "Spain", "HOME_PARTICIPANT": "France", "PREDICT_CATEGORY": "Sports", "PREDICT_EVENT_TYPE": "Game", "PREDICT_MARKET_TYPE": "Game Line", "PREDICT_PERIOD_TYPE": "90 Minutes and Stoppage Time", "PREDICT_OUTCOME_TYPE": "Home", "PREDICT_CONTRACT_TYPE": "Moneyline (2-Way)" }, "eventName": "France to win" } } ] } } ``` #### Key Instrument Fields Use these metadata fields to build navigation hierarchies: | Field | Description | Example | |-------|-------------|---------| | `event_details.metaData.PREDICT_CATEGORY` | Top-level category for all prediction markets | `"Sports"`, `"Politics"`, `"Culture"` | | `event_details.metaData.SPORTS_GROUPING` | Sport category (for sports events) | `"SOCCER"`, `"MLB"`, `"ESPORT"`, `"MMA"` | | `event_details.metaData.LEAGUE` | Specific league within the sport | `"FIFA"`, `"EPL"`, `"UCL"`, `"MLS"` | | `event_details.metaData.EVENT_DATE` | Event start time (ISO 8601). Extract year for season grouping. | `"2026-07-14T19:00:00+00:00"` | | `event_details.metaData.NAME` | Human-readable event name in "Away @ Home" format | `"Spain @ France"` | | `event_details.metaData.PREDICT_CONTRACT_TYPE` | Type of contract/market | `"Moneyline (2-Way)"`, `"Spread"`, `"Total Goals"` | | `event_details.metaData.PREDICT_PERIOD_TYPE` | Time period the contract covers | `"90 Minutes and Stoppage Time"`, `"Full Game"`, `"1st Half"` | #### Example Hierarchy Using the fields above, you can, for example, build a three-level navigation hierarchy: | Level | Fields | Example | |-------|--------|---------| | **Series** | `PREDICT_CATEGORY` → `SPORTS_GROUPING` → `LEAGUE` → `YEAR(EVENT_DATE)` | Sports > SOCCER > FIFA > 2026 | | **Event** | `NAME` → `PREDICT_CONTRACT_TYPE` → `PREDICT_PERIOD_TYPE` | Spain @ France > Moneyline (2-Way) > 90 Minutes and Stoppage Time | | **Contract** | The instrument record itself | `NX.F.OPT.FIFA-00001-260714-M.O.1.67.20260830` | ### Getting Continuous Updates Both `public/get-events` and `public/get-instruments` support pagination and incremental updates using `since` and `cursor` parameters. #### Initial Load ``` GET /dcm/v1/public/get-events?since=0 GET /dcm/v1/public/get-instruments?since=0 ``` Use `since=0` to fetch all available records from the beginning. #### Pagination When results exceed the page limit, the response includes a `next_cursor` field. Use it to fetch the next page: ``` GET /dcm/v1/public/get-events?since=0&cursor={next_cursor} GET /dcm/v1/public/get-instruments?since=0&cursor={next_cursor} ``` Continue paginating until no `next_cursor` is returned. #### Incremental Updates After the initial load, use the `last_updated_time` from the most recent record as your `since` value to fetch only new or updated records: ``` GET /dcm/v1/public/get-events?since={last_updated_time} GET /dcm/v1/public/get-instruments?since={last_updated_time} ``` This enables efficient polling for changes without re-fetching the entire dataset. ### Example: Continuously Building a 3-Level Instrument Hierarchy This example demonstrates how to build and maintain a **Series > Event > Contract** hierarchy using REST polling with `since` and `cursor` parameters. **Goal:** - Build a 3-level navigation hierarchy: Series → Event → Contract - Keep data up-to-date via continuous REST polling **Procedure:** 1. **Initialize tracking variables:** ``` events_last_modified = 0 instruments_last_modified = 0 ``` 2. **Fetch events with changes:** ``` GET /dcm/v1/public/get-events?since={events_last_modified} ``` Paginate using `cursor` until all pages are retrieved. 3. **For each event, fetch associated instruments:** ``` GET /dcm/v1/public/get-instruments?event_symbol={symbol}&since={instruments_last_modified} ``` This can be done in parallel for multiple events. Paginate each using `cursor`. 4. **Build the hierarchy from instrument metadata:** - **Series level:** Group by `PREDICT_CATEGORY` → `SPORTS_GROUPING` → `LEAGUE` → `YEAR(EVENT_DATE)` - **Event level:** Group by `NAME` → `PREDICT_CONTRACT_TYPE` → `PREDICT_PERIOD_TYPE` - **Contract level:** Individual instrument records 5. **Update tracking variables:** Record the maximum `last_updated_time` from events and instruments for the next polling cycle. 6. **Sleep and repeat:** Wait for your desired polling interval, then return to step 2 with the updated `since` values. This approach ensures you only fetch changed records on subsequent cycles, minimizing API calls and data transfer. ### Full Meta Data Reference For the complete metadata specification, please refer to [FIX Document Pack > Prediction Market Appendix](/docs/api/fix/fix-introduction) for details. - name: Instrument Status Updates slug: instrument-status-updates x-guide: instrument-status-updates tags: - Reference and Market Data location: insert method: guide description: | ## Instrument Status Updates Two additional endpoints provide real-time visibility into instrument state changes: | Endpoint | Description | |----------|-------------| | [`public/get-instrument-lifecycle-states`](/docs/api/rest/public-get-instrument-lifecycle-states) | Track lifecycle state transitions (e.g., `Suspended` → `Closed`) | | [`public/get-instrument-market-status`](/docs/api/rest/public-get-instrument-market-status) | Track market trading status changes (e.g., `OPEN` → `CLOSED`) | Both endpoints support the same pagination pattern (`since`, `cursor`, `limit`) and can be filtered by `event_symbol` for efficient parallel loading. ### Lifecycle States vs Market Status - **Lifecycle states** represent the instrument's position in its overall lifecycle (e.g., Active, Suspended, Closed). Use this to determine if an instrument can potentially be traded or has reached end-of-life. - **Market status** indicates whether the instrument is currently open for trading. An instrument may be in an Active lifecycle state but have a Closed market status. ### Parallel Loading by Event For efficient data loading, fetch status updates per event in parallel: ``` # For each event, fetch lifecycle and market status in parallel GET /dcm/v1/public/get-instrument-lifecycle-states?event_symbol={event_symbol}&since={last_updated_time} GET /dcm/v1/public/get-instrument-market-status?event_symbol={event_symbol}&since={last_updated_time} ``` Since instruments within the same event typically change state around the same time (e.g., when a game ends), filtering by `event_symbol` enables effective parallelism across events. - name: Settlement Rules and Languages slug: settlement-rules-laguages x-guide: settlement-rules-laguages tags: - Reference and Market Data location: insert method: guide description: | ## Settlement Rules and Languages Settlement rules and languages define how prediction markets resolve. This data is available via Excel file from the support team. ### Excel Schema The settlement data file contains the following columns: | Column | Description | |--------|-------------| | **Market Title** | Human-readable name of the prediction market | | **Date Added** | Date the market was added to the platform | | **Tradeable Symbol** | Instrument symbol (e.g., `NX.F.OPT.ELECT-CALGOV.O.1.x`) | | **Market Close (ET)** | Market closing time in Eastern Time | | **Projected Payout** | Expected payout timing (e.g., "30 minutes after closing") | | **Settlement Language** | Full settlement terms including resolution criteria and source agencies | | **Rule Number** | CDNA Rulebook rule reference (e.g., 14.62, 14.64, 14.68) | | **Rule** | Rule name (e.g., "ELECTION OUTCOME EVENT CENTI CONTRACT") | | **Rule Source** | Source agencies for resolution (e.g., AP, Reuters, major news networks) | | **Trading Prohibitions** | Restrictions on who may trade (e.g., source agency employees) | | **Status** | Market status (Active, Inactive, etc.) | ### How to Obtain Contact the support team to request the latest settlement rules and languages file. Updates are provided when markets are added or settlement terms change. ### Settlement Rules API The REST API provides programmatic access to settlement rules and languages. #### Available Endpoints | Method | Description | API Reference | |--------|-------------|---------------| | [`public/settlement-rules`](/docs/api/rest/public-get-settlement-rules) | Returns all settlement rules with their source agencies and trading prohibitions | [View →](/docs/api/rest/public-get-settlement-rules) | | [`public/payout-projections`](/docs/api/rest/public-get-payout-projections) | Returns all payout projection timing descriptions | [View →](/docs/api/rest/public-get-payout-projections) | | [`public/event-settlement-description/events/{event_symbol}`](/docs/api/rest/public-get-event-settlement-description-by-event) | Returns realized settlement descriptions for all instruments under a specific event | [View →](/docs/api/rest/public-get-event-settlement-description-by-event) | ### Loading Settlement Data Settlement rules and payout projections are reference data that change infrequently. Load them once at startup and refresh periodically. #### Initial Load Fetch all reference data in parallel: ``` GET /dcm/v1/public/settlement-rules GET /dcm/v1/public/payout-projections ``` Build lookup maps keyed by `settlement_rule_code` and `payout_projection_code` for efficient access when processing event settlement descriptions. #### Loading Settlement Descriptions Settlement descriptions are loaded per event. For each event from `public/get-events`, fetch the settlement descriptions: ``` GET /dcm/v1/public/event-settlement-description/events/FIFA-00001-260714-M ``` You can fetch multiple events in parallel. The response includes the realized `settlement_description` text for each instrument, along with the underlying `settlement_definition` template. Use the `settlement_rule_code` and `payout_projection_code` to join with your reference data lookup maps. - name: Prediction Market Data slug: prediction-market-data x-guide: prediction-market-data tags: - Reference and Market Data location: insert method: guide description: | ## Prediction Market Data Prediction market data is available through two channels: ### FIX Trading and Market Data **Best for:** Trading applications Ultra Low Latency market data with minimal latency, designed for trading applications. - Order book snapshots and incremental updates - Trade execution reports - Instrument reference data You can flexibility build analytics logic based on the real time raw market data: probability calculation, spread computation, etc. Most B2B trading partners use this approach. [View FIX Trading and Market Data API Documentation →](/docs/api/fix/fix-introduction) ### Non Trading Prediction Market Data **Best for:** Marketing & content sites Pre-computed, enriched market data for marketing sites, news portals, and content platforms. - Pre-calculated probability and spread values - Events as first-class entities with market groupings - Full-text search across markets and events - Rich metadata (descriptions, categories, resolution criteria) Intended for display and content purposes only, may not be optimised for trading. [View Non Trading Prediction Market Data API Documentation →](https://data.crypto.com/) paths: /public/get-risk-parameters: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-risk-parameters description: Provides information on risk parameter settings for [Smart Cross Margin](https://crypto.com/exchange/document/margin-rules). operationId: publicGetRiskParameters x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-risk-parameters" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetRiskParameters(); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_risk_parameters() print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetRiskParametersResponse' example: id: '-1' method: public/get-risk-parameters code: '0' result: default_max_product_leverage_for_spot: '1.0' default_max_product_leverage_for_perps: '20.0' default_max_product_leverage_for_futures: '20.0' default_umr_multiplier_for_spot: '1.0' default_umr_multiplier_for_perps: '1.0' default_umr_multiplier_for_futures: '2.0' default_long_pos_limit_perps: '-1.0' default_short_pos_limit_perps: '-1.0' default_long_pos_limit_futures: '-1.0' default_short_pos_limit_futures: '-1.0' default_unit_margin_rate: '0.05' default_collateral_cap: '0.0' update_timestamp_ms: '1763005542745' base_currency_config: - instrument_name: 1INCH minimum_haircut: '0' unit_margin_rate: '0.00060' order_limit: '100000.0' max_order_notional_usd: '100000.0' min_order_notional_usd: '1.0' - instrument_name: BTC collateral_cap_notional: '25000000' minimum_haircut: '0.0625' max_product_leverage_for_spot: '16.0' max_product_leverage_for_perps: '50.0' unit_margin_rate: '0.005' max_short_sell_limit: '200.0' order_limit: '10000000' max_order_notional_usd: '10000000' min_order_notional_usd: '1.0' long_pos_limit_perps: '8800.0' short_pos_limit_perps: '8800.0' long_pos_limit_futures: '512.0' short_pos_limit_futures: '512.0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetRiskParametersResponse' example: id: '1' method: public/get-risk-parameters code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetRiskParametersResponse' example: id: '1' method: public/get-risk-parameters code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetRiskParametersResponse' example: id: '1' method: public/get-risk-parameters code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetRiskParametersResponse' example: id: '1' method: public/get-risk-parameters code: '50001' message: INTERNAL_SERVER_ERROR /public/get-instruments: get: tags: - Reference and Market Data x-parent-guide: prediction-reference-data x-apply-to: - rest summary: public/get-instruments description: Provides information on all supported instruments (e.g. BTCUSD-PERP). operationId: publicGetInstruments parameters: - name: event_symbols in: query required: false schema: type: string example: MLB-00015-260724-M description: Filter by up to 10 event symbols. Comma-separated. - name: is_combo in: query required: false schema: type: boolean example: false description: Filter for combo instruments. - name: PREDICT_CONTRACT_TYPE in: query required: false schema: type: string example: Total Goals description: Filter by predict contract type. x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-instruments?event_symbols=MLB-00015-260724-M&is_combo=false&limit=100" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetInstruments({ event_symbols: 'MLB-00015-260724-M', is_combo: false, limit: 100 }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_instruments({'event_symbols': 'MLB-00015-260724-M', 'is_combo': False, 'limit': 100}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetInstrumentsResponse' example: id: '1' method: public/get-instruments code: '0' result: data: - symbol: BTCUSD-PERP inst_type: PERPETUAL_SWAP display_name: BTCUSD Perpetual base_ccy: BTC quote_ccy: USD quote_decimals: '2' quantity_decimals: '4' price_tick_size: '0.5' qty_tick_size: '0.0001' max_leverage: '50' tradable: true expiry_timestamp_ms: '1624012801123' underlying_symbol: BTCUSD-INDEX product_type: DIGITAL_CURRENCIES '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetInstrumentsResponse' example: id: '1' method: public/get-instruments code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetInstrumentsResponse' example: id: '1' method: public/get-instruments code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetInstrumentsResponse' example: id: '1' method: public/get-instruments code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetInstrumentsResponse' example: id: '1' method: public/get-instruments code: '50001' message: INTERNAL_SERVER_ERROR /public/get-book: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-book description: Fetches the public order book for a particular instrument and depth. operationId: publicGetBook parameters: - name: instrument_name in: query required: true schema: type: string example: BTCUSD-PERP description: Instrument symbol, e.g. BTCUSD-PERP - name: depth in: query required: true schema: type: string example: '10' description: Number of bids and asks to return (up to 50) x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-book?instrument_name=BTCUSD-PERP&depth=10" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetBook({ instrument_name: 'BTCUSD-PERP', depth: '10' }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_book({'instrument_name': 'BTCUSD-PERP', 'depth': '10'}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetBookResponse' example: code: '0' method: public/get-book result: depth: '10' data: - asks: - - '50126.000000' - '0.400000' - '0' - - '50130.000000' - '1.279000' - '0' - - '50136.000000' - '1.279000' - '0' - - '50137.000000' - '0.800000' - '0' - - '50142.000000' - '1.279000' - '0' - - '50148.000000' - '2.892900' - '0' - - '50154.000000' - '1.279000' - '0' - - '50160.000000' - '1.133000' - '0' - - '50166.000000' - '3.090700' - '0' - - '50172.000000' - '1.279000' - '0' bids: - - '50113.500000' - '0.400000' - '0' - - '50113.000000' - '0.051800' - '0' - - '50112.000000' - '1.455300' - '0' - - '50106.000000' - '1.174800' - '0' - - '50100.500000' - '0.800000' - '0' - - '50100.000000' - '1.455300' - '0' - - '50097.500000' - '0.048000' - '0' - - '50097.000000' - '0.148000' - '0' - - '50096.500000' - '0.399200' - '0' - - '50095.000000' - '0.399200' - '0' instrument_name: BTCUSD-PERP '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetBookResponse' example: id: '1' method: public/get-book code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetBookResponse' example: id: '1' method: public/get-book code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetBookResponse' example: id: '1' method: public/get-book code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetBookResponse' example: id: '1' method: public/get-book code: '50001' message: INTERNAL_SERVER_ERROR /public/get-candlestick: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-candlestick description: Retrieves candlesticks (k-line data history) over a given period for an instrument (e.g. BTCUSD-PERP). operationId: publicGetCandlestick parameters: - name: instrument_name in: query required: true schema: type: string example: BTCUSD-PERP description: Instrument symbol, e.g. BTCUSD-PERP - name: timeframe in: query schema: $ref: exchange-schema.generated.yaml#/components/schemas/CandlestickTimeframe description: | The period value. Default **1m**. - name: count in: query schema: type: string format: int32 default: '25' description: Number of candles to return. Default 25. - name: start_ts in: query schema: type: string format: int64 description: Start time (Unix timestamp). Default 1 day ago. - name: end_ts in: query schema: type: string format: int64 description: End time (Unix timestamp). Default current time. x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-candlestick?instrument_name=BTCUSD-PERP&timeframe=M5" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetCandlestick({ instrument_name: 'BTCUSD-PERP', timeframe: 'M5' }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_candlestick({'instrument_name': 'BTCUSD-PERP', 'timeframe': 'M5'}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetCandlestickResponse' example: id: '1' method: public/get-candlestick code: '0' result: interval: M5 data: - o: '50508.500000' h: '50548.500000' l: '50172.500000' c: '50202.000000' v: '17.203200' t: '1613544000000' instrument_name: BTCUSD-PERP '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetCandlestickResponse' example: id: '1' method: public/get-candlestick code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetCandlestickResponse' example: id: '1' method: public/get-candlestick code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetCandlestickResponse' example: id: '1' method: public/get-candlestick code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetCandlestickResponse' example: id: '1' method: public/get-candlestick code: '50001' message: INTERNAL_SERVER_ERROR /public/get-trades: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-trades description: Fetches the public trades for a particular instrument. Time window can only be up to 7 days for maximum. operationId: publicGetTrades parameters: - name: instrument_name in: query required: true schema: type: string example: BTCUSD-PERP description: e.g. BTCUSD-PERP - name: count in: query schema: type: string format: int32 default: '25' description: 'The maximum number of trades to be retrieved. Default: 25. Max: 150' - name: start_ts in: query schema: type: string format: int64 description: 'Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination' - name: end_ts in: query schema: type: string format: int64 description: 'End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination' x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-trades?instrument_name=BTCUSD-PERP&count=5" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetTrades({ instrument_name: 'BTCUSD-PERP', count: "5" }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_trades({'instrument_name': 'BTCUSD-PERP', 'count': "5"}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetTradesResponse' example: id: '1' method: public/get-trades code: '0' result: data: - d: '15281981878' t: '1613547060925' tn: '1613547060925523623' q: '0.181900' p: '50772.000000' s: SELL i: BTCUSD-PERP m: '76423' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetTradesResponse' example: id: '1' method: public/get-trades code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetTradesResponse' example: id: '1' method: public/get-trades code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetTradesResponse' example: id: '1' method: public/get-trades code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetTradesResponse' example: id: '1' method: public/get-trades code: '50001' message: INTERNAL_SERVER_ERROR /public/get-tickers: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-tickers description: Fetches the public tickers for all or a particular instrument. operationId: publicGetTickers parameters: - name: instrument_name in: query schema: type: string example: BTCUSD-PERP description: e.g. BTCUSD-PERP x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-tickers?instrument_name=BTCUSD-PERP" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetTickers({ instrument_name: 'BTCUSD-PERP' }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_tickers({'instrument_name': 'BTCUSD-PERP'}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetTickersResponse' example: id: '-1' method: public/get-tickers code: '0' result: data: - h: '51790.00' l: '47895.50' a: '51174.500000' i: BTCUSD-PERP v: '879.5024' vv: '26370000.12' oi: '12345.12' c: '0.03955106' b: '51170.000000' k: '51180.000000' t: '1613580710768' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetTickersResponse' example: id: '1' method: public/get-tickers code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetTickersResponse' example: id: '1' method: public/get-tickers code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetTickersResponse' example: id: '1' method: public/get-tickers code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetTickersResponse' example: id: '1' method: public/get-tickers code: '50001' message: INTERNAL_SERVER_ERROR /public/get-valuations: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-valuations description: Fetches valuation type data for an instrument. operationId: publicGetValuations parameters: - name: instrument_name in: query required: true schema: type: string example: BTCUSD-INDEX description: e.g. BTCUSD-INDEX - name: valuation_type in: query required: true schema: type: string example: index_price description: | **List of available types:** - a. **index_price**: returns per minute data of underlying reference price of the instrument. - b. **mark_price**: returns per minute data of mark price of the instrument. - c. **funding_hist**: returns hourly data of the funding rate settled in past hourly settlement. - d. **funding_rate**: returns per minute data of current hourly funding rate that will settle at the end of each hour of current 4-hour interval. - e. **estimated_funding_rate**: returns per minute data of estimated funding rate for the next interval. - name: count in: query schema: type: string format: int32 default: '25' description: Default is 25 - name: start_ts in: query schema: type: string format: int64 description: Default timestamp is 30 days ago for funding_hist, and 1 day ago for other valuation_type (Unix timestamp). - name: end_ts in: query schema: type: string format: int64 description: Default timestamp is current time (Unix timestamp). x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-valuations?instrument_name=BTCUSD-INDEX&valuation_type=index_price&count=1" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetValuations({ instrument_name: 'BTCUSD-INDEX', valuation_type: 'index_price', count: "1" }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_valuations({'instrument_name': 'BTCUSD-INDEX', 'valuation_type': 'index_price', 'count': "1"}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetValuationsResponse' example: id: '1' method: public/get-valuations code: '0' result: data: - v: '50776.73000' t: '1613547318000' instrument_name: BTCUSD-INDEX '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetValuationsResponse' example: id: '1' method: public/get-valuations code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetValuationsResponse' example: id: '1' method: public/get-valuations code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetValuationsResponse' example: id: '1' method: public/get-valuations code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetValuationsResponse' example: id: '1' method: public/get-valuations code: '50001' message: INTERNAL_SERVER_ERROR /public/get-expired-settlement-price: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-expired-settlement-price description: Fetches settlement prices of expired instruments. operationId: publicGetExpiredSettlementPrice parameters: - name: instrument_type in: query required: true schema: type: string example: FUTURE description: FUTURE - name: page in: query schema: type: string format: int32 default: '1' description: Page number. Default 1. x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-expired-settlement-price?instrument_type=FUTURE&page=1" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetExpiredSettlementPrice({ instrument_type: 'FUTURE', page: "1" }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_expired_settlement_price({'instrument_type': 'FUTURE', 'page': "1"}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetExpiredSettlementPriceResponse' example: id: '-1' method: public/get-expired-settlement-price code: '0' result: data: - i: BTCUSD-210528m2 x: '1622145600000' v: '50776.73000' t: '1622145540000' - i: BTCUSD-210528m3 x: '1622160000000' v: '38545.570000' t: '1622159940000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetExpiredSettlementPriceResponse' example: id: '1' method: public/get-expired-settlement-price code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetExpiredSettlementPriceResponse' example: id: '1' method: public/get-expired-settlement-price code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetExpiredSettlementPriceResponse' example: id: '1' method: public/get-expired-settlement-price code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetExpiredSettlementPriceResponse' example: id: '1' method: public/get-expired-settlement-price code: '50001' message: INTERNAL_SERVER_ERROR /public/get-insurance: get: tags: - Reference and Market Data x-apply-to: - rest summary: public/get-insurance description: Fetches the balance of the Insurance Fund for a particular currency. operationId: publicGetInsurance parameters: - name: instrument_name in: query required: true schema: type: string example: USD description: e.g. USD - name: count in: query schema: type: string format: int32 default: '25' description: Default is 25 - name: start_ts in: query schema: type: string format: int64 description: Default timestamp is 1 day ago (Unix timestamp). - name: end_ts in: query schema: type: string format: int64 description: Default timestamp is current time (Unix timestamp). x-codeSamples: - lang: cURL label: cURL source: | curl -X GET "https://api.crypto.com/exchange/v1/public/get-insurance?instrument_name=USD&count=1" \ -H "Content-Type: application/json" - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicGetPublicGetInsurance({ instrument_name: 'USD', count: "1" }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_get_public_get_insurance({'instrument_name': 'USD', 'count': "1"}) print(res) responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicGetInsuranceResponse' example: id: '1' method: public/get-insurance code: '0' result: data: - v: '50000000' t: '1613539503965' instrument_name: USD '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicGetInsuranceResponse' example: id: '1' method: public/get-insurance code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicGetInsuranceResponse' example: id: '1' method: public/get-insurance code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicGetInsuranceResponse' example: id: '1' method: public/get-insurance code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicGetInsuranceResponse' example: id: '1' method: public/get-insurance code: '50001' message: INTERNAL_SERVER_ERROR /private/user-balance: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/user-balance description: | Returns the user's wallet balance. operationId: privateUserBalance x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateUserBalance({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_user_balance({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceRequest' example: id: '11' method: private/user-balance api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: {} nonce: '1611022832613' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceResponse' example: id: '11' method: private/user-balance code: '0' result: data: - total_available_balance: '4721.05898582' total_margin_balance: '7595.42571782' total_initial_margin: '2874.36673202' total_position_im: '486.31273202' total_haircut: '2388.054' total_maintenance_margin: '1437.18336601' total_position_cost: '14517.54641301' total_cash_balance: '7890.00320721' total_collateral_value: '7651.18811483' total_session_unrealized_pnl: '-55.76239701' instrument_name: USD total_session_realized_pnl: '0.00000000' is_liquidating: false total_effective_leverage: '1.90401230' position_limit: '3000000.00000000' used_position_limit: '40674.69622001' total_isolated_cash_balance: '0.00000000' isolated_positions: [] position_balances: - instrument_name: CRO quantity: '24422.72427884' market_value: '4776.107959969951' collateral_eligible: true haircut: '0.5' collateral_amount: '4537.302561971453' max_withdrawal_balance: '24422.72427884' reserved_qty: '0.00000000' - instrument_name: USD quantity: '3113.50747209' market_value: '3113.50747209' collateral_eligible: true haircut: '0' collateral_amount: '3113.50747209' max_withdrawal_balance: '3113.50747209' reserved_qty: '0.00000000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceResponse' example: id: '1' method: private/user-balance code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceResponse' example: id: '1' method: private/user-balance code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceResponse' example: id: '1' method: private/user-balance code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceResponse' example: id: '1' method: private/user-balance code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceResponse' example: id: '1' method: private/user-balance code: '50001' message: INTERNAL_SERVER_ERROR /private/user-balance-history: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/user-balance-history description: Returns the user's balance history. This call may temporarily have discrepancies with that shown on the GUI. operationId: privateUserBalanceHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateUserBalanceHistory({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_user_balance_history({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryRequest' example: id: '11' method: private/user-balance-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: {} nonce: '1611022832613' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryResponse' example: id: '11' method: private/user-balance-history code: '0' result: instrument_name: USD data: - t: '1629478800000' c: '811.621851' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryResponse' example: id: '1' method: private/user-balance-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryResponse' example: id: '1' method: private/user-balance-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryResponse' example: id: '1' method: private/user-balance-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryResponse' example: id: '1' method: private/user-balance-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateUserBalanceHistoryResponse' example: id: '1' method: private/user-balance-history code: '50001' message: INTERNAL_SERVER_ERROR /private/get-accounts: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/get-accounts description: Get Account and its Sub Accounts. operationId: privateGetAccounts x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetAccounts({ page_size: "30", page: "2", }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_accounts({ 'page_size': "30", 'page': "2", }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsRequest' example: id: '12' method: private/get-accounts api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: page_size: '30' page: '2' nonce: '1587846358253' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsResponse' example: id: '12' method: private/get-accounts code: '0' result: this_account: uuid: 243d3f39-b193-4eb9-1d60-e98f2fc17707 hierarchy: MASTER master_account: uuid: 243d3f39-b193-4eb9-1d60-e98f2fc17707 hierarchy: MASTER master_account_uuid: 291879ae-b769-4eb3-4d75-3366ebee7dd6 margin_account_uuid: 69c9ab41-5b95-4d75-b769-e45f2fc16507 enabled: true tradable: true name: '' email: '[email protected]' margin_access: DEFAULT derivatives_access: DISABLED create_time: '1620962543792' update_time: '1622019525960' two_fa_enabled: true kyc_level: ADVANCED suspended: false terminated: false sub_account_list: - uuid: 69c9ab41-5b95-4d75-b769-e45f2fc16507 hierarchy: SUB_ACCOUNT master_account_uuid: 291879ae-b769-4eb3-4d75-3366ebee7dd6 margin_account_uuid: 69c9ab41-5b95-4d75-b769-e45f2fc16507 label: Sub Account enabled: true tradable: true margin_access: DEFAULT derivatives_access: DISABLED '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsResponse' example: id: '1' method: private/get-accounts code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsResponse' example: id: '1' method: private/get-accounts code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsResponse' example: id: '1' method: private/get-accounts code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsResponse' example: id: '1' method: private/get-accounts code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountsResponse' example: id: '1' method: private/get-accounts code: '50001' message: INTERNAL_SERVER_ERROR /private/create-subaccount-transfer: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/create-subaccount-transfer description: Transfer between subaccounts (and master account). operationId: privateCreateSubaccountTransfer x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCreateSubaccountTransfer({ from: '12345678-0000-0000-0000-000000000001', to: '12345678-0000-0000-0000-000000000002', currency: 'CRO', amount: '500', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_create_subaccount_transfer({ 'from': '12345678-0000-0000-0000-000000000001', 'to': '12345678-0000-0000-0000-000000000002', 'currency': 'CRO', 'amount': '500', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferRequest' example: id: '1234' method: private/create-subaccount-transfer api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: from: 12345678-0000-0000-0000-000000000001 to: 12345678-0000-0000-0000-000000000002 currency: CRO amount: '500' nonce: '1587846358253' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferResponse' example: id: '1234' method: private/create-subaccount-transfer code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferResponse' example: id: '1' method: private/create-subaccount-transfer code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferResponse' example: id: '1' method: private/create-subaccount-transfer code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferResponse' example: id: '1' method: private/create-subaccount-transfer code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferResponse' example: id: '1' method: private/create-subaccount-transfer code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateSubaccountTransferResponse' example: id: '1' method: private/create-subaccount-transfer code: '50001' message: INTERNAL_SERVER_ERROR /private/get-subaccount-balances: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/get-subaccount-balances description: Returns the user's wallet balances of all sub-accounts. operationId: privateGetSubaccountBalances x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetSubaccountBalances({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_subaccount_balances({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesRequest' example: id: '1' method: private/get-subaccount-balances api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: {} nonce: '1' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesResponse' example: id: '1' method: private/get-subaccount-balances code: '0' result: data: - account: a0d206a1-6b06-47c5-9cd3-8bc6ef0915c5 instrument_name: USD total_available_balance: '0.00000000' total_margin_balance: '0.00000000' total_initial_margin: '0.00000000' total_maintenance_margin: '0.00000000' total_position_cost: '0.00000000' total_cash_balance: '0.00000000' total_collateral_value: '0.00000000' total_session_unrealized_pnl: '0.00000000' total_session_realized_pnl: '0.00000000' total_effective_leverage: '0.00000000' position_limit: '3000000.00000000' used_position_limit: '0.00000000' total_isolated_cash_balance: '0.00000000' is_liquidating: false position_balances: [] isolated_positions: [] - account: 49786818-6ead-40c4-a008-ea6b0fa5cf96 instrument_name: USD total_available_balance: '20823.62250000' total_margin_balance: '20823.62250000' total_initial_margin: '0.00000000' total_maintenance_margin: '0.00000000' total_position_cost: '0.00000000' total_cash_balance: '21919.55000000' total_collateral_value: '20823.62250000' total_session_unrealized_pnl: '0.00000000' total_session_realized_pnl: '0.00000000' total_effective_leverage: '0.00000000' position_limit: '3000000.00000000' used_position_limit: '0.00000000' total_isolated_cash_balance: '0.00000000' is_liquidating: false position_balances: - instrument_name: BTC quantity: '1.0000000000' market_value: '21918.5500000000' collateral_eligible: true haircut: '0.5500000000' collateral_amount: '21918.0000000000' max_withdrawal_balance: '1.0000000000' - instrument_name: USD quantity: '1.00000000' market_value: '1.00000000' collateral_eligible: true haircut: '0.10000000' collateral_amount: '0.90000000' max_withdrawal_balance: '0.00000000' isolated_positions: [] - account: 507d3f7d-37c3-4a09-9076-b83c2fcbb638 total_available_balance: '20922.62250000' total_margin_balance: '20922.62250000' total_initial_margin: '0.00000000' total_maintenance_margin: '0.00000000' total_position_cost: '0.00000000' total_cash_balance: '22018.55000000' total_collateral_value: '20922.62250000' total_session_unrealized_pnl: '0.00000000' instrument_name: USD total_session_realized_pnl: '0.00000000' total_effective_leverage: '0.00000000' position_limit: '3000000.00000000' used_position_limit: '0.00000000' total_isolated_cash_balance: '8.96326705' is_liquidating: false position_balances: - instrument_name: BTC quantity: '1.0000000000' market_value: '21918.5500000000' collateral_eligible: true haircut: '0.5500000000' collateral_amount: '21918.0000000000' max_withdrawal_balance: '1.0000000000' - instrument_name: USD quantity: '100.00000000' market_value: '100.00000000' collateral_eligible: true haircut: '1.00000000' collateral_amount: '99.00000000' max_withdrawal_balance: '0.00000000' isolated_positions: - isolation_id: '19848526' leverage: '10' isolation_type: ISOLATED_MARGIN total_available_balance: '7.80487225' total_margin_balance: '7595.42571782' total_initial_margin: '1.09620001' total_position_im: '0.5481' total_haircut: '0' total_maintenance_margin: '0.27405' total_position_cost: '10.959' total_cash_balance: '8.96326705' total_collateral_value: '8.96326705' total_session_unrealized_pnl: '-0.003' instrument_name: USD total_session_realized_pnl: '-0.043' is_liquidating: false total_effective_leverage: '1.231537' position_limit: '89.01072259' used_position_limit: '10.962' position_balances: - instrument_name: USD quantity: '8.9632670590686' market_value: '8.96326705' collateral_eligible: true haircut: '0' collateral_amount: '8.96326705' max_withdrawal_balance: '7.80487225' reserved_qty: '0.00000000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesResponse' example: id: '1' method: private/get-subaccount-balances code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesResponse' example: id: '1' method: private/get-subaccount-balances code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesResponse' example: id: '1' method: private/get-subaccount-balances code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesResponse' example: id: '1' method: private/get-subaccount-balances code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetSubaccountBalancesResponse' example: id: '1' method: private/get-subaccount-balances code: '50001' message: INTERNAL_SERVER_ERROR /private/get-positions: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/get-positions description: | Returns the user's position. operationId: privateGetPositions x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetPositions({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_positions({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsRequest' example: id: '1' method: private/get-positions api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: {} nonce: '1611022832613' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsResponse' example: id: '1' method: private/get-positions code: '0' result: data: - account_id: 858dbc8b-22fd-49fa-bff4-d342d98a8acb quantity: '-0.1984' cost: '-10159.573500' open_position_pnl: '-497.743736' open_pos_cost: '-10159.352200' session_pnl: '2.236145' update_timestamp_ms: '1613552240770' instrument_name: BTCUSD-PERP type: PERPETUAL_SWAP - account_id: 858dbc8b-22fd-49fa-bff4-d342d98a8acb quantity: '-0.1984' cost: '-10159.573500' open_position_pnl: '-497.743736' open_pos_cost: '-10159.352200' session_pnl: '2.236145' update_timestamp_ms: '1613552240771' instrument_name: BTCUSD-PERP type: PERPETUAL_SWAP isolation_id: '19848526' isolation_type: ISOLATED_MARGIN '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsResponse' example: id: '1' method: private/get-positions code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsResponse' example: id: '1' method: private/get-positions code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsResponse' example: id: '1' method: private/get-positions code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsResponse' example: id: '1' method: private/get-positions code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetPositionsResponse' example: id: '1' method: private/get-positions code: '50001' message: INTERNAL_SERVER_ERROR /private/get-fee-credit-balances: post: tags: - Account Balance and Positions x-apply-to: - rest summary: private/get-fee-credit-balances description: | Get fee credit balance details for the authenticated account. Fee credits are grouped by expiry date and sorted in ascending order. Values are not real-time and are updated daily at 00:00 UTC. operationId: privateGetFeeCreditBalances x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetFeeCreditBalances({ page: 0, page_size: 200 }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_fee_credit_balances({ 'page': 0, 'page_size': 200 }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesRequest' example: id: '1' method: private/get-fee-credit-balances api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: page: 0 page_size: 200 nonce: '1721989202781' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesResponse' example: id: '1' method: private/get-fee-credit-balances code: '0' result: fee_credits: - expiry_date: 1735689540000 type: Campaign1, Campaign2 distributed_amount: '200.00000000' available_balance: '150.00000000' details: - type: Campaign1 distribution_date: 1704067140000 distributed_amount: '100.00000000' - type: Campaign2 distribution_date: 1706745540000 distributed_amount: '100.00000000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesResponse' example: id: '1' method: private/get-fee-credit-balances code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesResponse' example: id: '1' method: private/get-fee-credit-balances code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesResponse' example: id: '1' method: private/get-fee-credit-balances code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesResponse' example: id: '1' method: private/get-fee-credit-balances code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeCreditBalancesResponse' example: id: '1' method: private/get-fee-credit-balances code: '50001' message: INTERNAL_SERVER_ERROR /private/create-order: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/create-order description: | Creates a new BUY or SELL order. This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check when the order is successfully created. operationId: privateCreateOrder x-codeSamples: - lang: JavaScript label: JavaScript x-discriminator-value: DMA source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCreateOrder({ instrument_name: 'BTCUSD-PERP', side: 'SELL', type: 'LIMIT', price: '50000.5', quantity: '1', client_oid: 'c5f682ed-7108-4f1c-b755-972fcdca0f02', exec_inst: ['POST_ONLY'], time_in_force: 'FILL_OR_KILL', }); console.log(res); - lang: Python label: Python x-discriminator-value: DMA source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_create_order({ 'instrument_name': 'BTCUSD-PERP', 'side': 'SELL', 'type': 'LIMIT', 'price': '50000.5', 'quantity': '1', 'client_oid': 'c5f682ed-7108-4f1c-b755-972fcdca0f02', 'exec_inst': ['POST_ONLY'], 'time_in_force': 'FILL_OR_KILL', }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: Combo source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // Execute a previously quoted combo order const res = await exchange.v1PrivatePostPrivateCreateOrder({ side: 'SELL', type: 'PREVIOUSLY_QUOTED', quote_id: '1234567890', price: '50000.5', quantity: '1', time_in_force: 'IMMEDIATE_OR_CANCEL', client_oid: 'c5f682ed-7108-4f1c-b755-972fcdca0f02', }); console.log(res); - lang: Python label: Python x-discriminator-value: Combo source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # Execute a previously quoted combo order res = exchange.v1_private_post_private_create_order({ 'side': 'SELL', 'type': 'PREVIOUSLY_QUOTED', 'quote_id': '1234567890', 'price': '50000.5', 'quantity': '1', 'time_in_force': 'IMMEDIATE_OR_CANCEL', 'client_oid': 'c5f682ed-7108-4f1c-b755-972fcdca0f02', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderRequest' examples: DMA: x-discriminator-value: DMA value: id: '1' method: private/create-order api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: instrument_name: BTCUSD-PERP side: SELL type: LIMIT price: '50000.5' quantity: '1' client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 exec_inst: - POST_ONLY time_in_force: FILL_OR_KILL Combo: x-discriminator-value: Combo summary: Execute a previously quoted combo order value: id: '1' method: private/create-order api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: side: SELL type: PREVIOUSLY_QUOTED quote_id: '1234567890' price: '50000.5' quantity: '1' time_in_force: IMMEDIATE_OR_CANCEL client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderResponse' example: id: '1' method: private/create-order code: '0' result: client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 order_id: '18342311' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderResponse' example: id: '1' method: private/create-order code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderResponse' example: id: '1' method: private/create-order code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderResponse' example: id: '1' method: private/create-order code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderResponse' example: id: '1' method: private/create-order code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderResponse' example: id: '1' method: private/create-order code: '50001' message: INTERNAL_SERVER_ERROR x-discriminators: DMA: tags: - Trading summary: private/create-order description: | Creates a new BUY or SELL order. This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check when the order is successfully created. /private/amend-order: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/amend-order description: | Amend an existing order on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The user.order subscription can be used to check when the order is successfully created. Please note that amend order is designed as a convenience function such that it performs cancel and then create behind the scene. The new order will lose queue priority, except if the amend is only to amend down order quantity. operationId: privateAmendOrder x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAmendOrder({ order_id: '6530219466236720401', new_price: '82000', new_quantity: '0.0002', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_amend_order({ 'order_id': '6530219466236720401', 'new_price': '82000', 'new_quantity': '0.0002', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderRequest' example: id: '53' method: private/amend-order api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1587846358253' params: order_id: '6530219466236720401' new_price: '82000' new_quantity: '0.0002' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderResponse' example: id: '53' method: private/amend-order code: '0' result: client_oid: '53' order_id: '6530219466236720401' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderResponse' example: id: '1' method: private/amend-order code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderResponse' example: id: '1' method: private/amend-order code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderResponse' example: id: '1' method: private/amend-order code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderResponse' example: id: '1' method: private/amend-order code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAmendOrderResponse' example: id: '1' method: private/amend-order code: '50001' message: INTERNAL_SERVER_ERROR /private/cancel-order: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/cancel-order description: | Cancels an existing order on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check when the order is successfully canceled. operationId: privateCancelOrder x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCancelOrder({ order_id: '18342311', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_cancel_order({ 'order_id': '18342311', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderRequest' example: id: '1' method: private/cancel-order api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: order_id: '18342311' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderResponse' example: id: '1' method: private/cancel-order code: '0' message: NO_ERROR result: client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 order_id: '18342311' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderResponse' example: id: '1' method: private/cancel-order code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderResponse' example: id: '1' method: private/cancel-order code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderResponse' example: id: '1' method: private/cancel-order code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderResponse' example: id: '1' method: private/cancel-order code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderResponse' example: id: '1' method: private/cancel-order code: '50001' message: INTERNAL_SERVER_ERROR /private/cancel-all-orders: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/cancel-all-orders description: | Cancels all orders for a particular instrument/pair (asynchronous). This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check when the order is successfully canceled. operationId: privateCancelAllOrders x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCancelAllOrders({ instrument_name: 'BTCUSD-PERP', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_cancel_all_orders({ 'instrument_name': 'BTCUSD-PERP', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersRequest' example: id: '1' method: private/cancel-all-orders api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1611169184000' params: instrument_name: BTCUSD-PERP responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersResponse' example: id: '1' method: private/cancel-all-orders code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersResponse' example: id: '1' method: private/cancel-all-orders code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersResponse' example: id: '1' method: private/cancel-all-orders code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersResponse' example: id: '1' method: private/cancel-all-orders code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersResponse' example: id: '1' method: private/cancel-all-orders code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelAllOrdersResponse' example: id: '1' method: private/cancel-all-orders code: '50001' message: INTERNAL_SERVER_ERROR /private/close-position: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/close-position description: | Cancels position for a particular instrument/pair (asynchronous). This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check when the order is successfully canceled. operationId: privateClosePosition x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateClosePosition({ instrument_name: 'BTCUSD-PERP', type: 'LIMIT', price: '30000.0', quantity: '1000', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_close_position({ 'instrument_name': 'BTCUSD-PERP', 'type': 'LIMIT', 'price': '30000.0', 'quantity': '1000', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionRequest' example: id: '1' method: private/close-position api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: instrument_name: BTCUSD-PERP type: LIMIT price: '30000.0' quantity: '1000' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionResponse' example: id: '1' method: private/close-position code: '0' result: client_oid: 1684d6e4-2c55-64e1-52c3-3aa9febc3a23 order_id: '15744' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionResponse' example: id: '1' method: private/close-position code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionResponse' example: id: '1' method: private/close-position code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionResponse' example: id: '1' method: private/close-position code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionResponse' example: id: '1' method: private/close-position code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateClosePositionResponse' example: id: '1' method: private/close-position code: '50001' message: INTERNAL_SERVER_ERROR /private/get-open-orders: post: tags: - Trading x-apply-to: - rest summary: private/get-open-orders description: Gets all open orders for a particular instrument. operationId: privateGetOpenOrders x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetOpenOrders({ instrument_name: 'BTCUSD-PERP', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_open_orders({ 'instrument_name': 'BTCUSD-PERP', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersRequest' example: id: '1' method: private/get-open-orders api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: instrument_name: BTCUSD-PERP nonce: '1613575617173' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersResponse' example: id: '1' method: private/get-open-orders code: '0' result: data: - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848525' client_oid: '1613571154900' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: [] quantity: '0.0100' limit_price: '50000.0' order_value: '500.000000' maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD-PERP fee_instrument_name: USD create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 isolation_id: '19848526' isolation_type: ISOLATED_MARGIN order_id: '19848526' client_oid: '1613571154901' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: - ISOLATED_MARGIN quantity: '0.0100' limit_price: '50000.0' order_value: '500.000000' maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD-PERP fee_instrument_name: USD create_time: '1613575617173' create_time_ns: '1613575617173123457' update_time: '1613575617173' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersResponse' example: id: '1' method: private/get-open-orders code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersResponse' example: id: '1' method: private/get-open-orders code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersResponse' example: id: '1' method: private/get-open-orders code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersResponse' example: id: '1' method: private/get-open-orders code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOpenOrdersResponse' example: id: '1' method: private/get-open-orders code: '50001' message: INTERNAL_SERVER_ERROR /private/get-order-detail: post: tags: - Trading - Transaction History x-apply-to: - rest summary: private/get-order-detail description: Gets detail of a single order by order_id or client_oid. operationId: privateGetOrderDetail x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetOrderDetail({ order_id: '19848525', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_order_detail({ 'order_id': '19848525', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailRequest' example: id: '1' method: private/get-order-detail api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: order_id: '19848525' nonce: '1587846358253' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailResponse' example: id: '1' method: private/get-order-detail code: '0' result: account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848525' client_oid: '1613571154900' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: [] quantity: '0.0100' limit_price: '50000.0' order_value: '500.000000' maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE instrument_name: BTCUSD-PERP fee_instrument_name: USD reason: '43012' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailResponse' example: id: '1' method: private/get-order-detail code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailResponse' example: id: '1' method: private/get-order-detail code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailResponse' example: id: '1' method: private/get-order-detail code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailResponse' example: id: '1' method: private/get-order-detail code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderDetailResponse' example: id: '1' method: private/get-order-detail code: '50001' message: INTERNAL_SERVER_ERROR /private/create-order-list: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/create-order-list (LIST) description: | Create a list of orders on the Exchange. `contingency_type` must be LIST, for list of orders creation. This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check if the orders are successfully created. operationId: privateCreateOrderList x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCreateOrderList({ contingency_type: 'LIST', order_list: [ { instrument_name: 'CRO_USD', side: 'SELL', type: 'LIMIT', quantity: '10', price: '0.12', client_oid: 'api_leg1' }, { instrument_name: 'CRO_USD', side: 'SELL', type: 'LIMIT', quantity: '20', price: '0.122', client_oid: 'api_leg2' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_create_order_list({ 'contingency_type': 'LIST', 'order_list': [ {'instrument_name': 'CRO_USD', 'side': 'SELL', 'type': 'LIMIT', 'quantity': '10', 'price': '0.12', 'client_oid': 'api_leg1'}, {'instrument_name': 'CRO_USD', 'side': 'SELL', 'type': 'LIMIT', 'quantity': '20', 'price': '0.122', 'client_oid': 'api_leg2'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListRequest' example: id: '6573' method: private/create-order-list api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1750385416548' params: contingency_type: LIST order_list: - instrument_name: CRO_USD side: SELL type: LIMIT quantity: '10' price: '0.12' client_oid: api_leg1 - instrument_name: CRO_USD side: SELL type: LIMIT quantity: '20' price: '0.122' client_oid: api_leg2 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListResponse' example: id: '6573' method: private/create-order-list code: '0' result: - code: '0' index: '0' client_oid: api_leg1 order_id: '5755600460443882762' - code: '0' index: '1' client_oid: api_leg2 order_id: '5755600460443882763' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListResponse' example: id: '1' method: private/create-order-list code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListResponse' example: id: '1' method: private/create-order-list code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListResponse' example: id: '1' method: private/create-order-list code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListResponse' example: id: '1' method: private/create-order-list code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateOrderListResponse' example: id: '1' method: private/create-order-list code: '50001' message: INTERNAL_SERVER_ERROR /private/cancel-order-list: post: tags: - Trading x-apply-to: - rest - ws-user-api summary: private/cancel-order-list (LIST) description: | Cancel a list of orders on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The `user.order` subscription can be used to check when each of the orders is successfully cancelled. operationId: privateCancelOrderList x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCancelOrderList({ contingency_type: 'LIST', order_list: [ { instrument_name: 'CRO_USD', client_oid: 'api_leg1' }, { instrument_name: 'CRO_USD', client_oid: 'api_leg2' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_cancel_order_list({ 'contingency_type': 'LIST', 'order_list': [ {'instrument_name': 'CRO_USD', 'client_oid': 'api_leg1'}, {'instrument_name': 'CRO_USD', 'client_oid': 'api_leg2'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListRequest' example: id: '6575' method: private/cancel-order-list api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1750389124417' params: contingency_type: LIST order_list: - instrument_name: CRO_USD client_oid: api_leg1 - instrument_name: CRO_USD client_oid: api_leg2 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListResponse' example: id: '6575' method: private/cancel-order-list code: '0' result: - code: '0' index: '0' - code: '0' index: '1' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListResponse' example: id: '1' method: private/cancel-order-list code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListResponse' example: id: '1' method: private/cancel-order-list code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListResponse' example: id: '1' method: private/cancel-order-list code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListResponse' example: id: '1' method: private/cancel-order-list code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCancelOrderListResponse' example: id: '1' method: private/cancel-order-list code: '50001' message: INTERNAL_SERVER_ERROR /private/change-account-leverage: post: tags: - Trading x-apply-to: - rest summary: private/change-account-leverage description: Changes the maximum leverage used by the account. Please note, each instrument has its own maximum leverage. Whichever leverage (account or instrument) is lower will be used. operationId: privateChangeAccountLeverage x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateChangeAccountLeverage({ account_id: '52e7c00f-1324-5a6z-bfgt-de445bde21a5', leverage: 10, }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_change_account_leverage({ 'account_id': '52e7c00f-1324-5a6z-bfgt-de445bde21a5', 'leverage': 10, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageRequest' example: id: '1' method: private/change-account-leverage api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1611022832613' params: account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 leverage: 10 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageResponse' example: id: '1' method: private/change-account-leverage code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageResponse' example: id: '1' method: private/change-account-leverage code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageResponse' example: id: '1' method: private/change-account-leverage code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageResponse' example: id: '1' method: private/change-account-leverage code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageResponse' example: id: '1' method: private/change-account-leverage code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountLeverageResponse' example: id: '1' method: private/change-account-leverage code: '50001' message: INTERNAL_SERVER_ERROR /private/change-account-settings: post: tags: - Trading x-apply-to: - rest summary: private/change-account-settings description: Change account level settings regarding STP and other properties. operationId: privateChangeAccountSettings x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateChangeAccountSettings({ stp_scope: 'S', stp_id: '100', stp_inst: 'M', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_change_account_settings({ 'stp_scope': 'S', 'stp_id': '100', 'stp_inst': 'M', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsRequest' example: id: '696' method: private/change-account-settings api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1721989111722' params: stp_scope: S stp_id: '100' stp_inst: M responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsResponse' example: id: '696' method: private/change-account-settings code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsResponse' example: id: '1' method: private/change-account-settings code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsResponse' example: id: '1' method: private/change-account-settings code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsResponse' example: id: '1' method: private/change-account-settings code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsResponse' example: id: '1' method: private/change-account-settings code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeAccountSettingsResponse' example: id: '1' method: private/change-account-settings code: '50001' message: INTERNAL_SERVER_ERROR /private/get-account-settings: post: tags: - Trading x-apply-to: - rest summary: private/get-account-settings description: Get account settings. operationId: privateGetAccountSettings x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetAccountSettings({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_account_settings({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsRequest' example: id: '697' method: private/get-account-settings api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1721989202781' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsResponse' example: id: '697' method: private/get-account-settings code: '0' result: - leverage: '20' stp_id: '100' stp_scope: S stp_inst: M '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsResponse' example: id: '1' method: private/get-account-settings code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsResponse' example: id: '1' method: private/get-account-settings code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsResponse' example: id: '1' method: private/get-account-settings code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsResponse' example: id: '1' method: private/get-account-settings code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetAccountSettingsResponse' example: id: '1' method: private/get-account-settings code: '50001' message: INTERNAL_SERVER_ERROR /private/create-isolated-margin-transfer: post: tags: - Trading x-apply-to: - rest summary: private/create-isolated-margin-transfer description: Transfer balance between account and isolated position. operationId: privateCreateIsolatedMarginTransfer x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCreateIsolatedMarginTransfer({ isolation_id: '19848526', direction: 'CREDIT', amount: '50', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_create_isolated_margin_transfer({ 'isolation_id': '19848526', 'direction': 'CREDIT', 'amount': '50', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferRequest' example: id: '11' method: private/create-isolated-margin-transfer api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1611022832613' params: isolation_id: '19848526' direction: CREDIT amount: '50' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferResponse' example: id: '11' method: private/create-isolated-margin-transfer code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferResponse' example: id: '1' method: private/create-isolated-margin-transfer code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferResponse' example: id: '1' method: private/create-isolated-margin-transfer code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferResponse' example: id: '1' method: private/create-isolated-margin-transfer code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferResponse' example: id: '1' method: private/create-isolated-margin-transfer code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateIsolatedMarginTransferResponse' example: id: '1' method: private/create-isolated-margin-transfer code: '50001' message: INTERNAL_SERVER_ERROR /private/change-isolated-margin-leverage: post: tags: - Trading x-apply-to: - rest summary: private/change-isolated-margin-leverage description: Changes the maximum leverage of an isolated position. operationId: privateChangeIsolatedMarginLeverage x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateChangeIsolatedMarginLeverage({ isolation_id: '19848526', leverage: 10, }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_change_isolated_margin_leverage({ 'isolation_id': '19848526', 'leverage': 10, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageRequest' example: id: '11' method: private/change-isolated-margin-leverage api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1611022832613' params: isolation_id: '19848526' leverage: '10' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse' example: id: '11' method: private/change-isolated-margin-leverage code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse' example: id: '1' method: private/change-isolated-margin-leverage code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse' example: id: '1' method: private/change-isolated-margin-leverage code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse' example: id: '1' method: private/change-isolated-margin-leverage code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse' example: id: '1' method: private/change-isolated-margin-leverage code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse' example: id: '1' method: private/change-isolated-margin-leverage code: '50001' message: INTERNAL_SERVER_ERROR /private/get-fee-rate: post: tags: - Trading x-apply-to: - rest summary: private/get-fee-rate description: Get fee rates for user’s account. operationId: privateGetFeeRate x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetFeeRate({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_fee_rate({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateRequest' example: id: '1' method: private/get-fee-rate api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: {} nonce: '1721989202781' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateResponse' example: id: '1' method: private/get-fee-rate code: '0' result: spot_tier: '3' deriv_tier: '3' effective_spot_maker_rate_bps: '6.5' effective_spot_taker_rate_bps: '6.9' effective_deriv_maker_rate_bps: '1.1' effective_deriv_taker_rate_bps: '3' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateResponse' example: id: '1' method: private/get-fee-rate code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateResponse' example: id: '1' method: private/get-fee-rate code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateResponse' example: id: '1' method: private/get-fee-rate code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateResponse' example: id: '1' method: private/get-fee-rate code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetFeeRateResponse' example: id: '1' method: private/get-fee-rate code: '50001' message: INTERNAL_SERVER_ERROR /private/get-instrument-fee-rate: post: tags: - Trading x-apply-to: - rest summary: private/get-instrument-fee-rate description: Get the instrument fee rate. operationId: privateGetInstrumentFeeRate x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetInstrumentFeeRate({ instrument_name: 'BTC_USD', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_instrument_fee_rate({ 'instrument_name': 'BTC_USD', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateRequest' example: id: '1' method: private/get-instrument-fee-rate api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: instrument_name: BTC_USD responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateResponse' example: id: '1' method: private/get-instrument-fee-rate code: '0' result: instrument_name: BTC_USD effective_maker_rate_bps: '6.5' effective_taker_rate_bps: '6.9' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateResponse' example: id: '1' method: private/get-instrument-fee-rate code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateResponse' example: id: '1' method: private/get-instrument-fee-rate code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateResponse' example: id: '1' method: private/get-instrument-fee-rate code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateResponse' example: id: '1' method: private/get-instrument-fee-rate code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetInstrumentFeeRateResponse' example: id: '1' method: private/get-instrument-fee-rate code: '50001' message: INTERNAL_SERVER_ERROR /private/get-order-history: post: tags: - Trading - Transaction History x-apply-to: - rest summary: private/get-order-history description: | Gets the order history for a particular instrument. Users should use `user.order` to keep track of real-time order updates, and `private/get-order-history` should primarily be used for recovery; typically when the websocket is disconnected. operationId: privateGetOrderHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetOrderHistory({ instrument_name: 'BTCUSD-PERP', start_time: "1610905028000081486", end_time: "1613570791058211357", limit: 20, }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_order_history({ 'instrument_name': 'BTCUSD-PERP', 'start_time': "1610905028000081486", 'end_time': "1613570791058211357", 'limit': 20, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryRequest' example: id: '1' method: private/get-order-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1613570791060' params: instrument_name: BTCUSD-PERP start_time: '1610905028000081486' end_time: '1613570791058211357' limit: 20 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryResponse' example: id: '1' method: private/get-order-history code: '0' result: data: - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '18342311' client_oid: '1613571154795' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY quantity: '0.0001' limit_price: '51000.0' order_value: '3.900100' avg_price: '0.0' cumulative_quantity: '0.0000' status: CANCELED instrument_name: BTCUSD-PERP fee_instrument_name: USD create_time: '1610905028000' update_time: '1613571320251' - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '18342500' client_oid: '1613571154800' order_type: LIMIT side: BUY quantity: '0.0500' limit_price: '51283.0' avg_price: '51278.5' cumulative_quantity: '0.0500' status: FILLED instrument_name: BTCUSD-PERP create_time: '1613570791059' update_time: '1613570791060' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryResponse' example: id: '1' method: private/get-order-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryResponse' example: id: '1' method: private/get-order-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryResponse' example: id: '1' method: private/get-order-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryResponse' example: id: '1' method: private/get-order-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetOrderHistoryResponse' example: id: '1' method: private/get-order-history code: '50001' message: INTERNAL_SERVER_ERROR /private/get-trades: post: tags: - Trading - Transaction History x-apply-to: - rest summary: private/get-trades description: | Gets all executed trades for a particular instrument. Users should use `user.trade` to keep track of real-time trades, and `private/get-trades` should primarily be used for recovery; typically when the websocket is disconnected. operationId: privateGetTrades x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetTrades({ instrument_name: 'BTCUSD-PERP', start_time: '1619089031996081486', end_time: '1619200052124211357', limit: 20, }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_trades({ 'instrument_name': 'BTCUSD-PERP', 'start_time': '1619089031996081486', 'end_time': '1619200052124211357', 'limit': 20, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesRequest' example: id: '1' method: private/get-trades api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1613570791060' params: instrument_name: BTCUSD-PERP start_time: '1619089031996081486' end_time: '1619200052124211357' limit: 20 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesResponse' example: id: '1' method: private/get-trades code: '0' result: data: - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 event_date: '2021-02-17' journal_type: TRADING traded_quantity: '0.0500' traded_price: '51278.5' fees: '-1.025570' fee_credits: '-0.500000' order_id: '19708564' trade_id: '38554669' trade_match_id: '76423' client_oid: 7665b001-2753-4d17-b266-61ecb755922d taker_side: MAKER side: BUY instrument_name: BTCUSD-PERP fee_instrument_name: USD create_time: '1613570791060' create_time_ns: '1613570791060827635' transact_time_ns: '1613570791060827635' match_count: '1' match_index: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesResponse' example: id: '1' method: private/get-trades code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesResponse' example: id: '1' method: private/get-trades code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesResponse' example: id: '1' method: private/get-trades code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesResponse' example: id: '1' method: private/get-trades code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTradesResponse' example: id: '1' method: private/get-trades code: '50001' message: INTERNAL_SERVER_ERROR /private/get-transactions: post: tags: - Trading - Transaction History x-apply-to: - rest summary: private/get-transactions description: Fetches recent transactions. operationId: privateGetTransactions x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetTransactions({ instrument_name: 'BTCUSD-PERP', start_time: '1619089031996081486', end_time: '1619200052124211357', limit: 20, }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_transactions({ 'instrument_name': 'BTCUSD-PERP', 'start_time': '1619089031996081486', 'end_time': '1619200052124211357', 'limit': 20, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsRequest' example: id: '1' method: private/get-transactions api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1613640752166' params: instrument_name: BTCUSD-PERP start_time: '1619089031996081486' end_time: '1619200052124211357' limit: 20 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsResponse' example: id: '1' method: private/get-transactions code: '0' result: data: - account_id: 88888888-8888-8888-8888-000000000123 event_date: '2021-02-18' journal_type: TRADING journal_id: '187078' transaction_qty: '-0.0005' transaction_cost: '-24.500000' realized_pnl: '-0.006125' order_id: '72062' trade_id: '71497' trade_match_id: '8625' event_timestamp_ms: '1613640752166' event_timestamp_ns: '1613640752166234567' client_oid: 6ac2421d-5078-4ef6-a9d5-9680602ce123 taker_side: MAKER side: SELL instrument_name: BTCUSD-PERP - account_id: 88888888-8888-8888-8888-000000000123 event_date: '2021-02-18' journal_type: SESSION_SETTLE journal_id: '186959' transaction_qty: '0' transaction_cost: '0.000000' realized_pnl: '-0.007800' trade_match_id: '0' event_timestamp_ms: '1613638800001' event_timestamp_ns: '1613638800001124563' client_oid: '' taker_side: '' instrument_name: BTCUSD-PERP - account_id: 88888888-8888-8888-8888-000000000123 event_date: '2021-02-18' journal_type: SESSION_SETTLE journal_id: '186959' transaction_qty: '0' transaction_cost: '0.000000' realized_pnl: '-0.007800' trade_match_id: '0' event_timestamp_ms: '1613638800002' event_timestamp_ns: '1613638800001124563' client_oid: '' taker_side: '' instrument_name: BTCUSD-PERP isolation_id: '19848526' isolation_type: ISOLATED_MARGIN '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsResponse' example: id: '1' method: private/get-transactions code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsResponse' example: id: '1' method: private/get-transactions code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsResponse' example: id: '1' method: private/get-transactions code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsResponse' example: id: '1' method: private/get-transactions code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetTransactionsResponse' example: id: '1' method: private/get-transactions code: '50001' message: INTERNAL_SERVER_ERROR /private/create-withdrawal: post: tags: - Crypto Wallet x-apply-to: - rest summary: private/create-withdrawal description: 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. operationId: privateCreateWithdrawal x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateCreateWithdrawal({ client_wid: 'my_withdrawal_002', currency: 'BTC', amount: '1', address: '2NBqqD5GRJ8wHy1PYyCXTe9ke5226FhavBf', address_tag: '', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_create_withdrawal({ 'client_wid': 'my_withdrawal_002', 'currency': 'BTC', 'amount': '1', 'address': '2NBqqD5GRJ8wHy1PYyCXTe9ke5226FhavBf', 'address_tag': '', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalRequest' example: id: '-1' method: private/create-withdrawal api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1607063412000' params: client_wid: my_withdrawal_002 currency: BTC amount: '1' address: 2NBqqD5GRJ8wHy1PYyCXTe9ke5226FhavBf address_tag: '' network_id: null responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalResponse' example: id: '-1' method: private/create-withdrawal code: '0' result: id: '2220' amount: '1' fee: '0.0004' symbol: BTC address: 2NBqqD5GRJ8wHy1PYyCXTe9ke5226FhavBf client_wid: my_withdrawal_002 create_time: '1607063412000' network_id: null '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalResponse' example: id: '1' method: private/create-withdrawal code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalResponse' example: id: '1' method: private/create-withdrawal code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalResponse' example: id: '1' method: private/create-withdrawal code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalResponse' example: id: '1' method: private/create-withdrawal code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateCreateWithdrawalResponse' example: id: '1' method: private/create-withdrawal code: '50001' message: INTERNAL_SERVER_ERROR /private/get-currency-networks: post: tags: - Crypto Wallet x-apply-to: - rest summary: private/get-currency-networks description: Get the symbol network mapping. operationId: privateGetCurrencyNetworks x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetCurrencyNetworks({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_currency_networks({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksRequest' example: id: '12' method: private/get-currency-networks params: {} api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640830660110' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksResponse' example: id: '123456' method: private/get-currency-networks code: '0' result: update_time: '1641151604000' currency_map: AGLD: full_name: Adventure Gold default_network: null network_list: - network_id: ETH withdrawal_fee: null withdraw_enabled: true min_withdrawal_amount: '10.0' deposit_enabled: true confirmation_required: '12' MATIC: full_name: Polygon default_network: ETH network_list: - network_id: BNB withdrawal_fee: '0.80000000' withdraw_enabled: true min_withdrawal_amount: '1.6' deposit_enabled: true confirmation_required: '0' - network_id: ETH withdrawal_fee: '20.00000000' withdraw_enabled: true min_withdrawal_amount: '40.0' deposit_enabled: true confirmation_required: '0' - network_id: MATIC withdrawal_fee: '0.08000000' withdraw_enabled: true min_withdrawal_amount: '0.16' deposit_enabled: true confirmation_required: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksResponse' example: id: '1' method: private/get-currency-networks code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksResponse' example: id: '1' method: private/get-currency-networks code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksResponse' example: id: '1' method: private/get-currency-networks code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksResponse' example: id: '1' method: private/get-currency-networks code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetCurrencyNetworksResponse' example: id: '1' method: private/get-currency-networks code: '50001' message: INTERNAL_SERVER_ERROR /private/get-deposit-address: post: tags: - Crypto Wallet x-apply-to: - rest summary: private/get-deposit-address description: Fetches deposit address. Withdrawal setting must be enabled for your API Key. If you do not see the option when viewing your API Keys, this feature is not yet available for you. operationId: privateGetDepositAddress x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetDepositAddress({ currency: 'CRO', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_deposit_address({ 'currency': 'CRO', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressRequest' example: id: '-1' method: private/get-deposit-address api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1587846358253' params: currency: CRO responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressResponse' example: id: '11' method: private/get-deposit-address code: '0' result: deposit_address_list: - currency: CRO create_time: '1615886328000' id: '12345' address: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx status: '1' network: CRO - currency: CRO create_time: '1615886332000' id: '12346' address: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy status: '1' network: ETH '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressResponse' example: id: '1' method: private/get-deposit-address code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressResponse' example: id: '1' method: private/get-deposit-address code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressResponse' example: id: '1' method: private/get-deposit-address code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressResponse' example: id: '1' method: private/get-deposit-address code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositAddressResponse' example: id: '1' method: private/get-deposit-address code: '50001' message: INTERNAL_SERVER_ERROR /private/get-deposit-history: post: tags: - Crypto Wallet x-apply-to: - rest summary: private/get-deposit-history description: Fetches deposit history. If you do not see the option when viewing your API Keys, this feature is not yet available for you. operationId: privateGetDepositHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetDepositHistory({ currency: 'XRP', start_ts: "1587846300000", end_ts: "1587846358253", page_size: "2", page: "0", status: '1', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_deposit_history({ 'currency': 'XRP', 'start_ts': "1587846300000", 'end_ts': "1587846358253", 'page_size': "2", 'page': "0", 'status': '1', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryRequest' example: id: '-1' method: private/get-deposit-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1587846358253' params: currency: XRP start_ts: '1587846300000' end_ts: '1587846358253' page_size: '2' page: '0' status: '1' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryResponse' example: id: '11' method: private/get-deposit-history code: '0' result: deposit_list: - currency: XRP fee: '1.0' create_time: '1607063412000' id: '2220' update_time: '1607063460000' amount: '100' address: 2NBqqD5GRJ8wHy1PYyCXTe9ke5226FhavBf?1234567890 status: '1' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryResponse' example: id: '1' method: private/get-deposit-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryResponse' example: id: '1' method: private/get-deposit-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryResponse' example: id: '1' method: private/get-deposit-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryResponse' example: id: '1' method: private/get-deposit-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetDepositHistoryResponse' example: id: '1' method: private/get-deposit-history code: '50001' message: INTERNAL_SERVER_ERROR /private/get-withdrawal-history: post: tags: - Crypto Wallet x-apply-to: - rest summary: private/get-withdrawal-history description: Fetches withdrawal history. If you do not see the option when viewing your API Keys, this feature is not yet available for you. operationId: privateGetWithdrawalHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateGetWithdrawalHistory({ currency: 'XRP', start_ts: "1587846300000", end_ts: "1587846358253", page_size: "2", page: "0", status: '1', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_get_withdrawal_history({ 'currency': 'XRP', 'start_ts': "1587846300000", 'end_ts': "1587846358253", 'page_size': "2", 'page': "0", 'status': '1', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryRequest' example: id: '-1' method: private/get-withdrawal-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1587846358253' params: currency: XRP start_ts: '1587846300000' end_ts: '1587846358253' page_size: '2' page: '0' status: '1' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryResponse' example: id: '11' method: private/get-withdrawal-history code: '0' result: withdrawal_list: - currency: XRP client_wid: my_withdrawal_002 fee: '1.0' create_time: '1607063412000' id: '2220' update_time: '1607063460000' amount: '100' address: 2NBqqD5GRJ8wHy1PYyCXTe9ke5226FhavBf?1234567890 status: '1' txid: '' network_id: null '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryResponse' example: id: '1' method: private/get-withdrawal-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryResponse' example: id: '1' method: private/get-withdrawal-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryResponse' example: id: '1' method: private/get-withdrawal-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryResponse' example: id: '1' method: private/get-withdrawal-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateGetWithdrawalHistoryResponse' example: id: '1' method: private/get-withdrawal-history code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/create-order: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/create-order description: | Creates a new BUY or SELL trigger order on the Exchange. `type` must be STOP_LOSS, STOP_LIMIT, TAKE_PROFIT or TAKE_PROFIT_LIMIT. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check if the orders are successfully created. **Helpful information:** - STOP_LIMIT and TAKE_PROFIT_LIMIT will execute a LIMIT order when the ref_price is reached. - STOP_LOSS and TAKE_PROFIT will execute a MARKET order when the ref_price is reached. **To create trigger orders based on ref_price vs. the reference price (ref_price_type):** - ref_price below ref_price_type price: SELL STOP_LOSS and STOP_LIMIT, BUY TAKE_PROFIT and TAKE_PROFIT_LIMIT - ref_price above ref_price_type price: BUY STOP_LOSS and STOP_LIMIT, SELL TAKE_PROFIT and TAKE_PROFIT_LIMIT **SpotAttach / DerivAttach:** - **Contingency type resolution**: Automatically resolved from instrument type - spot instruments → SPOT_ATTACH, derivative instruments → DERIV_ATTACH - **DerivAttach attach-to-order**: Use `attach_order_id` to attach TP/SL to an existing limit order - **DerivAttach attach-to-position**: Use `attach_isolation_id` to attach TP/SL directly to an existing position (> 0 for isolated position ID, 0 for cross-margin position). Requires REDUCE_ONLY in exec_inst. - **Standalone TP/SL**: For derivatives, if neither `attach_order_id` nor `attach_isolation_id` is specified, isolation is resolved from `isolation_id` parameter (if provided) or defaults to cross-margin operationId: privateAdvancedCreateOrder x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCreateOrder({ instrument_name: 'CRO_USD', side: 'SELL', type: 'STOP_LIMIT', quantity: '10', price: '0.12', ref_price: '0.12', client_oid: 'c5f682ed-7108-4f1c-b755-972fcdca0f02', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_create_order({ 'instrument_name': 'CRO_USD', 'side': 'SELL', 'type': 'STOP_LIMIT', 'quantity': '10', 'price': '0.12', 'ref_price': '0.12', 'client_oid': 'c5f682ed-7108-4f1c-b755-972fcdca0f02', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderRequest' example: method: private/advanced/create-order id: '6573' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1750385416548' params: instrument_name: CRO_USD side: SELL type: STOP_LIMIT quantity: '10' price: '0.12' ref_price: '0.12' client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderResponse' example: id: '6573' method: private/advanced/create-order code: '0' result: client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 order_id: '5755600460443882762' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderResponse' example: id: '1' method: private/advanced/create-order code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderResponse' example: id: '1' method: private/advanced/create-order code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderResponse' example: id: '1' method: private/advanced/create-order code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderResponse' example: id: '1' method: private/advanced/create-order code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderResponse' example: id: '1' method: private/advanced/create-order code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/amend-order: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/amend-order description: | Amends an existing trigger order on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check when the order is successfully amended. **Trigger Order Type Conversion:** - Set `new_price` to "0" → Convert trigger limit order to trigger market order - Set `new_price` to "> 0" → Convert trigger market order to trigger limit order operationId: privateAdvancedAmendOrder x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedAmendOrder({ order_id: '18342311', new_ref_price: '46000.0', new_quantity: '0.15', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_amend_order({ 'order_id': '18342311', 'new_ref_price': '46000.0', 'new_quantity': '0.15', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderRequest' example: method: private/advanced/amend-order id: '1' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: order_id: '18342311' new_ref_price: '46000.0' new_quantity: '0.15' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderResponse' example: id: '1' method: private/advanced/amend-order code: '0' result: order_id: '18342311' client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderResponse' example: id: '1' method: private/advanced/amend-order code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderResponse' example: id: '1' method: private/advanced/amend-order code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderResponse' example: id: '1' method: private/advanced/amend-order code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderResponse' example: id: '1' method: private/advanced/amend-order code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedAmendOrderResponse' example: id: '1' method: private/advanced/amend-order code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/create-oco: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/create-oco description: | Creates a One-cancels-the-Other (OCO) execution strategy on the Exchange. OCO execution strategy allows users to place a two-order strategy where one order automatically cancels the other when one of the orders is partially/fully executed. Users are able to place 2 orders - one LIMIT and one trigger order. Only one of the orders will be executed. The trigger order can either be a stop loss or take profit order. The OCO order type is only available for Spot trading pairs for now. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check if the orders are successfully created. For the content of each order in order_list, please refer to `private/create-order` for details. One order must be `LIMIT`, the other order must be `STOP_LOSS`, `STOP_LIMIT`, `TAKE_PROFIT_LIMIT` or `TAKE_PROFIT`. For `ref_price_type` of the trigger order, only `MARK_PRICE` is supported for now. operationId: privateAdvancedCreateOco x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCreateOco({ order_list: [ { instrument_name: 'BTCUSD', quantity: '0.1', type: 'LIMIT', price: '93000', side: 'SELL' }, { instrument_name: 'BTCUSD', quantity: '0.1', type: 'STOP_LOSS', ref_price: '80000', side: 'SELL' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_create_oco({ 'order_list': [ {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'LIMIT', 'price': '93000', 'side': 'SELL'}, {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'STOP_LOSS', 'ref_price': '80000', 'side': 'SELL'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoRequest' example: method: private/advanced/create-oco id: '123456789' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '123456789000' params: order_list: - instrument_name: BTCUSD quantity: '0.1' type: LIMIT price: '93000' side: SELL - instrument_name: BTCUSD quantity: '0.1' type: STOP_LOSS ref_price: '80000' side: SELL responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoResponse' example: id: '1661331443' method: private/advanced/create-oco code: '0' result: list_id: '6498090546073120100' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoResponse' example: id: '1' method: private/advanced/create-oco code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoResponse' example: id: '1' method: private/advanced/create-oco code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoResponse' example: id: '1' method: private/advanced/create-oco code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoResponse' example: id: '1' method: private/advanced/create-oco code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOcoResponse' example: id: '1' method: private/advanced/create-oco code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/cancel-oco: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/cancel-oco description: | Cancel an OCO order on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check when each of the orders is successfully cancelled. operationId: privateAdvancedCancelOco x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCancelOco({ list_id: '4421958062479290999', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_cancel_oco({ 'list_id': '4421958062479290999', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoRequest' example: method: private/advanced/cancel-oco id: '1234' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '123456789000' params: list_id: '4421958062479290999' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoResponse' example: id: '1661328073' method: private/advanced/cancel-oco code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoResponse' example: id: '1' method: private/advanced/cancel-oco code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoResponse' example: id: '1' method: private/advanced/cancel-oco code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoResponse' example: id: '1' method: private/advanced/cancel-oco code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoResponse' example: id: '1' method: private/advanced/cancel-oco code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOcoResponse' example: id: '1' method: private/advanced/cancel-oco code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/create-oto: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/create-oto description: | Creates a One-triggers-the-Other (OTO) execution strategy on the Exchange. OTO execution strategy allows users to place a two-order strategy where one order automatically triggers the other when the first order is fully executed. Users are able to place a limit or market order with a trigger order, and only when the primary order is fully executed, the trigger order will take effect. The trigger order can either be a stop loss or take profit order. **SpotAttach / DerivAttach:** This API creates SpotAttach (for spot instruments) or DerivAttach (for derivative instruments) order types. The contingency type is automatically resolved from the instrument type. With 2 legs (1 limit/market + 1 trigger), it follows OTO behavior. - **SpotAttach**: Flexible - you can later attach additional TP/SL using `private/advanced/create-order` with `attach_order_id`, effectively converting it to OTOCO behavior. You can also cancel individual legs using `private/advanced/cancel-order` and reattach new ones. - **DerivAttach**: For derivatives, the primary leg may specify `isolation_id`, `leverage`, `isolated_margin_amount`, and `exec_inst` may include ISOLATED_MARGIN. Trigger legs inherit the isolation mode from the parent leg. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check if the orders are successfully created. For the content of each order in order_list, please refer to `private/create-order` for details. One order must be `LIMIT` or `MARKET`, and the other must be `STOP_LOSS`, `STOP_LIMIT`, `TAKE_PROFIT_LIMIT` or `TAKE_PROFIT`. The `ref_price_type` for the trigger order supports `MARK_PRICE` (default), `INDEX_PRICE`, and `LAST_PRICE`. operationId: privateAdvancedCreateOto x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCreateOto({ order_list: [ { instrument_name: 'BTCUSD', quantity: '0.1', type: 'LIMIT', price: '93000', side: 'BUY' }, { instrument_name: 'BTCUSD', quantity: '0.1', type: 'STOP_LOSS', ref_price: '80000', side: 'SELL' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_create_oto({ 'order_list': [ {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'LIMIT', 'price': '93000', 'side': 'BUY'}, {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'STOP_LOSS', 'ref_price': '80000', 'side': 'SELL'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoRequest' example: method: private/advanced/create-oto id: '123456789' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '123456789000' params: order_list: - instrument_name: BTCUSD quantity: '0.1' type: LIMIT price: '93000' side: BUY - instrument_name: BTCUSD quantity: '0.1' type: STOP_LOSS ref_price: '80000' side: SELL responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoResponse' example: id: '1661331443' method: private/advanced/create-oto code: '0' result: list_id: '6498090546073120100' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoResponse' example: id: '1' method: private/advanced/create-oto code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoResponse' example: id: '1' method: private/advanced/create-oto code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoResponse' example: id: '1' method: private/advanced/create-oto code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoResponse' example: id: '1' method: private/advanced/create-oto code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtoResponse' example: id: '1' method: private/advanced/create-oto code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/cancel-oto: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/cancel-oto description: | Cancel a SPOT_ATTACH or DERIV_ATTACH order on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check when each of the orders is successfully cancelled. **Note:** This API can also be used to cancel SpotAttach / DerivAttach orders regardless of the number of legs (2 or 3). Both `cancel-oto` and `cancel-otoco` can be used interchangeably to cancel SpotAttach / DerivAttach orders by `list_id`. operationId: privateAdvancedCancelOto x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCancelOto({ list_id: '4421958062479290999', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_cancel_oto({ 'list_id': '4421958062479290999', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoRequest' example: method: private/advanced/cancel-oto id: '1234' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '123456789000' params: list_id: '4421958062479290999' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoResponse' example: id: '1661328073' method: private/advanced/cancel-oto code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoResponse' example: id: '1' method: private/advanced/cancel-oto code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoResponse' example: id: '1' method: private/advanced/cancel-oto code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoResponse' example: id: '1' method: private/advanced/cancel-oto code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoResponse' example: id: '1' method: private/advanced/cancel-oto code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtoResponse' example: id: '1' method: private/advanced/cancel-oto code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/create-otoco: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/create-otoco description: | Creates a One-Triggers-a-One-Cancels-the-Other (OTOCO) execution strategy on the Exchange. OTOCO execution strategy allows users to place a three-order strategy where one order automatically triggers the other two when the first order is fully executed. Users are able to place a limit or market order with two trigger orders, and only when the primary order is fully executed, the two trigger orders will take effect. The two trigger orders must be one stop loss and one take profit orders. **SpotAttach / DerivAttach:** This API creates SpotAttach (for spot instruments) or DerivAttach (for derivative instruments) order types. The contingency type is automatically resolved from the instrument type. With 3 legs (1 limit/market + 2 triggers), it follows OTOCO behavior. - **SpotAttach**: When either one of the two trigger orders is executed, the other is automatically canceled (OCO behavior). SpotAttach orders are flexible - you can cancel one of the TP/SL legs using `private/advanced/cancel-order`, effectively converting it to OTO behavior. You can also reattach new TP/SL using `private/advanced/create-order` with `attach_order_id`. - **DerivAttach**: For derivatives, the two trigger legs are independent - one firing does NOT cancel the other (unlike SpotAttach). The primary leg may specify `isolation_id`, `leverage`, `isolated_margin_amount`, and `exec_inst` may include ISOLATED_MARGIN. Trigger legs inherit the isolation mode from the parent leg. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check if the orders are successfully created. For the content of each order in order_list, please refer to `private/create-order` for details. One order must be `LIMIT` or `MARKET`, and for the two trigger orders, one must be `STOP_LOSS` or `STOP_LIMIT`, and the other one must be `TAKE_PROFIT` or `TAKE_PROFIT_LIMIT`. The `ref_price_type` for the trigger orders supports `MARK_PRICE` (default), `INDEX_PRICE`, and `LAST_PRICE`. operationId: privateAdvancedCreateOtoco x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCreateOtoco({ order_list: [ { instrument_name: 'BTCUSD', quantity: '0.1', type: 'LIMIT', price: '93000', side: 'BUY' }, { instrument_name: 'BTCUSD', quantity: '0.1', type: 'STOP_LOSS', ref_price: '80000', side: 'SELL' }, { instrument_name: 'BTCUSD', quantity: '0.1', type: 'TAKE_PROFIT', ref_price: '108000', side: 'SELL' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_create_otoco({ 'order_list': [ {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'LIMIT', 'price': '93000', 'side': 'BUY'}, {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'STOP_LOSS', 'ref_price': '80000', 'side': 'SELL'}, {'instrument_name': 'BTCUSD', 'quantity': '0.1', 'type': 'TAKE_PROFIT', 'ref_price': '108000', 'side': 'SELL'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoRequest' example: method: private/advanced/create-otoco id: '123456789' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '123456789000' params: order_list: - instrument_name: BTCUSD quantity: '0.1' type: LIMIT price: '93000' side: BUY - instrument_name: BTCUSD quantity: '0.1' type: STOP_LOSS ref_price: '80000' side: SELL - instrument_name: BTCUSD quantity: '0.1' type: TAKE_PROFIT ref_price: '108000' side: SELL responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoResponse' example: id: '1661331443' method: private/advanced/create-otoco code: '0' result: list_id: '6498090546073120100' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoResponse' example: id: '1' method: private/advanced/create-otoco code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoResponse' example: id: '1' method: private/advanced/create-otoco code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoResponse' example: id: '1' method: private/advanced/create-otoco code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoResponse' example: id: '1' method: private/advanced/create-otoco code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOtocoResponse' example: id: '1' method: private/advanced/create-otoco code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/cancel-otoco: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/cancel-otoco description: | Cancel a SPOT_ATTACH or DERIV_ATTACH order on the Exchange. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check when each of the orders is successfully cancelled. **Note:** This API can also be used to cancel SpotAttach / DerivAttach orders regardless of the number of legs (2 or 3). Both `cancel-oto` and `cancel-otoco` can be used interchangeably to cancel SpotAttach / DerivAttach orders by `list_id`. operationId: privateAdvancedCancelOtoco x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCancelOtoco({ list_id: '4421958062479290999', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_cancel_otoco({ 'list_id': '4421958062479290999', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoRequest' example: method: private/advanced/cancel-otoco id: '1234' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '123456789000' params: list_id: '4421958062479290999' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoResponse' example: id: '1661328073' method: private/advanced/cancel-otoco code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoResponse' example: id: '1' method: private/advanced/cancel-otoco code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoResponse' example: id: '1' method: private/advanced/cancel-otoco code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoResponse' example: id: '1' method: private/advanced/cancel-otoco code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoResponse' example: id: '1' method: private/advanced/cancel-otoco code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOtocoResponse' example: id: '1' method: private/advanced/cancel-otoco code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/cancel-order: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/cancel-order description: | Cancel an individual order of a OTO/OTOCO order on the Exchange (asynchronous). This call is asynchronous, so the response is simply a confirmation of the request. The `user.advance.order` subscription can be used to check when the order is successfully canceled. operationId: privateAdvancedCancelOrder x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCancelOrder({ order_id: '18342311', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_cancel_order({ 'order_id': '18342311', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderRequest' example: id: '1' nonce: '1610905028000' method: private/advanced/cancel-order api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: order_id: '18342311' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderResponse' example: id: '1' method: private/advanced/cancel-order code: '0' message: NO_ERROR result: client_oid: c5f682ed-7108-4f1c-b755-972fcdca0f02 order_id: '18342311' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderResponse' example: id: '1' method: private/advanced/cancel-order code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderResponse' example: id: '1' method: private/advanced/cancel-order code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderResponse' example: id: '1' method: private/advanced/cancel-order code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderResponse' example: id: '1' method: private/advanced/cancel-order code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderResponse' example: id: '1' method: private/advanced/cancel-order code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/cancel-all-orders: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/cancel-all-orders description: | Cancels all OTO/OTOCO orders for a particular instrument/pair (asynchronous). This call is asynchronous, so the response is simply a confirmation of the request. The `user.advance.order` subscription can be used to check when the order is successfully canceled. operationId: privateAdvancedCancelAllOrders x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCancelAllOrders({ instrument_name: 'BTC_USD', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_cancel_all_orders({ 'instrument_name': 'BTC_USD', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersRequest' example: id: '1' nonce: '1611169184000' method: private/advanced/cancel-all-orders api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE params: instrument_name: BTC_USD responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersResponse' example: id: '1' method: private/advanced/cancel-all-orders code: '0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersResponse' example: id: '1' method: private/advanced/cancel-all-orders code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersResponse' example: id: '1' method: private/advanced/cancel-all-orders code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersResponse' example: id: '1' method: private/advanced/cancel-all-orders code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersResponse' example: id: '1' method: private/advanced/cancel-all-orders code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelAllOrdersResponse' example: id: '1' method: private/advanced/cancel-all-orders code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/get-open-orders: post: tags: - Advanced Order Management x-apply-to: - rest summary: private/advanced/get-open-orders description: | Gets all open orders for OTO/OTOCO orders for a particular instrument. operationId: privateAdvancedGetOpenOrders x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedGetOpenOrders({ instrument_name: 'BTC_USD', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_get_open_orders({ 'instrument_name': 'BTC_USD', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersRequest' example: id: '1' method: private/advanced/get-open-orders api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: BTC_USD responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersResponse' example: id: '1' method: private/advanced/get-open-orders code: '0' result: data: - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848525' client_oid: '1613571154900' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: [] quantity: '0.0100' limit_price: '50000.0' order_value: '500.000000' maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120100' contingency_type: OTOCO leg_id: '1' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848526' client_oid: '1613571154901' order_type: STOP_LOSS time_in_force: GOOD_TILL_CANCEL side: SELL exec_inst: [] quantity: '0.0100' ref_price: '45000.00' ref_price_type: MARK_PRICE maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120100' contingency_type: OTOCO leg_id: '2' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848526' client_oid: '1613571154901' order_type: TAKE_PROFIT time_in_force: GOOD_TILL_CANCEL side: SELL exec_inst: [] quantity: '0.0100' ref_price: '55000.00' ref_price_type: MARK_PRICE maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120100' contingency_type: OTOCO leg_id: '3' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersResponse' example: id: '1' method: private/advanced/get-open-orders code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersResponse' example: id: '1' method: private/advanced/get-open-orders code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersResponse' example: id: '1' method: private/advanced/get-open-orders code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersResponse' example: id: '1' method: private/advanced/get-open-orders code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOpenOrdersResponse' example: id: '1' method: private/advanced/get-open-orders code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/get-order-detail: post: tags: - Advanced Order Management x-apply-to: - rest summary: private/advanced/get-order-detail description: | Gets detail of a single advanced order by `order_id` or `client_oid`. operationId: privateAdvancedGetOrderDetail x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedGetOrderDetail({ order_id: '19848525', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_get_order_detail({ 'order_id': '19848525', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailRequest' example: id: '1' method: private/advanced/get-order-detail api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: order_id: '19848525' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailResponse' example: id: '1' method: private/advanced/get-order-detail code: '0' result: account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848525' client_oid: '1613571154900' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: [] quantity: '0.0100' limit_price: '50000.0' order_value: '500.000000' maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: ACTIVE update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120199' contingency_type: OTO leg_id: '2' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailResponse' example: id: '1' method: private/advanced/get-order-detail code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailResponse' example: id: '1' method: private/advanced/get-order-detail code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailResponse' example: id: '1' method: private/advanced/get-order-detail code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailResponse' example: id: '1' method: private/advanced/get-order-detail code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderDetailResponse' example: id: '1' method: private/advanced/get-order-detail code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/get-order-history: post: tags: - Advanced Order Management x-apply-to: - rest summary: private/advanced/get-order-history description: | Gets the order history of OTO/OTOCO orders for a particular instrument. Users should use `user.advance.order` to keep track of real-time order updates, and `private/advanced/get-order-history` should primarily be used for recovery; typically when the websocket is disconnected. operationId: privateAdvancedGetOrderHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedGetOrderHistory({ instrument_name: 'BTC_USD', start_time: "1610905028000081486", end_time: "1613570791058211357", limit: "20", }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_get_order_history({ 'instrument_name': 'BTC_USD', 'start_time': "1610905028000081486", 'end_time': "1613570791058211357", 'limit': "20", }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryRequest' example: id: '1' method: private/advanced/get-order-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: BTC_USD start_time: '1610905028000081486' end_time: '1613570791058211357' limit: '20' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryResponse' example: id: '1' method: private/advanced/get-order-history code: '0' result: data: - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848525' client_oid: '1613571154900' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: [] quantity: '0.0100' limit_price: '50000.0' order_value: '500.000000' maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0100' cumulative_value: '500.000000' cumulative_fee: '0.000000' status: FILLED update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120100' contingency_type: OTOCO leg_id: '1' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848526' client_oid: '1613571154901' order_type: STOP_LOSS time_in_force: GOOD_TILL_CANCEL side: SELL exec_inst: [] quantity: '0.0100' ref_price: '45000.00' ref_price_type: MARK_PRICE maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0100' cumulative_value: '450.0000' cumulative_fee: '0.000000' status: FILLED update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120100' contingency_type: OTOCO leg_id: '2' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' - account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21a5 order_id: '19848526' client_oid: '1613571154901' order_type: TAKE_PROFIT time_in_force: GOOD_TILL_CANCEL side: SELL exec_inst: [] quantity: '0.0100' ref_price: '55000.00' ref_price_type: MARK_PRICE maker_fee_rate: '0.000250' taker_fee_rate: '0.000400' avg_price: '0.0' cumulative_quantity: '0.0000' cumulative_value: '0.000000' cumulative_fee: '0.000000' status: CANCELED update_user_id: fd797356-55db-48c2-a44d-157aabf702e8 order_date: '2021-02-17' instrument_name: BTCUSD fee_instrument_name: USD list_id: '6498090546073120100' contingency_type: OTOCO leg_id: '3' create_time: '1613575617173' create_time_ns: '1613575617173123456' update_time: '1613575617173' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryResponse' example: id: '1' method: private/advanced/get-order-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryResponse' example: id: '1' method: private/advanced/get-order-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryResponse' example: id: '1' method: private/advanced/get-order-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryResponse' example: id: '1' method: private/advanced/get-order-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderHistoryResponse' example: id: '1' method: private/advanced/get-order-history code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/create-order-list: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/create-order-list description: | Creates multiple advanced orders in a single request. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check when the orders are successfully created. operationId: privateAdvancedCreateOrderList x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCreateOrderList({ order_list: [ { instrument_name: 'BTC_USD', side: 'SELL', type: 'STOP_LOSS', quantity: '0.1', ref_price: '45000.0', client_oid: 'my_sl_order' }, { instrument_name: 'BTC_USD', side: 'SELL', type: 'TAKE_PROFIT', quantity: '0.1', ref_price: '55000.0', client_oid: 'my_tp_order' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_create_order_list({ 'order_list': [ {'instrument_name': 'BTC_USD', 'side': 'SELL', 'type': 'STOP_LOSS', 'quantity': '0.1', 'ref_price': '45000.0', 'client_oid': 'my_sl_order'}, {'instrument_name': 'BTC_USD', 'side': 'SELL', 'type': 'TAKE_PROFIT', 'quantity': '0.1', 'ref_price': '55000.0', 'client_oid': 'my_tp_order'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListRequest' example: method: private/advanced/create-order-list id: '1' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: order_list: - instrument_name: BTC_USD side: SELL type: STOP_LOSS quantity: '0.1' ref_price: '45000.0' client_oid: my_sl_order - instrument_name: BTC_USD side: SELL type: TAKE_PROFIT quantity: '0.1' ref_price: '55000.0' client_oid: my_tp_order responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListResponse' example: id: '1' method: private/advanced/create-order-list code: '0' result: - index: 0 code: 0 order_id: '289991951579667814' client_oid: my_sl_order - index: 1 code: 0 order_id: '289991951579667815' client_oid: my_tp_order '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListResponse' example: id: '1' method: private/advanced/create-order-list code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListResponse' example: id: '1' method: private/advanced/create-order-list code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListResponse' example: id: '1' method: private/advanced/create-order-list code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListResponse' example: id: '1' method: private/advanced/create-order-list code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCreateOrderListResponse' example: id: '1' method: private/advanced/create-order-list code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/cancel-order-list: post: tags: - Advanced Order Management x-apply-to: - rest - ws-user-api summary: private/advanced/cancel-order-list description: | Cancels multiple advanced orders in a single request. This call is asynchronous, so the response is simply a confirmation of the request. The `user.advanced.order` subscription can be used to check when the orders are successfully canceled. operationId: privateAdvancedCancelOrderList x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedCancelOrderList({ order_list: [ { order_id: '289991951579667814' }, { client_oid: 'my_tp_order' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_cancel_order_list({ 'order_list': [ {'order_id': '289991951579667814'}, {'client_oid': 'my_tp_order'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListRequest' example: method: private/advanced/cancel-order-list id: '1' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: order_list: - order_id: '289991951579667814' - client_oid: my_tp_order responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListResponse' example: id: '1' method: private/advanced/cancel-order-list code: '0' result: - index: 0 code: 0 - index: 1 code: 0 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListResponse' example: id: '1' method: private/advanced/cancel-order-list code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListResponse' example: id: '1' method: private/advanced/cancel-order-list code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListResponse' example: id: '1' method: private/advanced/cancel-order-list code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListResponse' example: id: '1' method: private/advanced/cancel-order-list code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedCancelOrderListResponse' example: id: '1' method: private/advanced/cancel-order-list code: '50001' message: INTERNAL_SERVER_ERROR /private/advanced/get-order-list-detail: post: tags: - Advanced Order Management x-apply-to: - rest summary: private/advanced/get-order-list-detail description: | Gets order details for multiple OCO/SpotAttach orders by their list IDs. This endpoint allows batch querying of order information across different contingency order groups. operationId: privateAdvancedGetOrderListDetail x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateAdvancedGetOrderListDetail({ list_id_list: ['4611686018427705308', '4611686018427705309'], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_advanced_get_order_list_detail({ 'list_id_list': ['4611686018427705308', '4611686018427705309'], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailRequest' example: method: private/advanced/get-order-list-detail id: '1' api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: list_id_list: - '4611686018427705308' - '4611686018427705309' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailResponse' example: id: '1' method: private/advanced/get-order-list-detail code: '0' result: data: - account_id: 5207a638-b79a-4c13-9d41-323be7556c17 order_id: '289987352276367396' client_oid: '289987352276367396' order_type: LIMIT time_in_force: GOOD_TILL_CANCEL side: BUY exec_inst: [] quantity: '0.01000' limit_price: '100000.00' order_value: '1000.0' avg_price: '100000.00' cumulative_quantity: '0.01000' cumulative_value: '1000.0000000' cumulative_fee: '-2.5' status: FILLED update_user_id: 5207a638-b79a-4c13-9d41-323be7556c17 order_date: '2025-09-09' instrument_name: BTC_USD fee_instrument_name: USD list_id: '4611686018427705309' contingency_type: SPOT_ATTACH leg_id: '1' attach_order_id: '5755600460443882762' create_time: '1757409908295' create_time_ns: '1757409908295832533' update_time: '1757430498603' - account_id: 5207a638-b79a-4c13-9d41-323be7556c17 order_id: '289987352276367397' client_oid: '289987352276367397' order_type: STOP_LOSS time_in_force: GOOD_TILL_CANCEL side: SELL exec_inst: [] quantity: '0.01000' limit_price: '0.00' order_value: '900.0' avg_price: '0.00' cumulative_quantity: '0.00000' cumulative_value: '0.0000000' cumulative_fee: '0' status: PENDING update_user_id: 5207a638-b79a-4c13-9d41-323be7556c17 order_date: '2025-09-09' instrument_name: BTC_USD fee_instrument_name: USD list_id: '4611686018427705309' contingency_type: SPOT_ATTACH leg_id: '2' attach_order_id: '5755600460443882762' ref_price: '90000.00' ref_price_type: MARK_PRICE create_time: '1757409908295' create_time_ns: '1757409908295832533' update_time: '1757409908295' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailResponse' example: id: '1' method: private/advanced/get-order-list-detail code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailResponse' example: id: '1' method: private/advanced/get-order-list-detail code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailResponse' example: id: '1' method: private/advanced/get-order-list-detail code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailResponse' example: id: '1' method: private/advanced/get-order-list-detail code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateAdvancedGetOrderListDetailResponse' example: id: '1' method: private/advanced/get-order-list-detail code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-access: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-access description: Retrieves fiat access information for a user account. Used by FCM/DCM brokers to check deposit and withdrawal permissions for different currencies and payment networks on behalf of their users. operationId: privateFiatFiatAccess x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatAccess({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_access({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessRequest' example: id: '3' method: private/fiat/fiat-access api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1773372503821' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessResponse' example: id: '3' method: private/fiat/fiat-access code: '0' result: accesses: - currency: USD payment_network: us_ach is_deposit_enable: true is_withdraw_enable: true '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessResponse' example: id: '1' method: private/fiat/fiat-access code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessResponse' example: id: '1' method: private/fiat/fiat-access code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessResponse' example: id: '1' method: private/fiat/fiat-access code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessResponse' example: id: '1' method: private/fiat/fiat-access code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatAccessResponse' example: id: '1' method: private/fiat/fiat-access code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-deposit-info: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-deposit-info description: Retrieves fiat deposit information for the authenticated user. Returns bank details for depositing fiat currency with optional payment network filtering. operationId: privateFiatFiatDepositInfo x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatDepositInfo({ payment_networks: 'usd_cubix', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_deposit_info({ 'payment_networks': 'usd_cubix', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoRequest' example: id: '123456' method: private/fiat/fiat-deposit-info api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: payment_networks: usd_cubix responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoResponse' examples: Example - usd_cubix: value: id: '123456' method: private/fiat/fiat-deposit-info code: '0' result: deposit_info_list: - payment_network: usd_cubix currency: USD bank_details: account_holder_name: null bank_name: null bank_address: null bank_country: null routing_number: null account_number: null recipient_name: null recipient_address: null bic_code: null iban_code: null reference_code: null sort_code: null cubix_partner_name: Crypto.com cubix_account_name: Foris Dax Inc cubix_account_id: 48e8431d-2026-41d4-a872-b1ed00db8626 cubix_account_number: '5859' account_type: null meta: null Example - usd_swift: value: id: '0' method: private/fiat/fiat-deposit-info code: '0' result: deposit_info_list: - payment_network: usd_swift currency: USD bank_details: account_holder_name: null bank_name: Customers Bank bank_address: 701 Reading Avenue, West Reading, Pennsylvania 19611 bank_country: null routing_number: '031302971' account_number: '5415859' recipient_name: FORIS DAX LIMITED recipient_address: P.O. BOX 31910, 20 GENESIS CLOSE GRAND CAYMAN bic_code: CUESUS33 iban_code: null reference_code: '676938157158298' sort_code: null cubix_partner_name: null cubix_account_name: null cubix_account_id: null cubix_account_number: null meta: null '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoResponse' example: id: '1' method: private/fiat/fiat-deposit-info code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoResponse' example: id: '1' method: private/fiat/fiat-deposit-info code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoResponse' example: id: '1' method: private/fiat/fiat-deposit-info code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoResponse' example: id: '1' method: private/fiat/fiat-deposit-info code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositInfoResponse' example: id: '1' method: private/fiat/fiat-deposit-info code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-deposit-history: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-deposit-history description: Retrieves paginated fiat deposit transaction history for the authenticated user. operationId: privateFiatFiatDepositHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatDepositHistory({ page: "0", page_size: "10", start_time: '1781126400000', end_time: '1781127400000', payment_networks: 'usd_cubix', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_deposit_history({ 'page': "0", 'page_size': "10", 'start_time': '1781126400000', 'end_time': '1781127400000', 'payment_networks': 'usd_cubix', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryRequest' example: id: '123456' method: private/fiat/fiat-deposit-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: page: '0' page_size: '10' start_time: '1781126400000' end_time: '1781127400000' payment_networks: usd_cubix responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryResponse' examples: Example - us_ach: value: id: '1' method: private/fiat/fiat-deposit-history code: '0' result: page: '0' page_size: '2' total: '41' transaction_history_list: - id: c2669ca7-35a2-464c-8114-2313912c6d76 currency: USD amount: '100.0' fee_currency: USD fee_amount: '0.0' payment_network: us_ach status: completed created_at: '1778140550953' updated_at: '1778140573431' completed_at: '1648669814953' vendor_transaction_id: N89940DKZD - id: f5527db9-c0ca-4d82-b3f8-4470c3398384 currency: USD amount: '100.0' fee_currency: USD fee_amount: '0.0' payment_network: us_ach status: completed created_at: '1778140412428' updated_at: '1778140429199' completed_at: '1648669814953' vendor_transaction_id: F6KSNMQV0B '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryResponse' example: id: '1' method: private/fiat/fiat-deposit-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryResponse' example: id: '1' method: private/fiat/fiat-deposit-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryResponse' example: id: '1' method: private/fiat/fiat-deposit-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryResponse' example: id: '1' method: private/fiat/fiat-deposit-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatDepositHistoryResponse' example: id: '1' method: private/fiat/fiat-deposit-history code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-withdraw-history: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-withdraw-history description: Retrieves paginated fiat withdrawal transaction history for the authenticated user. operationId: privateFiatFiatWithdrawHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatWithdrawHistory({ page: "0", page_size: "10", start_time: '1781126400000', end_time: '1781127400000', payment_networks: 'usd_cubix', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_withdraw_history({ 'page': "0", 'page_size': "10", 'start_time': '1781126400000', 'end_time': '1781127400000', 'payment_networks': 'usd_cubix', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryRequest' example: id: '123456' method: private/fiat/fiat-withdraw-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: page: '0' page_size: '10' start_time: '1781126400000' end_time: '1781127400000' payment_networks: usd_cubix responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse' examples: Example - us_ach: value: id: '1' method: private/fiat/fiat-withdraw-history code: '0' result: page: '0' page_size: '2' total: '132' transaction_history_list: - id: a6a41d92-1cdc-4dd3-b845-85fa203405a2 currency: USD amount: '10.0' fee_currency: USD fee_amount: '1.0' payment_network: us_ach status: pending created_at: '1778553420579' updated_at: '1778553420643' - id: fb372838-be75-4699-92c8-0db0efee6506 currency: USD amount: '100.0' fee_currency: USD fee_amount: '1.0' payment_network: us_ach status: pending created_at: '1778212310417' updated_at: '1778212506975' vendor_transaction_id: db0fee89-6ab7-4431-b715-798655891555 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse' example: id: '1' method: private/fiat/fiat-withdraw-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse' example: id: '1' method: private/fiat/fiat-withdraw-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse' example: id: '1' method: private/fiat/fiat-withdraw-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse' example: id: '1' method: private/fiat/fiat-withdraw-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse' example: id: '1' method: private/fiat/fiat-withdraw-history code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-create-withdraw: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-create-withdraw description: Creates a new fiat withdrawal request for the authenticated user. operationId: privateFiatFiatCreateWithdraw x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatCreateWithdraw({ client_wid: 'c1d2e3f4-a5b6-7890-cdef-123456789abc', account_id: 'bank-acct-uuid-001', amount: '1000.00', currency: 'USD', payment_network: 'usd_swift', intermediate_bank: { bank_identifier_type: 'SWIFT', bank_identifier_value: 'CHASUS33', bank_name: 'JPMorgan Chase Bank', address_1: '270 Park Avenue', address_2: 'New York, NY 10017', }, }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_create_withdraw({ 'client_wid': 'c1d2e3f4-a5b6-7890-cdef-123456789abc', 'account_id': 'bank-acct-uuid-001', 'amount': '1000.00', 'currency': 'USD', 'payment_network': 'usd_swift', 'intermediate_bank': { 'bank_identifier_type': 'SWIFT', 'bank_identifier_value': 'CHASUS33', 'bank_name': 'JPMorgan Chase Bank', 'address_1': '270 Park Avenue', 'address_2': 'New York, NY 10017', }, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawRequest' example: id: '123456' method: private/fiat/fiat-create-withdraw api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: client_wid: c1d2e3f4-a5b6-7890-cdef-123456789abc account_id: bank-acct-uuid-001 amount: '1000.00' currency: USD payment_network: usd_swift intermediate_bank: bank_identifier_type: SWIFT bank_identifier_value: CHASUS33 bank_name: JPMorgan Chase Bank address_1: 270 Park Avenue address_2: New York, NY 10017 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawResponse' examples: Example - usd (cubix): summary: Example - usd (cubix) value: id: '123456' method: private/fiat/fiat-create-withdraw code: '0' msg: success result: id: withdraw_789012345 client_wid: c1d2e3f4-a5b6-7890-cdef-123456789abc status: pending payment_network: usd_cubix currency: USD amount: '1000.00' fee_currency: USD fee_amount: '25.00' Example - usd (swift): summary: Example - usd (swift) value: id: '0' method: private/fiat/fiat-create-withdraw code: '0' result: id: 27f3b781-e8e4-4ae9-871e-0edd7f9deba9 client_wid: c1d2e3f4-a5b6-7890-cdef-123456789abc status: debit_processing payment_network: usd_swift currency: USD amount: '500.0' fee_currency: USD fee_amount: '45.0' Example - eur (openpayd): summary: Example - eur (openpayd) value: id: '0' method: private/fiat/fiat-create-withdraw code: '0' result: id: e21358d3-232a-4a7f-9a0d-d15bcf5ca0c9 client_wid: c1d2e3f4-a5b6-7890-cdef-123456789abc status: debit_processing payment_network: openpayd_exchange_sepa currency: EUR amount: '100.0' fee_currency: EUR fee_amount: '0.0' Example - aed: summary: Example - aed value: id: '0' method: private/fiat/fiat-create-withdraw code: '0' result: id: 3f28eea1-81c0-4a1b-b807-342ff14ed373 client_wid: c1d2e3f4-a5b6-7890-cdef-123456789abc status: debit_processing payment_network: aed_ipi currency: AED amount: '105.0' fee_currency: AED fee_amount: '10.0' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawResponse' example: id: '1' method: private/fiat/fiat-create-withdraw code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawResponse' example: id: '1' method: private/fiat/fiat-create-withdraw code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawResponse' example: id: '1' method: private/fiat/fiat-create-withdraw code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawResponse' example: id: '1' method: private/fiat/fiat-create-withdraw code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateWithdrawResponse' example: id: '1' method: private/fiat/fiat-create-withdraw code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-get-plaid-token: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-get-plaid-token description: Get a Plaid link token for the user. Must call this before initiating the Plaid Link flow on the frontend. The token is single-use and expires — a new token is generated each time. operationId: privateFiatFiatGetPlaidToken x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatGetPlaidToken({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_get_plaid_token({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenRequest' example: id: '10' method: private/fiat/fiat-get-plaid-token api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1773372503821' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse' example: id: '10' method: private/fiat/fiat-get-plaid-token code: '0' result: link_token: link-sandbox-af1a0311-da53-4636-b754-dd15c7a2 expiration: '2026-03-18T20:00:00Z' request_id: req-id-001 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse' example: id: '1' method: private/fiat/fiat-get-plaid-token code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse' example: id: '1' method: private/fiat/fiat-get-plaid-token code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse' example: id: '1' method: private/fiat/fiat-get-plaid-token code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse' example: id: '1' method: private/fiat/fiat-get-plaid-token code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse' example: id: '1' method: private/fiat/fiat-get-plaid-token code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-transaction-quota: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-transaction-quota description: Retrieves transaction quota information for a specific payment network. operationId: privateFiatFiatTransactionQuota x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatTransactionQuota({ payment_network: 'usd_cubix', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_transaction_quota({ 'payment_network': 'usd_cubix', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaRequest' example: id: '123456' method: private/fiat/fiat-transaction-quota api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: payment_network: usd_cubix responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaResponse' examples: Example - usd_cubix: value: id: '0' method: private/fiat/fiat-transaction-quota code: '0' result: details: currency: USD payment_network: usd_cubix network_name: CUBIX monthly_quota_in_usd: currency: USD amount: null daily_quota_in_usd: currency: USD amount: '5000000.0' used_monthly_quota_in_usd: currency: USD amount: '0.0' used_daily_quota_in_usd: currency: USD amount: '0.0' remaining_monthly_quota_in_usd: currency: USD amount: null remaining_daily_quota_in_usd: currency: USD amount: '5000000.0' minimum_withdrawal_amount_in_usd: currency: USD amount: '500.0' monthly_quota: currency: USD amount: null daily_quota: currency: USD amount: '5000000.0' used_monthly_quota: currency: USD amount: '0.0' used_daily_quota: currency: USD amount: '0.0' remaining_monthly_quota: currency: USD amount: null remaining_daily_quota: currency: USD amount: '5000000.0' minimum_withdrawal_amount: currency: USD amount: '500.0' currency_daily_quota: currency: USD amount: '10000000.0' currency_monthly_quota: currency: USD amount: null currency_used_daily_quota: currency: USD amount: '0.0' currency_used_monthly_quota: currency: USD amount: '0.0' currency_remaining_daily_quota: currency: USD amount: '10000000.0' currency_remaining_monthly_quota: currency: USD amount: null transactions_per_day: 10 transactions_per_month: 100 transactions_daily_count: 0 transactions_monthly_count: 0 remaining_transactions_daily_count: 10 remaining_transactions_monthly_count: 100 currency_transactions_per_day: 10 currency_transactions_per_month: 100 currency_transactions_daily_count: 0 currency_transactions_monthly_count: 0 currency_remaining_transactions_daily_count: 10 currency_remaining_transactions_monthly_count: 100 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaResponse' example: id: '1' method: private/fiat/fiat-transaction-quota code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaResponse' example: id: '1' method: private/fiat/fiat-transaction-quota code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaResponse' example: id: '1' method: private/fiat/fiat-transaction-quota code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaResponse' example: id: '1' method: private/fiat/fiat-transaction-quota code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionQuotaResponse' example: id: '1' method: private/fiat/fiat-transaction-quota code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-transaction-limit: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-transaction-limit description: Retrieves transaction limits for a specific payment network. operationId: privateFiatFiatTransactionLimit x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatTransactionLimit({ payment_network: 'usd_cubix', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_transaction_limit({ 'payment_network': 'usd_cubix', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitRequest' example: id: '123456' method: private/fiat/fiat-transaction-limit api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: payment_network: usd_cubix responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitResponse' example: id: '0' method: private/fiat/fiat-transaction-limit code: '0' result: deposit: min_deposit_amount: currency: USD amount: '500' daily_max_deposit_amount: currency: USD amount: null monthly_max_deposit_amount: currency: USD amount: null currency_daily_max_deposit_amount: currency: USD amount: null currency_monthly_max_deposit_amount: currency: USD amount: null daily_quota: 0 monthly_quota: 0 daily_transaction_count: 0 monthly_transaction_count: 0 currency_daily_transaction_count: 0 currency_monthly_transaction_count: 0 fee_amount: currency: USD amount: '0' daily_max_transaction_count: 0 monthly_max_transaction_count: 0 currency_daily_max_transaction_count: 0 currency_monthly_max_transaction_count: 0 payment: name: CUBIX full_name: CUBIX review_time_description: 1-2 working days review_time: min: '1' max: '2' unit: working days bank_transfer_time_description: 1-4 working days bank_transfer_time: min: '1' max: '4' unit: working days min_payment_amount: currency: USD amount: '500' daily_max_payment_amount: currency: USD amount: '5000000' monthly_max_payment_amount: currency: USD amount: null auto_approve_max_payment_amount: currency: USD amount: '5000000' currency_daily_max_payment_amount: currency: USD amount: '10000000' currency_monthly_max_payment_amount: currency: USD amount: null fee_amount: currency: USD amount: '0' refund_fee_amount: currency: USD amount: '0' daily_transaction_count: 0 monthly_transaction_count: 0 currency_daily_transaction_count: 0 currency_monthly_transaction_count: 0 daily_max_transaction_count: 0 monthly_max_transaction_count: 0 currency_daily_max_transaction_count: 0 currency_monthly_max_transaction_count: 0 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitResponse' example: id: '1' method: private/fiat/fiat-transaction-limit code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitResponse' example: id: '1' method: private/fiat/fiat-transaction-limit code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitResponse' example: id: '1' method: private/fiat/fiat-transaction-limit code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitResponse' example: id: '1' method: private/fiat/fiat-transaction-limit code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatTransactionLimitResponse' example: id: '1' method: private/fiat/fiat-transaction-limit code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-create-bank-account: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-create-bank-account description: Link a bank account via Plaid for a user. Links the user's bank account to their profile for withdrawals using a Plaid integration payload. operationId: privateFiatFiatCreateBankAccount x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatCreateBankAccount({ plaid_account_id: 'abc123', plaid_public_token: 'public-sandbox-xyz', currency: 'USD', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_create_bank_account({ 'plaid_account_id': 'abc123', 'plaid_public_token': 'public-sandbox-xyz', 'currency': 'USD', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountRequest' example: id: '7' method: private/fiat/fiat-create-bank-account api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1773372503821' params: plaid_account_id: abc123 plaid_public_token: public-sandbox-xyz currency: USD responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountResponse' example: id: '7' method: private/fiat/fiat-create-bank-account code: '0' result: bank_accounts_list: - id: bank-acct-uuid-001 status: completed bank_name: Chase currency: USD account_holder_name: John Doe account_identifier_value: '****6789' supported_payment_networks: - us_ach created_at: 1773372503821 updated_at: 1773372503821 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountResponse' example: id: '1' method: private/fiat/fiat-create-bank-account code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountResponse' example: id: '1' method: private/fiat/fiat-create-bank-account code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountResponse' example: id: '1' method: private/fiat/fiat-create-bank-account code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountResponse' example: id: '1' method: private/fiat/fiat-create-bank-account code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatCreateBankAccountResponse' example: id: '1' method: private/fiat/fiat-create-bank-account code: '50001' message: INTERNAL_SERVER_ERROR /private/fiat/fiat-get-bank-accounts: post: tags: - Fiat Wallet x-apply-to: - rest summary: private/fiat/fiat-get-bank-accounts description: Retrieves user's bank accounts with optional payment network filtering. operationId: privateFiatFiatGetBankAccounts x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateFiatFiatGetBankAccounts({ payment_networks: 'usd_cubix', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_fiat_fiat_get_bank_accounts({ 'payment_networks': 'usd_cubix', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsRequest' example: id: '123456' method: private/fiat/fiat-get-bank-accounts api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1640995200000' params: payment_networks: usd_cubix responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsResponse' examples: Example - usd_cubix: value: id: '123456' method: private/fiat/fiat-get-bank-accounts code: '0' msg: success result: bank_accounts_list: - ok: null code: null message: null id: 4c662477-a16d-4c99-a27b-a492b592ed62 account_id: adb80cff-f420-469c-b439-4d90272bf1a1 user_uuid: f0857b97-0d47-5897-8b1f-e358725cf49c status: completed bank_name: Customers Bank bank_city: '' bank_country: US bank_identifier_type: cubix_account_number_last_4_digits bank_identifier_value: '****2565' bank_account_holder_name: null account_identifier_type: cubix_account_id account_identifier_value: '****cc63' account_holder_name: Smoke Test Co account_type: null currency: USD verified_by: Cubix reason: reason supported_payment_networks: - usd_cubix withdrawal_payment_networks: null payment_network_identifier_value: dbbb3eda-960f-4406-ae3c-b250010e7bef bank_details: institutional_street_address: null bank_street_address: null account_holder_address: null bank_account_address: null intermediate_bank: null intermediate_bank_options: null created_at: '1751126400000' updated_at: '1751126400000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsResponse' example: id: '1' method: private/fiat/fiat-get-bank-accounts code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsResponse' example: id: '1' method: private/fiat/fiat-get-bank-accounts code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsResponse' example: id: '1' method: private/fiat/fiat-get-bank-accounts code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsResponse' example: id: '1' method: private/fiat/fiat-get-bank-accounts code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateFiatFiatGetBankAccountsResponse' example: id: '1' method: private/fiat/fiat-get-bank-accounts code: '50001' message: INTERNAL_SERVER_ERROR /public/staking/get-conversion-rate: post: tags: - Staking x-apply-to: - rest summary: public/staking/get-conversion-rate description: Returns conversion rate between staked token (e.g. ETH.staked) and liquid staking token (e.g. CDCETH). Params instrument_name (e.g. CDCETH). Used before private/staking/convert. operationId: publicStakingGetConversionRate x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ enableRateLimit: true }); const res = await exchange.v1PublicPostPublicStakingGetConversionRate({ instrument_name: 'CDCETH' }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({'enableRateLimit': True}) res = exchange.v1_public_post_public_staking_get_conversion_rate({'instrument_name': 'CDCETH'}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublicStakingGetConversionRateRequest' example: id: '1' method: public/staking/get-conversion-rate api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: CDCETH responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PublicStakingGetConversionRateResponse' example: id: '1' method: public/staking/get-conversion-rate code: '0' result: instrument_name: CDCETH conversion_rate: '1.0203' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PublicStakingGetConversionRateResponse' example: id: '1' method: public/staking/get-conversion-rate code: '40001' message: BAD_REQUEST '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PublicStakingGetConversionRateResponse' example: id: '1' method: public/staking/get-conversion-rate code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PublicStakingGetConversionRateResponse' example: id: '1' method: public/staking/get-conversion-rate code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PublicStakingGetConversionRateResponse' example: id: '1' method: public/staking/get-conversion-rate code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/stake: post: tags: - Staking x-apply-to: - rest summary: private/staking/stake description: Create a request to earn token rewards by staking on-chain in the Exchange. operationId: privateStakingStake x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingStake({ instrument_name: 'SOL.staked', quantity: '1', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_stake({ 'instrument_name': 'SOL.staked', 'quantity': '1', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeRequest' example: id: '1' method: private/staking/stake api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: SOL.staked quantity: '1' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeResponse' example: id: '1' method: private/staking/stake code: '0' result: staking_id: '1' instrument_name: SOL.staked status: NEW quantity: '1' underlying_inst_name: SOL pre_stake_charge_rate_in_bps: '50' pre_stake_charge: '0.5' reason: NO_ERROR '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeResponse' example: id: '1' method: private/staking/stake code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeResponse' example: id: '1' method: private/staking/stake code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeResponse' example: id: '1' method: private/staking/stake code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeResponse' example: id: '1' method: private/staking/stake code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingStakeResponse' example: id: '1' method: private/staking/stake code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/unstake: post: tags: - Staking x-apply-to: - rest summary: private/staking/unstake description: Create a request to unlock staked token. operationId: privateStakingUnstake x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingUnstake({ instrument_name: 'SOL.staked', quantity: '1', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_unstake({ 'instrument_name': 'SOL.staked', 'quantity': '1', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeRequest' example: id: '1' method: private/staking/unstake api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: SOL.staked quantity: '1' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeResponse' example: id: '1' method: private/staking/unstake code: '0' result: staking_id: '1' instrument_name: SOL.staked status: NEW quantity: '1' underlying_inst_name: SOL reason: NO_ERROR '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeResponse' example: id: '1' method: private/staking/unstake code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeResponse' example: id: '1' method: private/staking/unstake code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeResponse' example: id: '1' method: private/staking/unstake code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeResponse' example: id: '1' method: private/staking/unstake code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingUnstakeResponse' example: id: '1' method: private/staking/unstake code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-staking-position: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-staking-position description: Get the total staking position for a user/token operationId: privateStakingGetStakingPosition x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetStakingPosition({ instrument_name: 'SOL.staked', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_staking_position({ 'instrument_name': 'SOL.staked', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionRequest' example: id: '1' method: private/staking/get-staking-position api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: SOL.staked responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionResponse' example: id: '1' method: private/staking/get-staking-position code: '0' result: data: - instrument_name: SOL.staked underlying_inst_name: SOL staked_quantity: '30000.00' pending_staked_quantity: '20000.00' pending_unstaked_quantity: '10000.00' reward_eligible_quantity: '10000.00' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionResponse' example: id: '1' method: private/staking/get-staking-position code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionResponse' example: id: '1' method: private/staking/get-staking-position code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionResponse' example: id: '1' method: private/staking/get-staking-position code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionResponse' example: id: '1' method: private/staking/get-staking-position code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingPositionResponse' example: id: '1' method: private/staking/get-staking-position code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-staking-instruments: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-staking-instruments description: Get staking instruments information operationId: privateStakingGetStakingInstruments x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetStakingInstruments({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_staking_instruments({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsRequest' example: id: '1' method: private/staking/get-staking-instruments api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsResponse' example: id: '1' method: private/staking/get-staking-instruments code: '0' result: data: - instrument_name: SOL.staked underlying_inst_name: SOL reward_inst_name: SOL.staked out_of_stock: false block_unstake: false est_rewards: '0.0661' apr_y: APR min_stake_amt: '0.00000001' reward_frequency: '2.5' lock_up_period: '5' is_compound_reward: true pre_stake_charge_enable: false pre_stake_charge_rate_in_bps: '0' is_restaked: false additional_rewards: [] - instrument_name: DYDX.staked underlying_inst_name: DYDX reward_inst_name: DYDX out_of_stock: false block_unstake: false est_rewards: '0.05' apr_y: APR min_stake_amt: '0.00000001' reward_frequency: '1' lock_up_period: '31' is_compound_reward: false pre_stake_charge_enable: false pre_stake_charge_rate_in_bps: '0' is_restaked: false additional_rewards: - reward_inst_name: USD_Stable_Coin '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsResponse' example: id: '1' method: private/staking/get-staking-instruments code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsResponse' example: id: '1' method: private/staking/get-staking-instruments code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsResponse' example: id: '1' method: private/staking/get-staking-instruments code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsResponse' example: id: '1' method: private/staking/get-staking-instruments code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakingInstrumentsResponse' example: id: '1' method: private/staking/get-staking-instruments code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-open-stake: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-open-stake description: Get stake/unstake requests that status is not in final state. operationId: privateStakingGetOpenStake x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetOpenStake({ instrument_name: 'SOL.staked', start_time: "1691455454495", end_time: "1691545277000", limit: '10', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_open_stake({ 'instrument_name': 'SOL.staked', 'start_time': "1691455454495", 'end_time': "1691545277000", 'limit': '10', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeRequest' example: id: '1' method: private/staking/get-open-stake api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: SOL.staked start_time: '1691455454495' end_time: '1691545277000' limit: '10' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeResponse' example: id: '1' method: private/staking/get-open-stake code: '0' result: data: - instrument_name: SOL.staked underlying_inst_name: SOL cycle_id: '1' staking_id: '1' status: PENDING account: 12345678-9999-1234-9999-123456789999 quantity: '1' side: STAKE create_timestamp_ms: '1668658093600' - instrument_name: SOL.staked underlying_inst_name: SOL cycle_id: '2' staking_id: '2' status: UNSTAKING account: 12345678-9999-1234-9999-123456789999 quantity: '0.5' side: UNSTAKE create_timestamp_ms: '1668658093600' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeResponse' example: id: '1' method: private/staking/get-open-stake code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeResponse' example: id: '1' method: private/staking/get-open-stake code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeResponse' example: id: '1' method: private/staking/get-open-stake code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeResponse' example: id: '1' method: private/staking/get-open-stake code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenStakeResponse' example: id: '1' method: private/staking/get-open-stake code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-stake-history: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-stake-history description: Get stake/unstake request history operationId: privateStakingGetStakeHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetStakeHistory({ instrument_name: 'SOL.staked', start_time: "1691455454495", end_time: "1691545277000", limit: '10', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_stake_history({ 'instrument_name': 'SOL.staked', 'start_time': "1691455454495", 'end_time': "1691545277000", 'limit': '10', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryRequest' example: id: '1' method: private/staking/get-stake-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: SOL.staked start_time: '1691455454495' end_time: '1691545277000' limit: '10' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryResponse' example: id: '1' method: private/staking/get-stake-history code: '0' result: data: - instrument_name: SOL.staked underlying_inst_name: SOL cycle_id: '1' staking_id: '1' status: COMPLETED account: 12345678-9999-1234-9999-123456789999 quantity: '1' side: STAKE create_timestamp_ms: '1668658093600' - instrument_name: SOL.staked underlying_inst_name: SOL cycle_id: '2' staking_id: '2' status: REJECTED account: 12345678-9999-1234-9999-123456789999 quantity: '0.5' side: UNSTAKE create_timestamp_ms: '1668658093600' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryResponse' example: id: '1' method: private/staking/get-stake-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryResponse' example: id: '1' method: private/staking/get-stake-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryResponse' example: id: '1' method: private/staking/get-stake-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryResponse' example: id: '1' method: private/staking/get-stake-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetStakeHistoryResponse' example: id: '1' method: private/staking/get-stake-history code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-reward-history: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-reward-history description: Get stake/unstake request history operationId: privateStakingGetRewardHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetRewardHistory({ instrument_name: 'SOL.staked', start_time: "1691455454495", end_time: "1691545277000", limit: '10', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_reward_history({ 'instrument_name': 'SOL.staked', 'start_time': "1691455454495", 'end_time': "1691545277000", 'limit': '10', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryRequest' example: id: '1' method: private/staking/get-reward-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: instrument_name: SOL.staked start_time: '1691455454495' end_time: '1691545277000' limit: '10' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryResponse' example: id: '1' method: private/staking/get-reward-history code: '0' result: data: - staking_inst_name: SOL.staked underlying_inst_name: SOL reward_inst_name: SOL.staked reward_quantity: '123.4567' staked_balance: '1234567' event_timestamp_ms: '1667795832609' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryResponse' example: id: '1' method: private/staking/get-reward-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryResponse' example: id: '1' method: private/staking/get-reward-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryResponse' example: id: '1' method: private/staking/get-reward-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryResponse' example: id: '1' method: private/staking/get-reward-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetRewardHistoryResponse' example: id: '1' method: private/staking/get-reward-history code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/convert: post: tags: - Staking x-apply-to: - rest summary: private/staking/convert description: Create a request to convert between staked token with liquid staking token. operationId: privateStakingConvert x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingConvert({ from_instrument_name: 'ETH.staked', to_instrument_name: 'CDCETH', expected_rate: '1.0203', from_quantity: '3.14159265', slippage_tolerance_bps: '3', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_convert({ 'from_instrument_name': 'ETH.staked', 'to_instrument_name': 'CDCETH', 'expected_rate': '1.0203', 'from_quantity': '3.14159265', 'slippage_tolerance_bps': '3', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertRequest' example: id: '1' method: private/staking/convert api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: from_instrument_name: ETH.staked to_instrument_name: CDCETH expected_rate: '1.0203' from_quantity: '3.14159265' slippage_tolerance_bps: '3' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertResponse' example: id: '1' method: private/staking/convert code: '0' result: from_instrument_name: ETH.staked to_instrument_name: CDCETH expected_rate: '1.0203' from_quantity: '3.14159265' slippage_tolerance_bps: '3' convert_id: '1' reason: NO_ERROR '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertResponse' example: id: '1' method: private/staking/convert code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertResponse' example: id: '1' method: private/staking/convert code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertResponse' example: id: '1' method: private/staking/convert code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertResponse' example: id: '1' method: private/staking/convert code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingConvertResponse' example: id: '1' method: private/staking/convert code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-open-convert: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-open-convert description: Get convert request that status is not in final state. operationId: privateStakingGetOpenConvert x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetOpenConvert({ start_time: "1691455454495", end_time: "1691545277000", limit: '10', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_open_convert({ 'start_time': "1691455454495", 'end_time': "1691545277000", 'limit': '10', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertRequest' example: id: '1' method: private/staking/get-open-convert api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: start_time: '1691455454495' end_time: '1691545277000' limit: '10' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertResponse' example: id: '1' method: private/staking/get-open-convert code: '0' result: data: - from_instrument_name: ETH.staked to_instrument_name: CDCETH expected_rate: '1.0203' from_quantity: '3.14159265' slippage_tolerance_bps: '3' actual_rate: '1.0203' to_quantity: '3.14159265' convert_id: '1' status: COMPLETED create_timestamp_ms: '1688140984005' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertResponse' example: id: '1' method: private/staking/get-open-convert code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertResponse' example: id: '1' method: private/staking/get-open-convert code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertResponse' example: id: '1' method: private/staking/get-open-convert code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertResponse' example: id: '1' method: private/staking/get-open-convert code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetOpenConvertResponse' example: id: '1' method: private/staking/get-open-convert code: '50001' message: INTERNAL_SERVER_ERROR /private/staking/get-convert-history: post: tags: - Staking x-apply-to: - rest summary: private/staking/get-convert-history description: Get convert request history operationId: privateStakingGetConvertHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateStakingGetConvertHistory({ start_time: "1691455454495", end_time: "1691545277000", limit: '10', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_staking_get_convert_history({ 'start_time': "1691455454495", 'end_time': "1691545277000", 'limit': '10', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryRequest' example: id: '1' method: private/staking/get-convert-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1739923200000' params: start_time: '1691455454495' end_time: '1691545277000' limit: '10' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryResponse' example: id: '1' method: private/staking/get-convert-history code: '0' result: data: - from_instrument_name: ETH.staked to_instrument_name: CDCETH expected_rate: '1.0203' from_quantity: '3.14159265' slippage_tolerance_bps: '3' actual_rate: '1.0203' to_quantity: '3.14159265' convert_id: '1' status: COMPLETED create_timestamp_ms: '1688140984005' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryResponse' example: id: '1' method: private/staking/get-convert-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryResponse' example: id: '1' method: private/staking/get-convert-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryResponse' example: id: '1' method: private/staking/get-convert-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryResponse' example: id: '1' method: private/staking/get-convert-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateStakingGetConvertHistoryResponse' example: id: '1' method: private/staking/get-convert-history code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/request-quote: post: tags: - OTC RFQ for Taker x-apply-to: - rest - ws-user-api summary: private/otc/request-quote description: Create a quote request. operationId: privateOtcRequestQuote x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcRequestQuote({ cl_quote_req_id: 'abcd13456', firm_quote: false, settlement_arrangement: 'IMMEDIATE', duration: '10000', quote_ttl: '5000', leg_list: [ { instrument_name: 'BTC_USD', quantity: '1', side: 'BUY' }, ], }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_request_quote({ 'cl_quote_req_id': 'abcd13456', 'firm_quote': False, 'settlement_arrangement': 'IMMEDIATE', 'duration': '10000', 'quote_ttl': '5000', 'leg_list': [ {'instrument_name': 'BTC_USD', 'quantity': '1', 'side': 'BUY'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteRequest' example: id: '12' method: private/otc/request-quote api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: cl_quote_req_id: abcd13456 firm_quote: false settlement_arrangement: IMMEDIATE duration: '10000' quote_ttl: '5000' leg_list: - instrument_name: BTC_USD quantity: '1' side: BUY responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteResponse' example: id: 12 method: private/otc/request-quote code: 0 result: cl_quote_req_id: '1739951702774' quote_req_id: '4611686018427626536' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteResponse' example: id: '12' method: private/otc/request-quote code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteResponse' example: id: '12' method: private/otc/request-quote code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteResponse' example: id: '12' method: private/otc/request-quote code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteResponse' example: id: '12' method: private/otc/request-quote code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestQuoteResponse' example: id: '12' method: private/otc/request-quote code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/get-otc-instruments: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-otc-instruments description: Retrieves a list of available OTC instruments that takers can request quotes for. operationId: privateOtcGetOtcInstruments x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetOtcInstruments({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_otc_instruments({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsRequest' example: id: '12' method: private/otc/get-otc-instruments api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsResponse' example: id: 12 method: private/otc/get-otc-instruments code: 0 result: instrument_list: - instrument_name: BTC_USD base_currency: BTC quote_currency: USD type: SPOT price_tick_size: '0.01' quote_decimals: 2 qty_tick_size: '0.00001' qty_decimals: 5 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsResponse' example: id: '12' method: private/otc/get-otc-instruments code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsResponse' example: id: '12' method: private/otc/get-otc-instruments code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsResponse' example: id: '12' method: private/otc/get-otc-instruments code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsResponse' example: id: '12' method: private/otc/get-otc-instruments code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOtcInstrumentsResponse' example: id: '12' method: private/otc/get-otc-instruments code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/get-open-quote-requests: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-open-quote-requests description: Get open quote requests. Only return active quote requests (status = NEW or ACTIVE). operationId: privateOtcGetOpenQuoteRequests x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetOpenQuoteRequests({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_open_quote_requests({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsRequest' example: id: '12' method: private/otc/get-open-quote-requests api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse' example: id: 12 method: private/otc/get-open-quote-requests code: 0 result: count: 1 quote_request_list: - quote_req_id: '88997712345' cl_quote_req_id: abcd13456 firm_quote: false settlement_arrangement: IMMEDIATE status: ACTIVE leg_list: - instrument_name: BTC_USD quantity: '1' side: BUY type: PRICE request_time_ns: '1749104833703281311' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse' example: id: '12' method: private/otc/get-open-quote-requests code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse' example: id: '12' method: private/otc/get-open-quote-requests code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse' example: id: '12' method: private/otc/get-open-quote-requests code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse' example: id: '12' method: private/otc/get-open-quote-requests code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse' example: id: '12' method: private/otc/get-open-quote-requests code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/get-open-quotes: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-open-quotes description: Get open quotes. Only return active Quotes (status = ACTIVE). operationId: privateOtcGetOpenQuotes x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetOpenQuotes({ lp_quote_id: '98765', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_open_quotes({ 'lp_quote_id': '98765', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesRequest' example: id: '12' method: private/otc/get-open-quotes api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: lp_quote_id: '98765' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesResponse' example: id: 12 method: private/otc/get-open-quotes code: 0 result: count: 1 quote_list: - quote_id: '11223344556677' lp_quote_id: '98765' quote_req_id: '88997712345' status: ACTIVE reason: NO_ERROR response_time_ns: '1695153400000000000' expire_time_ns: '1696153400000000000' leg_list: - instrument_name: BTC_USD quantity: '1' bid: '95085.99' ask: '96086.01' type: PRICE '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesResponse' example: id: '12' method: private/otc/get-open-quotes code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesResponse' example: id: '12' method: private/otc/get-open-quotes code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesResponse' example: id: '12' method: private/otc/get-open-quotes code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesResponse' example: id: '12' method: private/otc/get-open-quotes code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenQuotesResponse' example: id: '12' method: private/otc/get-open-quotes code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/get-quote-history: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-quote-history description: Get quotes history. operationId: privateOtcGetQuoteHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetQuoteHistory({ lp_quote_id: '98765', }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_quote_history({ 'lp_quote_id': '98765', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryRequest' example: id: '12' method: private/otc/get-quote-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: lp_quote_id: '98765' responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryResponse' example: id: 12 method: private/otc/get-quote-history code: 0 result: count: 1 quote_list: - lp_quote_id: '98765' quote_req_id: '88997712345' status: ACTIVE reason: NO_ERROR response_time_ns: '1695153400000000000' expire_time_ns: '1696153400000000000' leg_list: - instrument_name: BTC_USD quantity: '1' bid: '100010' ask: '100000' type: PRICE '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryResponse' example: id: '12' method: private/otc/get-quote-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryResponse' example: id: '12' method: private/otc/get-quote-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryResponse' example: id: '12' method: private/otc/get-quote-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryResponse' example: id: '12' method: private/otc/get-quote-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteHistoryResponse' example: id: '12' method: private/otc/get-quote-history code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/get-quote-request-history: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-quote-request-history description: Get quote requests history. Only return closed quote requests (status = COMPLETED/REJECTED). operationId: privateOtcGetQuoteRequestHistory x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetQuoteRequestHistory({ }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_quote_request_history({ }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryRequest' example: id: '12' method: private/otc/get-quote-request-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse' example: id: 12 method: private/otc/get-quote-request-history code: 0 result: count: 2 quote_request_list: - quote_req_id: '4611686018427625581' cl_quote_req_id: abcd13456 firm_quote: false settlement_arrangement: IMMEDIATE status: COMPLETED request_time_ns: '1747622246551416954' leg_list: - instrument_name: BTC_USD quantity: '1' side: BUY type: PRICE - quote_req_id: '4611686018427625594' cl_quote_req_id: '1739762096888' firm_quote: false settlement_arrangement: IMMEDIATE status: REJECTED reason: INVALID_OTC_INSTRUMENT request_time_ns: '1747622246551416954' leg_list: - instrument_name: ABC quantity: '0.6' side: BUY type: PRICE '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse' example: id: '12' method: private/otc/get-quote-request-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse' example: id: '12' method: private/otc/get-quote-request-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse' example: id: '12' method: private/otc/get-quote-request-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse' example: id: '12' method: private/otc/get-quote-request-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse' example: id: '12' method: private/otc/get-quote-request-history code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/request-deal: post: tags: - OTC RFQ for Taker x-apply-to: - rest - ws-user-api summary: private/otc/request-deal description: Request a deal. operationId: privateOtcRequestDeal x-codeSamples: - lang: JavaScript label: JavaScript x-discriminator-value: RFQ source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcRequestDeal({ deal_type: 'QUOTE_REQUEST', cl_deal_id: 'client_id_1', quote_id: '4611686018492073851', quote_req_id: '4611686018427623960', leg_list: [ { instrument_name: 'BTC_USD', price: '95734.2', quantity: '1', side: 'BUY' }, ], }); console.log(res); - lang: Python label: Python x-discriminator-value: RFQ source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_request_deal({ 'deal_type': 'QUOTE_REQUEST', 'cl_deal_id': 'client_id_1', 'quote_id': '4611686018492073851', 'quote_req_id': '4611686018427623960', 'leg_list': [ {'instrument_name': 'BTC_USD', 'price': '95734.2', 'quantity': '1', 'side': 'BUY'}, ], }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealRequest' examples: RFQ: x-discriminator-value: RFQ value: id: '1' method: private/otc/request-deal api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: deal_type: QUOTE_REQUEST cl_deal_id: client_id_1 quote_id: '4611686018492073851' quote_req_id: '4611686018427623960' leg_list: - instrument_name: BTC_USD price: '95734.2' quantity: '1' side: BUY responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealResponse' examples: RFQ: x-discriminator-value: RFQ value: id: 1 method: private/otc/request-deal code: 0 result: cl_deal_id: client_id_1 deal_id: '4611686018429016536' quote_req_id: '4611686018427623960' quote_id: '4611686018492073851' deal_type: QUOTE_REQUEST deal_status: ACCEPTED reason: NO_ERROR update_time_ns: '1739329285207188882' leg_list: - instrument_name: BTC_USD quantity: '1' price: '95734.2' side: BUY type: PRICE '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealResponse' example: id: '1' method: private/otc/request-deal code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealResponse' example: id: '1' method: private/otc/request-deal code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealResponse' example: id: '1' method: private/otc/request-deal code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealResponse' example: id: '1' method: private/otc/request-deal code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcRequestDealResponse' example: id: '1' method: private/otc/request-deal code: '50001' message: INTERNAL_SERVER_ERROR x-discriminators: RFQ: tags: - OTC RFQ for Taker summary: private/otc/request-deal (RFQ) description: Request a deal from a quote (RFQ flow). /private/otc/get-open-deals: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-open-deals description: Get open deals. operationId: privateOtcGetOpenDeals x-codeSamples: - lang: JavaScript label: JavaScript x-discriminator-value: RFQ source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetOpenDeals({ deal_type: 'QUOTE_REQUEST', }); console.log(res); - lang: Python label: Python x-discriminator-value: RFQ source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_open_deals({ 'deal_type': 'QUOTE_REQUEST', }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsRequest' examples: RFQ: x-discriminator-value: RFQ value: id: '12' method: private/otc/get-open-deals api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: deal_type: QUOTE_REQUEST responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsResponse' examples: RFQ: x-discriminator-value: RFQ value: id: 12 method: private/otc/get-open-deals code: 0 result: deal_list: - deal_id: '111222333444555777' quote_id: '98764' cl_deal_id: external_deal_id_123 deal_type: QUOTE_REQUEST deal_status: ACCEPTED settlement_arrangement: IMMEDIATE create_time_ns: '1696152390000000000' update_time_ns: '1696152400000000000' quote_req_id: '77665544' leg_list: - instrument_name: BTC_USD quantity: '0.1' executed_quantity: '0.1' executed_notional: '2600.05' price: '26000.5' side: BUY type: PRICE '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsResponse' example: id: '12' method: private/otc/get-open-deals code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsResponse' example: id: '12' method: private/otc/get-open-deals code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsResponse' example: id: '12' method: private/otc/get-open-deals code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsResponse' example: id: '12' method: private/otc/get-open-deals code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetOpenDealsResponse' example: id: '12' method: private/otc/get-open-deals code: '50001' message: INTERNAL_SERVER_ERROR x-discriminators: RFQ: tags: - OTC RFQ for Taker summary: private/otc/get-open-deals (RFQ) description: Get quote requests history. Only return closed quote requests (status = COMPLETED/REJECTED). /private/otc/get-deal-history: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-deal-history description: Get deal history. operationId: privateOtcGetDealHistory x-codeSamples: - lang: JavaScript label: JavaScript x-discriminator-value: RFQ source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetDealHistory({ deal_type: 'QUOTE_REQUEST', start_time: 1696154400000, end_time: 1697364000000, }); console.log(res); - lang: Python label: Python x-discriminator-value: RFQ source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_deal_history({ 'deal_type': 'QUOTE_REQUEST', 'start_time': 1696154400000, 'end_time': 1697364000000, }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryRequest' examples: RFQ: x-discriminator-value: RFQ value: id: '12' method: private/otc/get-deal-history api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: deal_type: QUOTE_REQUEST start_time: 1696154400000 end_time: 1697364000000 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryResponse' examples: RFQ: x-discriminator-value: RFQ value: id: 12 method: private/otc/get-deal-history code: 0 result: deal_list: - deal_id: '111222333444555777' quote_id: '98764' cl_deal_id: external_deal_id_123 deal_type: QUOTE_REQUEST deal_status: SETTLED settlement_arrangement: IMMEDIATE create_time_ns: '1696152390000000000' update_time_ns: '1696152400000000000' quote_req_id: '77665544' leg_list: - instrument_name: BTC_USD quantity: '0.1' executed_quantity: '0.1' executed_notional: '2600.05' price: '26000.5' side: BUY type: PRICE '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryResponse' example: id: '12' method: private/otc/get-deal-history code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryResponse' example: id: '12' method: private/otc/get-deal-history code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryResponse' example: id: '12' method: private/otc/get-deal-history code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryResponse' example: id: '12' method: private/otc/get-deal-history code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetDealHistoryResponse' example: id: '12' method: private/otc/get-deal-history code: '50001' message: INTERNAL_SERVER_ERROR x-discriminators: RFQ: tags: - OTC RFQ for Taker summary: private/otc/get-deal-history (RFQ) description: Get closed deals for given user. /private/otc/get-settle-later-limit: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-settle-later-limit description: Get used settle later limit as well as the configured limit for account. operationId: privateOtcGetSettleLaterLimit x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetSettleLaterLimit({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_settle_later_limit({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitRequest' example: id: '12' method: private/otc/get-settle-later-limit api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitResponse' example: id: 12 method: private/otc/get-settle-later-limit code: 0 result: account_id: 52e7c00f-1324-5a6z-bfgt-de445bde21c1 configured_limit: '1000000' used_limit: '20000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitResponse' example: id: '12' method: private/otc/get-settle-later-limit code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitResponse' example: id: '12' method: private/otc/get-settle-later-limit code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitResponse' example: id: '12' method: private/otc/get-settle-later-limit code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitResponse' example: id: '12' method: private/otc/get-settle-later-limit code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetSettleLaterLimitResponse' example: id: '12' method: private/otc/get-settle-later-limit code: '50001' message: INTERNAL_SERVER_ERROR /private/otc/get-unsettled-amounts: post: tags: - OTC RFQ for Taker x-apply-to: - rest summary: private/otc/get-unsettled-amounts description: Get pending settlement amount aggregated by date and instrument. operationId: privateOtcGetUnsettledAmounts x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateOtcGetUnsettledAmounts({}); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_otc_get_unsettled_amounts({}) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsRequest' example: id: '12' method: private/otc/get-unsettled-amounts api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: '1610905028000' params: {} responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsResponse' example: id: 1763952629987 method: private/otc/get-unsettled-amounts code: 0 result: unsettled_ccys: '1764057600000000000': BTC: '-0.01' USD: '1022.0646' '1762848000000000000': ADA: '-1000' USD: '583.080000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsResponse' example: id: '12' method: private/otc/get-unsettled-amounts code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsResponse' example: id: '12' method: private/otc/get-unsettled-amounts code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsResponse' example: id: '12' method: private/otc/get-unsettled-amounts code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsResponse' example: id: '12' method: private/otc/get-unsettled-amounts code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateOtcGetUnsettledAmountsResponse' example: id: '12' method: private/otc/get-unsettled-amounts code: '50001' message: INTERNAL_SERVER_ERROR /private/bot/create-trading-bot: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/create-trading-bot description: Create a trading bot. Supports DCA (Dollar Cost Averaging), TWAP (Time-Weighted Average Price), Grid, and Funding Arbitrage bot types. operationId: privateBotCreateTradingBot x-codeSamples: - lang: JavaScript label: JavaScript x-discriminator-value: DCA source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // DCA Bot: Buy 0.01 BTC every 5 min for 50 min const res = await exchange.v1PrivatePostPrivateBotCreateTradingBot({ bot_type: 'DCA', notify_on_bot_change: true, settings: { is_basket: false, allocations: [ { instrument_name: 'BTC_USDT', allocated_percentage: '100' } ], investment_currency: 'USDT', side: 'BUY', type: 'MARKET', auto_stake: false, quantity: '0.01', investment_frequency_mode: 'FIXED_DURATION', investment_frequency: 300000, max_order: '10', first_investment_time: 1691510460000 } }); console.log(res); - lang: Python label: Python x-discriminator-value: DCA source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # DCA Bot: Buy 0.01 BTC every 5 min for 50 min res = exchange.v1_private_post_private_bot_create_trading_bot({ 'bot_type': 'DCA', 'notify_on_bot_change': True, 'settings': { 'is_basket': False, 'allocations': [ {'instrument_name': 'BTC_USDT', 'allocated_percentage': '100'} ], 'investment_currency': 'USDT', 'side': 'BUY', 'type': 'MARKET', 'auto_stake': False, 'quantity': '0.01', 'investment_frequency_mode': 'FIXED_DURATION', 'investment_frequency': 300000, 'max_order': '10', 'first_investment_time': 1691510460000 } }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: TWAP source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // TWAP Bot: Execute 1000 units over 50 minutes const res = await exchange.v1PrivatePostPrivateBotCreateTradingBot({ bot_type: 'TWAP', notify_on_bot_change: true, settings: { instrument_name: 'BTC_USDT', side: 'BUY', type: 'MARKET', quantity: '1000', start_time_millis: 1691510460000, end_time_millis: 1691513460000 } }); console.log(res); - lang: Python label: Python x-discriminator-value: TWAP source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # TWAP Bot: Execute 1000 units over 50 minutes res = exchange.v1_private_post_private_bot_create_trading_bot({ 'bot_type': 'TWAP', 'notify_on_bot_change': True, 'settings': { 'instrument_name': 'BTC_USDT', 'side': 'BUY', 'type': 'MARKET', 'quantity': '1000', 'start_time_millis': 1691510460000, 'end_time_millis': 1691513460000 } }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: GRID source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // GRID Bot: Create a spot grid bot on BTC_USDT const res = await exchange.v1PrivatePostPrivateBotCreateTradingBot({ bot_type: 'GRID', notify_on_bot_change: true, settings: { instrument_name: 'BTC_USDT', total_investment: '1000', lower_price: '25000', upper_price: '35000', grid_mode: 'ARITHMETIC', grid_no: 10, margin_enabled: false, trailing_up_enabled: false } }); console.log(res); - lang: Python label: Python x-discriminator-value: GRID source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # GRID Bot: Create a spot grid bot on BTC_USDT res = exchange.v1_private_post_private_bot_create_trading_bot({ 'bot_type': 'GRID', 'notify_on_bot_change': True, 'settings': { 'instrument_name': 'BTC_USDT', 'total_investment': '1000', 'lower_price': '25000', 'upper_price': '35000', 'grid_mode': 'ARITHMETIC', 'grid_no': 10, 'margin_enabled': False, 'trailing_up_enabled': False } }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: FUNDING_ARBITRAGE source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // Funding Arbitrage Bot: Spot + Perp hedge const res = await exchange.v1PrivatePostPrivateBotCreateTradingBot({ bot_type: 'FUNDING_ARBITRAGE', notify_on_bot_change: true, settings: { total_investment: '5000', investment_currency: 'USDT', spot_leg: { instrument_name: 'BTC_USDT', side: 'BUY' }, perp_leg: { instrument_name: 'BTCUSD-PERP', side: 'SELL' } } }); console.log(res); - lang: Python label: Python x-discriminator-value: FUNDING_ARBITRAGE source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # Funding Arbitrage Bot: Spot + Perp hedge res = exchange.v1_private_post_private_bot_create_trading_bot({ 'bot_type': 'FUNDING_ARBITRAGE', 'notify_on_bot_change': True, 'settings': { 'total_investment': '5000', 'investment_currency': 'USDT', 'spot_leg': { 'instrument_name': 'BTC_USDT', 'side': 'BUY' }, 'perp_leg': { 'instrument_name': 'BTCUSD-PERP', 'side': 'SELL' } } }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotRequest' examples: DCA: x-discriminator-value: DCA summary: DCA Bot - Single instrument value: id: 1 method: private/bot/create-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_type: DCA notify_on_bot_change: true settings: is_basket: false allocations: - instrument_name: BTC_USDT allocated_percentage: '100' investment_currency: USDT side: BUY type: MARKET auto_stake: false quantity: '0.01' investment_frequency_mode: FIXED_DURATION investment_frequency: 300000 max_order: '10' first_investment_time: 1691510460000 TWAP: x-discriminator-value: TWAP summary: TWAP Bot - Execute over time window value: id: 1 method: private/bot/create-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_type: TWAP notify_on_bot_change: true settings: instrument_name: BTC_USDT side: BUY type: MARKET quantity: '1000' start_time_millis: 1691510460000 end_time_millis: 1691513460000 GRID: x-discriminator-value: GRID summary: GRID Bot - Price range trading value: id: 1 method: private/bot/create-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_type: GRID notify_on_bot_change: true settings: instrument_name: BTC_USDT total_investment: '1000' lower_price: '25000' upper_price: '35000' grid_mode: ARITHMETIC grid_no: 10 margin_enabled: false trailing_up_enabled: false FUNDING_ARBITRAGE: x-discriminator-value: FUNDING_ARBITRAGE summary: Funding Arbitrage Bot - Spot/Perp hedge value: id: 1 method: private/bot/create-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_type: FUNDING_ARBITRAGE notify_on_bot_change: true settings: total_investment: '5000' investment_currency: USDT spot_leg: instrument_name: BTC_USDT side: BUY perp_leg: instrument_name: BTCUSD-PERP side: SELL responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotResponse' example: id: 1 method: private/bot/create-trading-bot code: 0 result: bot_id: '1' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotResponse' example: id: 1 method: private/bot/create-trading-bot code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotResponse' example: id: 1 method: private/bot/create-trading-bot code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotResponse' example: id: 1 method: private/bot/create-trading-bot code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotResponse' example: id: 1 method: private/bot/create-trading-bot code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotCreateTradingBotResponse' example: id: 1 method: private/bot/create-trading-bot code: '50001' message: INTERNAL_SERVER_ERROR x-discriminators: DCA: tags: - Trading Bot API summary: private/bot/create-trading-bot (DCA) description: | Creates a new DCA (Dollar-Cost Averaging) Trading Bot that automatically buys or sells at regular intervals over a preset time frame. DCA trading is used by investors who would like to reduce the influence of volatility and accumulate or decumulate positions gradually. TWAP: tags: - Trading Bot API summary: private/bot/create-trading-bot (TWAP) description: | Creates a new TWAP (Time-Weighted Average Price) Trading Bot that executes large orders by splitting them into smaller slices over a defined time window to minimise market impact. GRID: tags: - Trading Bot API summary: private/bot/create-trading-bot (GRID) description: | Creates a new GRID Trading Bot that automatically places buy and sell orders within a defined price range. FUNDING_ARBITRAGE: tags: - Trading Bot API summary: private/bot/create-trading-bot (FUNDING_ARBITRAGE) description: | Creates a new Funding Arbitrage Trading Bot that simultaneously holds a spot position and an opposing perpetual swap position to capture funding rate income. /private/bot/update-trading-bot: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/update-trading-bot description: Updates settings for a running or paused Trading Bot. TWAP and FUNDING_ARBITRAGE bots only support updating display_name and notify_on_bot_change. operationId: privateBotUpdateTradingBot x-codeSamples: - lang: JavaScript label: JavaScript x-discriminator-value: DCA source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // DCA Bot: Update allocations and stop-loss const res = await exchange.v1PrivatePostPrivateBotUpdateTradingBot({ bot_id: 1, bot_type: 'DCA', notify_on_bot_change: true, settings: { allocations: [ { instrument_name: 'BTC_USDT', allocated_percentage: '60' }, { instrument_name: 'ETH_USDT', allocated_percentage: '40' } ], stop_price: '20000' } }); console.log(res); - lang: Python label: Python x-discriminator-value: DCA source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # DCA Bot: Update allocations and stop-loss res = exchange.v1_private_post_private_bot_update_trading_bot({ 'bot_id': 1, 'bot_type': 'DCA', 'notify_on_bot_change': True, 'settings': { 'allocations': [ {'instrument_name': 'BTC_USDT', 'allocated_percentage': '60'}, {'instrument_name': 'ETH_USDT', 'allocated_percentage': '40'} ], 'stop_price': '20000' } }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: TWAP source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // TWAP Bot: Only display_name and notify_on_bot_change can be updated const res = await exchange.v1PrivatePostPrivateBotUpdateTradingBot({ bot_id: 2, bot_type: 'TWAP', notify_on_bot_change: false, display_name: 'My TWAP Bot' }); console.log(res); - lang: Python label: Python x-discriminator-value: TWAP source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # TWAP Bot: Only display_name and notify_on_bot_change can be updated res = exchange.v1_private_post_private_bot_update_trading_bot({ 'bot_id': 2, 'bot_type': 'TWAP', 'notify_on_bot_change': False, 'display_name': 'My TWAP Bot' }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: GRID source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // GRID Bot: Update stop-loss and take-profit prices const res = await exchange.v1PrivatePostPrivateBotUpdateTradingBot({ bot_id: 3, bot_type: 'GRID', notify_on_bot_change: true, display_name: 'Updated Grid Bot', settings: { stop_price: '24000', take_profit_price: '70000' } }); console.log(res); - lang: Python label: Python x-discriminator-value: GRID source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # GRID Bot: Update stop-loss and take-profit prices res = exchange.v1_private_post_private_bot_update_trading_bot({ 'bot_id': 3, 'bot_type': 'GRID', 'notify_on_bot_change': True, 'display_name': 'Updated Grid Bot', 'settings': { 'stop_price': '24000', 'take_profit_price': '70000' } }) print(res) - lang: JavaScript label: JavaScript x-discriminator-value: FUNDING_ARBITRAGE source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); // Funding Arbitrage Bot: Only display_name and notify_on_bot_change can be updated const res = await exchange.v1PrivatePostPrivateBotUpdateTradingBot({ bot_id: 4, bot_type: 'FUNDING_ARBITRAGE', notify_on_bot_change: true, display_name: 'My Funding Arb Bot' }); console.log(res); - lang: Python label: Python x-discriminator-value: FUNDING_ARBITRAGE source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) # Funding Arbitrage Bot: Only display_name and notify_on_bot_change can be updated res = exchange.v1_private_post_private_bot_update_trading_bot({ 'bot_id': 4, 'bot_type': 'FUNDING_ARBITRAGE', 'notify_on_bot_change': True, 'display_name': 'My Funding Arb Bot' }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotRequest' examples: DCA: x-discriminator-value: DCA summary: DCA Bot - Update allocations and stop-loss value: id: 1 method: private/bot/update-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 1 bot_type: DCA notify_on_bot_change: true settings: allocations: - instrument_name: BTC_USDT allocated_percentage: '60' - instrument_name: ETH_USDT allocated_percentage: '40' stop_price: '20000' TWAP: x-discriminator-value: TWAP summary: TWAP Bot - Update display name only value: id: 1 method: private/bot/update-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 2 bot_type: TWAP notify_on_bot_change: false display_name: My TWAP Bot GRID: x-discriminator-value: GRID summary: GRID Bot - Update stop-loss price value: id: 1 method: private/bot/update-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 3 bot_type: GRID notify_on_bot_change: true settings: stop_price: '24000' FUNDING_ARBITRAGE: x-discriminator-value: FUNDING_ARBITRAGE summary: Funding Arbitrage Bot - Update display name only value: id: 1 method: private/bot/update-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 4 bot_type: FUNDING_ARBITRAGE notify_on_bot_change: true display_name: My Funding Arb Bot responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotResponse' example: id: 1 method: private/bot/update-trading-bot code: 0 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotResponse' example: id: 1 method: private/bot/update-trading-bot code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotResponse' example: id: 1 method: private/bot/update-trading-bot code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotResponse' example: id: 1 method: private/bot/update-trading-bot code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotResponse' example: id: 1 method: private/bot/update-trading-bot code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotUpdateTradingBotResponse' example: id: 1 method: private/bot/update-trading-bot code: '50001' message: INTERNAL_SERVER_ERROR x-discriminators: DCA: tags: - Trading Bot API summary: private/bot/update-trading-bot (DCA) description: | Updates settings for a running or paused DCA (Dollar-Cost Averaging) Trading Bot. Updatable settings for DCA bots include allocations, order type, price, max_order, stop/take-profit prices, auto_stake, investment parameters, and quantity. TWAP: tags: - Trading Bot API summary: private/bot/update-trading-bot (TWAP) description: | Updates a TWAP (Time-Weighted Average Price) Trading Bot. Note: TWAP bots do not support updating settings. Only `display_name` and `notify_on_bot_change` can be changed. GRID: tags: - Trading Bot API summary: private/bot/update-trading-bot (GRID) description: | Updates settings for a running or paused GRID Trading Bot. Updatable settings for GRID bots include stop_price, take_profit_price, and trailing_up_price_cap. FUNDING_ARBITRAGE: tags: - Trading Bot API summary: private/bot/update-trading-bot (FUNDING_ARBITRAGE) description: | Updates a Funding Arbitrage Trading Bot. Note: Funding Arbitrage bots do not support updating settings. Only `display_name` and `notify_on_bot_change` can be changed. /private/bot/terminate-trading-bot: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/terminate-trading-bot description: Terminates a Trading Bot. All open orders placed by the bot are cancelled. operationId: privateBotTerminateTradingBot x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateBotTerminateTradingBot({ bot_id: 1, bot_type: 'DCA', close_position: false }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_bot_terminate_trading_bot({ 'bot_id': 1, 'bot_type': 'DCA', 'close_position': False }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotRequest' example: id: 1 method: private/bot/terminate-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 1 bot_type: DCA responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotResponse' example: id: 1 method: private/bot/terminate-trading-bot code: 0 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotResponse' example: id: 1 method: private/bot/terminate-trading-bot code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotResponse' example: id: 1 method: private/bot/terminate-trading-bot code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotResponse' example: id: 1 method: private/bot/terminate-trading-bot code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotResponse' example: id: 1 method: private/bot/terminate-trading-bot code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotTerminateTradingBotResponse' example: id: 1 method: private/bot/terminate-trading-bot code: '50001' message: INTERNAL_SERVER_ERROR /private/bot/pause-trading-bot: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/pause-trading-bot description: Pauses a running Trading Bot. The bot's open orders are cancelled and no new orders will be placed until resumed. operationId: privateBotPauseTradingBot x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateBotPauseTradingBot({ bot_id: 1, bot_type: 'DCA' }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_bot_pause_trading_bot({ 'bot_id': 1, 'bot_type': 'DCA' }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotRequest' example: id: 1 method: private/bot/pause-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 1 bot_type: DCA responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotResponse' example: id: 1 method: private/bot/pause-trading-bot code: 0 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotResponse' example: id: 1 method: private/bot/pause-trading-bot code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotResponse' example: id: 1 method: private/bot/pause-trading-bot code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotResponse' example: id: 1 method: private/bot/pause-trading-bot code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotResponse' example: id: 1 method: private/bot/pause-trading-bot code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotPauseTradingBotResponse' example: id: 1 method: private/bot/pause-trading-bot code: '50001' message: INTERNAL_SERVER_ERROR /private/bot/resume-trading-bot: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/resume-trading-bot description: Resumes a paused Trading Bot. The bot will restart placing orders according to its configured strategy. operationId: privateBotResumeTradingBot x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateBotResumeTradingBot({ bot_id: 1, bot_type: 'DCA' }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_bot_resume_trading_bot({ 'bot_id': 1, 'bot_type': 'DCA' }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotRequest' example: id: 1 method: private/bot/resume-trading-bot api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 1 bot_type: DCA responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotResponse' example: id: 1 method: private/bot/resume-trading-bot code: 0 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotResponse' example: id: 1 method: private/bot/resume-trading-bot code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotResponse' example: id: 1 method: private/bot/resume-trading-bot code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotResponse' example: id: 1 method: private/bot/resume-trading-bot code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotResponse' example: id: 1 method: private/bot/resume-trading-bot code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotResumeTradingBotResponse' example: id: 1 method: private/bot/resume-trading-bot code: '50001' message: INTERNAL_SERVER_ERROR /private/bot/get-trading-bots: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/get-trading-bots description: Returns a list of Trading Bots filtered by type and state. Results are sorted by update time in descending order. operationId: privateBotGetTradingBots x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateBotGetTradingBots({ bot_types: ['DCA', 'TWAP', 'GRID', 'FUNDING_ARBITRAGE'], state: ['RUNNING', 'PAUSED'], page: 0, page_size: 20 }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_bot_get_trading_bots({ 'bot_types': ['DCA', 'TWAP', 'GRID', 'FUNDING_ARBITRAGE'], 'state': ['RUNNING', 'PAUSED'], 'page': 0, 'page_size': 20 }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsRequest' example: id: 1 method: private/bot/get-trading-bots api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_types: - DCA - TWAP - GRID - FUNDING_ARBITRAGE state: - RUNNING - PAUSED page: 0 page_size: 20 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsResponse' example: id: 1 method: private/bot/get-trading-bots code: 0 result: bot_list: - bot_id: '1' bot_type: DCA display_name: My DCA Bot state: RUNNING create_time: 1691510460000 update_time: 1691510460000 end_time: 0 settings: is_basket: false allocations: - instrument_name: BTC_USDT allocated_percentage: '100' investment_currency: USDT side: BUY type: MARKET auto_stake: false quantity: '0.01' investment_frequency_mode: FIXED_DURATION investment_frequency: 300000 max_order: '10' first_investment_time: 1691510460000 execution_summary: executed_order: '5' total_invested: '500' total_quantity: '0.05' avg_price: '10000' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsResponse' example: id: 1 method: private/bot/get-trading-bots code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsResponse' example: id: 1 method: private/bot/get-trading-bots code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsResponse' example: id: 1 method: private/bot/get-trading-bots code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsResponse' example: id: 1 method: private/bot/get-trading-bots code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotsResponse' example: id: 1 method: private/bot/get-trading-bots code: '50001' message: INTERNAL_SERVER_ERROR /private/bot/get-trading-bot-executions: post: tags: - Trading Bot API x-apply-to: - rest summary: private/bot/get-trading-bot-executions description: Returns the order execution history for a specific Trading Bot. operationId: privateBotGetTradingBotExecutions x-codeSamples: - lang: JavaScript label: JavaScript source: | const ccxt = require('ccxt'); const exchange = new ccxt.cryptocom({ apiKey: 'YOUR_API_KEY', secret: 'YOUR_SECRET', enableRateLimit: true, }); const res = await exchange.v1PrivatePostPrivateBotGetTradingBotExecutions({ bot_id: 1, page: 0, page_size: 20 }); console.log(res); - lang: Python label: Python source: | import ccxt exchange = ccxt.cryptocom({ 'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True, }) res = exchange.v1_private_post_private_bot_get_trading_bot_executions({ 'bot_id': 1, 'page': 0, 'page_size': 20 }) print(res) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsRequest' example: id: 1 method: private/bot/get-trading-bot-executions api_key: YOUR_API_KEY sig: DIGITAL_SIGNATURE nonce: 1610905028000 params: bot_id: 1 page: 0 page_size: 20 responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsResponse' example: id: 1 method: private/bot/get-trading-bot-executions code: 0 result: execution_list: - instrument_name: BTC/USD symbol: BTC_USD execution_time: 1691510460000 schedule_time: 1691510400000 order_status: FILLED side: BUY price: '50000.00' quantity: '0.01' avg_price: '49950.00' cum_qty: '0.01' order_id: '12345678' update_time: 1691510460000 executed_percentage: '100.00' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsResponse' example: id: 1 method: private/bot/get-trading-bot-executions code: '40001' message: BAD_REQUEST '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsResponse' example: id: 1 method: private/bot/get-trading-bot-executions code: '40101' message: UNAUTHORIZED '408': description: Request timeout. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsResponse' example: id: 1 method: private/bot/get-trading-bot-executions code: '40801' message: REQUEST_TIMEOUT '429': description: Too many requests. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsResponse' example: id: 1 method: private/bot/get-trading-bot-executions code: '42901' message: TOO_MANY_REQUESTS '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/PrivateBotGetTradingBotExecutionsResponse' example: id: 1 method: private/bot/get-trading-bot-executions code: '50001' message: INTERNAL_SERVER_ERROR components: schemas: ApiError: $ref: exchange-schema.generated.yaml#/components/schemas/ApiError PrivateUserBalanceRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateUserBalanceRequest PrivateCreateOrderRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateOrderRequest PrivateUserBalanceHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateUserBalanceHistoryRequest PrivateGetAccountsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetAccountsRequest PrivateCreateSubaccountTransferRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateSubaccountTransferRequest PrivateGetSubaccountBalancesRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetSubaccountBalancesRequest PrivateGetPositionsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetPositionsRequest PrivateGetFeeCreditBalancesRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetFeeCreditBalancesRequest PrivateGetOpenOrdersRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOpenOrdersRequest PrivateGetOrderDetailRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderDetailRequest PrivateOrder: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOrder PrivateGetOrderDetailResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderDetailResponse PrivateCancelOrderRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCancelOrderRequest PrivateCancelAllOrdersRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCancelAllOrdersRequest PrivateAmendOrderRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAmendOrderRequest PrivateClosePositionRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateClosePositionRequest PrivateChangeAccountLeverageRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateChangeAccountLeverageRequest PrivateChangeAccountSettingsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateChangeAccountSettingsRequest PrivateGetAccountSettingsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetAccountSettingsRequest PrivateCreateIsolatedMarginTransferRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateIsolatedMarginTransferRequest PrivateChangeIsolatedMarginLeverageRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateChangeIsolatedMarginLeverageRequest PrivateGetFeeRateRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetFeeRateRequest PrivateGetInstrumentFeeRateRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetInstrumentFeeRateRequest PrivateGetOrderHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderHistoryRequest PrivateGetTradesRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTradesRequest PrivateGetTransactionsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTransactionsRequest PrivateCreateOrderListRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateOrderListRequest PrivateCancelOrderListRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCancelOrderListRequest PrivateBatchOrderRequestRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBatchOrderRequestRequest PrivateBatchOrderRequestResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBatchOrderRequestResponse PrivateCreateWithdrawalRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateWithdrawalRequest PrivateGetCurrencyNetworksRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetCurrencyNetworksRequest PrivateGetDepositAddressRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetDepositAddressRequest PrivateGetDepositHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetDepositHistoryRequest PrivateGetWithdrawalHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetWithdrawalHistoryRequest PrivateAdvancedCreateOtoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOtoRequest PrivateAdvancedCancelOtoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOtoRequest PrivateAdvancedCreateOtocoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOtocoRequest PrivateAdvancedCancelOtocoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOtocoRequest PrivateAdvancedCreateOrderRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOrderRequest PrivateAdvancedAmendOrderRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedAmendOrderRequest PrivateAdvancedCancelOrderRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOrderRequest PrivateAdvancedCancelAllOrdersRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelAllOrdersRequest PrivateAdvancedGetOpenOrdersRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOpenOrdersRequest PrivateAdvancedGetOrderDetailRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOrderDetailRequest PrivateAdvancedGetOrderHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOrderHistoryRequest PrivateAdvancedCreateOcoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOcoRequest PrivateAdvancedCancelOcoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOcoRequest PrivateAdvancedCreateOrderListRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOrderListRequest PrivateAdvancedCancelOrderListRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOrderListRequest PrivateAdvancedGetOrderListDetailRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOrderListDetailRequest PrivateCaasGetUserRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCaasGetUserRequest PrivateCaasGetUserResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCaasGetUserResponse CaasVerificationStatus: $ref: exchange-schema.generated.yaml#/components/schemas/CaasVerificationStatus PrivateFiatFiatAccessRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatAccessRequest PrivateFiatFiatDepositInfoRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatDepositInfoRequest PrivateFiatFiatDepositHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatDepositHistoryRequest PrivateFiatFiatWithdrawHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatWithdrawHistoryRequest PrivateFiatFiatCreateWithdrawRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatCreateWithdrawRequest PrivateFiatFiatGetPlaidTokenRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatGetPlaidTokenRequest PrivateFiatFiatTransactionQuotaRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatTransactionQuotaRequest PrivateFiatFiatTransactionLimitRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatTransactionLimitRequest PrivateFiatFiatCreateBankAccountRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatCreateBankAccountRequest PrivateFiatFiatGetBankAccountsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatGetBankAccountsRequest PublicStakingGetConversionRateRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PublicStakingGetConversionRateRequest PrivateStakingStakeRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingStakeRequest PrivateStakingUnstakeRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingUnstakeRequest PrivateStakingGetStakingPositionRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetStakingPositionRequest PrivateStakingGetStakingInstrumentsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetStakingInstrumentsRequest PrivateStakingGetOpenStakeRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetOpenStakeRequest PrivateStakingGetStakeHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetStakeHistoryRequest PrivateStakingGetRewardHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetRewardHistoryRequest PrivateStakingConvertRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingConvertRequest PrivateStakingGetOpenConvertRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetOpenConvertRequest PrivateStakingGetConvertHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetConvertHistoryRequest PrivateOtcRequestQuoteRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcRequestQuoteRequest PrivateOtcGetOpenQuoteRequestsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOpenQuoteRequestsRequest PrivateOtcGetOpenQuotesRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOpenQuotesRequest PrivateOtcGetQuoteHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetQuoteHistoryRequest PrivateOtcGetQuoteRequestHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetQuoteRequestHistoryRequest PrivateOtcGetQuoteMessagesRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetQuoteMessagesRequest PrivateOtcRequestDealRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcRequestDealRequest PrivateOtcGetOpenDealsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOpenDealsRequest PrivateOtcGetDealHistoryRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetDealHistoryRequest PrivateOtcGetSettleLaterLimitRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetSettleLaterLimitRequest PrivateOtcGetUnsettledAmountsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetUnsettledAmountsRequest PrivateOtcGetOtcInstrumentsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOtcInstrumentsRequest PublicGetRiskParametersResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetRiskParametersResponse PublicGetEventsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetEventsResponse PublicGetEventBySymbolResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetEventBySymbolResponse PublicGetEventSettlementDescriptionsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetEventSettlementDescriptionsResponse EventItem: $ref: exchange-schema.generated.yaml#/components/schemas/EventItem EventSettlementDefinitionItem: $ref: exchange-schema.generated.yaml#/components/schemas/EventSettlementDefinitionItem EventSettlementDescriptionItem: $ref: exchange-schema.generated.yaml#/components/schemas/EventSettlementDescriptionItem PublicGetInstrumentsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetInstrumentsResponse PublicGetInstrumentLifecycleStatesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetInstrumentLifecycleStatesResponse InstrumentLifecycleStateItem: $ref: exchange-schema.generated.yaml#/components/schemas/InstrumentLifecycleStateItem PublicGetInstrumentMarketStatusResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetInstrumentMarketStatusResponse InstrumentMarketStatusItem: $ref: exchange-schema.generated.yaml#/components/schemas/InstrumentMarketStatusItem PublicGetBookResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetBookResponse PublicGetCandlestickResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetCandlestickResponse PublicGetTradesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetTradesResponse PublicGetTickersResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetTickersResponse PublicGetValuationsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetValuationsResponse PublicGetExpiredSettlementPriceResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetExpiredSettlementPriceResponse PublicGetInsuranceResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetInsuranceResponse PublicGetPayoutProjectionsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetPayoutProjectionsResponse PublicGetSettlementRulesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicGetSettlementRulesResponse PayoutProjectionItem: $ref: exchange-schema.generated.yaml#/components/schemas/PayoutProjectionItem SettlementRuleItem: $ref: exchange-schema.generated.yaml#/components/schemas/SettlementRuleItem SourceAgencyItem: $ref: exchange-schema.generated.yaml#/components/schemas/SourceAgencyItem PositionBalanceItem: $ref: exchange-schema.generated.yaml#/components/schemas/PositionBalanceItem BalanceItem: $ref: exchange-schema.generated.yaml#/components/schemas/BalanceItem PrivateUserBalanceResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateUserBalanceResponse UserBalanceHistoryItem: $ref: exchange-schema.generated.yaml#/components/schemas/UserBalanceHistoryItem PrivateUserBalanceHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateUserBalanceHistoryResponse PrivateGetAccountsAccount: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetAccountsAccount PrivateGetAccountsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetAccountsResponse PrivateCreateSubaccountTransferResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateSubaccountTransferResponse PrivateGetSubaccountBalancesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetSubaccountBalancesResponse PrivateGetPositionsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetPositionsResponse PrivateGetFeeCreditBalancesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetFeeCreditBalancesResponse PrivateGetOpenOrdersResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOpenOrdersResponse PrivateCreateOrderResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateOrderResponse PrivateCancelOrderResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCancelOrderResponse PrivateCancelAllOrdersResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCancelAllOrdersResponse PrivateAmendOrderResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAmendOrderResponse PrivateClosePositionResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateClosePositionResponse PrivateChangeAccountLeverageResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateChangeAccountLeverageResponse PrivateChangeAccountSettingsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateChangeAccountSettingsResponse PrivateGetAccountSettingsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetAccountSettingsResponse PrivateCreateIsolatedMarginTransferResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateIsolatedMarginTransferResponse PrivateChangeIsolatedMarginLeverageResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateChangeIsolatedMarginLeverageResponse PrivateGetFeeRateResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetFeeRateResponse PrivateGetInstrumentFeeRateResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetInstrumentFeeRateResponse PrivateGetOrderHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetOrderHistoryResponse PrivateGetTradesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTradesResponse PrivateGetTransactionsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetTransactionsResponse PrivateCreateOrderListResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateOrderListResponse PrivateCancelOrderListResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCancelOrderListResponse PrivateCreateWithdrawalResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateCreateWithdrawalResponse PrivateGetCurrencyNetworksResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetCurrencyNetworksResponse PrivateGetDepositAddressResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetDepositAddressResponse PrivateGetDepositHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetDepositHistoryResponse PrivateGetWithdrawalHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateGetWithdrawalHistoryResponse PrivateAdvancedCreateOtoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOtoResponse PrivateAdvancedCancelOtoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOtoResponse PrivateAdvancedCreateOtocoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOtocoResponse PrivateAdvancedCancelOtocoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOtocoResponse PrivateAdvancedCreateOrderResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOrderResponse PrivateAdvancedAmendOrderResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedAmendOrderResponse PrivateAdvancedCancelOrderResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOrderResponse PrivateAdvancedCancelAllOrdersResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelAllOrdersResponse PrivateAdvancedGetOpenOrdersResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOpenOrdersResponse PrivateAdvancedGetOrderDetailResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOrderDetailResponse PrivateAdvancedGetOrderHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOrderHistoryResponse PrivateAdvancedCreateOcoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOcoResponse PrivateAdvancedCancelOcoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOcoResponse PrivateAdvancedCreateOrderListResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCreateOrderListResponse PrivateAdvancedCancelOrderListResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedCancelOrderListResponse PrivateAdvancedGetOrderListDetailResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateAdvancedGetOrderListDetailResponse PrivateFiatFiatAccessResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatAccessResponse PrivateFiatFiatDepositInfoResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatDepositInfoResponse PrivateFiatFiatDepositHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatDepositHistoryResponse PrivateFiatFiatWithdrawHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatWithdrawHistoryResponse PrivateFiatFiatCreateWithdrawResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatCreateWithdrawResponse PrivateFiatFiatGetPlaidTokenResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatGetPlaidTokenResponse PrivateFiatFiatTransactionQuotaResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatTransactionQuotaResponse PrivateFiatFiatTransactionLimitResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatTransactionLimitResponse PrivateFiatFiatCreateBankAccountResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatCreateBankAccountResponse PrivateFiatFiatGetBankAccountsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateFiatFiatGetBankAccountsResponse PublicStakingGetConversionRateResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PublicStakingGetConversionRateResponse PrivateStakingStakeResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingStakeResponse PrivateStakingUnstakeResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingUnstakeResponse PrivateStakingGetStakingPositionResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetStakingPositionResponse PrivateStakingGetStakingInstrumentsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetStakingInstrumentsResponse PrivateStakingGetOpenStakeResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetOpenStakeResponse PrivateStakingGetStakeHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetStakeHistoryResponse PrivateStakingGetRewardHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetRewardHistoryResponse PrivateStakingConvertResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingConvertResponse PrivateStakingGetOpenConvertResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetOpenConvertResponse PrivateStakingGetConvertHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateStakingGetConvertHistoryResponse PrivateOtcRequestQuoteResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcRequestQuoteResponse PrivateOtcGetOpenQuoteRequestsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOpenQuoteRequestsResponse PrivateOtcGetOpenQuotesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOpenQuotesResponse PrivateOtcGetQuoteHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetQuoteHistoryResponse PrivateOtcGetQuoteRequestHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetQuoteRequestHistoryResponse PrivateOtcGetQuoteMessagesResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetQuoteMessagesResponse PrivateOtcRequestDealResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcRequestDealResponse PrivateOtcGetOpenDealsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOpenDealsResponse PrivateOtcGetDealHistoryResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetDealHistoryResponse PrivateOtcGetSettleLaterLimitResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetSettleLaterLimitResponse PrivateOtcGetUnsettledAmountsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetUnsettledAmountsResponse PrivateOtcGetOtcInstrumentsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateOtcGetOtcInstrumentsResponse FeeCreditItem: $ref: exchange-schema.generated.yaml#/components/schemas/FeeCreditItem FeeCreditDetail: $ref: exchange-schema.generated.yaml#/components/schemas/FeeCreditDetail BotType: $ref: exchange-schema.generated.yaml#/components/schemas/BotType InvestmentFrequencyMode: $ref: exchange-schema.generated.yaml#/components/schemas/InvestmentFrequencyMode GridMode: $ref: exchange-schema.generated.yaml#/components/schemas/GridMode DcaAllocation: $ref: exchange-schema.generated.yaml#/components/schemas/DcaAllocation DcaBotSettings: $ref: exchange-schema.generated.yaml#/components/schemas/DcaBotSettings TwapBotSettings: $ref: exchange-schema.generated.yaml#/components/schemas/TwapBotSettings GridBotSettings: $ref: exchange-schema.generated.yaml#/components/schemas/GridBotSettings TradingLeg: $ref: exchange-schema.generated.yaml#/components/schemas/TradingLeg TradingProhibitionItem: $ref: exchange-schema.generated.yaml#/components/schemas/TradingProhibitionItem FundingArbitrageBotSettings: $ref: exchange-schema.generated.yaml#/components/schemas/FundingArbitrageBotSettings PrivateBotCreateTradingBotRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotCreateTradingBotRequest PrivateBotCreateTradingBotResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotCreateTradingBotResponse PrivateBotTerminateTradingBotRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotTerminateTradingBotRequest PrivateBotTerminateTradingBotResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotTerminateTradingBotResponse PrivateBotUpdateTradingBotRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotUpdateTradingBotRequest PrivateBotUpdateTradingBotResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotUpdateTradingBotResponse PrivateBotPauseTradingBotRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotPauseTradingBotRequest PrivateBotPauseTradingBotResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotPauseTradingBotResponse PrivateBotResumeTradingBotRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotResumeTradingBotRequest PrivateBotResumeTradingBotResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotResumeTradingBotResponse PrivateBotGetTradingBotsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotGetTradingBotsRequest PrivateBotGetTradingBotsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotGetTradingBotsResponse PrivateBotGetTradingBotExecutionsRequest: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotGetTradingBotExecutionsRequest PrivateBotGetTradingBotExecutionsResponse: $ref: exchange-schema.generated.yaml#/components/schemas/PrivateBotGetTradingBotExecutionsResponse responses: Success: description: Success (body `code` 0). Result shape is method-specific. content: application/json: schema: type: object properties: id: type: string format: int64 method: type: string code: type: string format: int32 example: '0' result: type: object BadRequest: description: Bad request (HTTP 400). Body codes e.g. 40001 BAD_REQUEST, 40004 MISSING_OR_INVALID_ARGUMENT, 42901 TOO_MANY_REQUESTS; see Response and Reason Codes. content: application/json: schema: $ref: '#/components/schemas/ApiError' Unauthorized: description: Unauthorized (HTTP 401). Body codes 40101 UNAUTHORIZED, 40103 IP_ILLEGAL, 40104 USER_TIER_INVALID. content: application/json: schema: $ref: '#/components/schemas/ApiError' RequestTimeout: description: Request timeout (HTTP 408). Body code 40801 REQUEST_TIMEOUT. content: application/json: schema: $ref: '#/components/schemas/ApiError' TooManyRequests: description: Too many requests (HTTP 429). Body code 42901 TOO_MANY_REQUESTS. content: application/json: schema: $ref: '#/components/schemas/ApiError' InternalServerError: description: Internal server error (HTTP 500). Body codes e.g. 201–321, 406–412, 43003–43005, 50001, 501, 604–620; see Response and Reason Codes. content: application/json: schema: $ref: '#/components/schemas/ApiError'