Version: 1.0.0

Crypto.com Exchange API v1

Welcome​

Welcome to the Crypto.com Exchange API v1 reference documentation.

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

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.

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

Notes on Exchange Upgrade and API Versions​

  • Exchange v1 API is the latest version of API which can trade Spot / Derivatives / Margin.
  • 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.
  • 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.

Breaking Change Schedule​

  • On 2025-12-17 8:00 UTC,
    The current trigger order creation/cancellation will be migrated to Advanced Order Management API.

  • On 2025-02-27 8:00 UTC,
    For book.{instrument_name}.{depth}, the full snapshot subscription (book_subscription_type=SNAPSHOT) 100ms frequency is removed.
    Customers wishing to continue with the faster 100ms frequency should switch to the delta subscription (book_subscription_type=SNAPSHOT_AND_UPDATE).
    This higher performing subscription benefits the user with reduced bandwidth/processing compared to the snapshot subscription.
    For a transition period, users subscribing to the removed 100ms snapshot will receive the 500ms subscription.

    The book.{instrument_name} subscription (default depth) will be removed.
    Customers should use the explicit book.{instrument_name}.{depth} subscription and specify the required depth.

    For a transition period, users subscribing to the removed subscription will receive the default 50 depth subscription.

  • These changes will take place around 17 December 2023 8:00 UTC.

  • Market Data wildcard ticker subscription will be removed. Users should use the instrument specific subscription.

Change Log​

  • 2026-05-21
    • public/get-instruments response updated, new field product_type was added
    • Trading Bot API section was added: private/bot/create-trading-bot (DCA, TWAP, GRID, FUNDING_ARBITRAGE) private/bot/terminate-trading-bot private/bot/update-trading-bot private/bot/pause-trading-bot private/bot/resume-trading-bot private/bot/get-trading-bots private/bot/get-trading-bot-executions
  • 2026-05-07
    • Advanced Order Management API section was updated for DerivAttach
    • 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.
    • 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).
    • private/advanced/cancel-oto and private/advanced/cancel-otoco — updated to cover both SPOT_ATTACH and DERIV_ATTACH.
    • private/advanced/cancel-all-orders — new optional field position_type (CROSS_MARGIN, ISOLATED_MARGIN).
    • 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.
    • private/advanced/amend-order — corrected required/optional flags: new_price is Y, new_quantity is Y, new_ref_price is N.
  • 2026-04-29
    • Fee Credits
    • private/get-fee-credit-balances was added
    • private/get-trades response updated, new field fee_credits was added
    • user.trade.{instrument_name} response updated, new field fee_credits was added
  • 2026-04-07
    • private/get-accounts response updated, new field hierarchy was added
  • 2026-04-01
    • private/create-order request updated, REDUCE_ONLY was added to exec_inst
  • 2026-01-08
    • Add support for isolated position
    • private/create-isolated-margin-transfer was added
    • private/change-isolated-margin-leverage was added
    • private/user-balance response updated, new fields total_isolated_cash_balance and isolated_positions were added
    • private/user-balance-history response updated, new field i was added
    • private/get-subaccount-balances response updated, new fields total_isolated_cash_balance and isolated_positions were added
    • private/get-positions response updated, new fields isolation_id and isolation_type were added
    • private/create-order request updated, new optional fields isolation_id, leverage, isolated_margin_amount were added, exec_inst added support for ISOALTED_MARGIN
    • private/close-position request updated, new optional field isolation_id was added
    • private/get-open-orders response updated, new fields isolation_id and isolation_type were added
    • private/get-order-detail response updated, new fields isolation_id and isolation_type were added
    • private/get-order-history request updated, new optional field isolation_id was added, response updated, new fields isolation_id and isolation_type were added
    • private/get-trades request updated, new optional field isolation_id was added, response updated, new fields isolation_id and isolation_type were added
    • private/get-transactions request updated, new optional field isolation_id was added, response updated, new fields isolation_id and isolation_type were added
    • user.order.{instrument_name} response updated, new fields isolation_id and isolation_type were added
    • user.trade.{instrument_name} response updated, new fields isolation_id and isolation_type were added
    • user.balance response updated, new fields total_isolated_cash_balance and isolated_positions were added
    • user.positions response updated, new fields isolation_id, leverage, isolation_type, liquidation_price and isolated_margin_balance were added
    • user.account_risk response updated, new fields total_isolated_cash_balance, isolated_positions were added
    • user.position_balance response updated, new field isolated_positions was added
  • 2025-03-26
    • transaction_time was added into user.order.{instrument_name}
  • 2025-11-18
    • public/get-risk-parameters was added new columns
  • 2025-10-16
    • Advanced Order Management API section was updated
  • 2025-07-17
    • private/fiat/fiat-deposit-info was added
    • private/fiat/fiat-deposit-history was added
    • private/fiat/fiat-withdraw-history was added
    • private/fiat/fiat-create-withdraw was added
    • private/fiat/fiat-get-bank-accounts was added
    • private/fiat/fiat-transaction-quota was added
    • private/fiat/fiat-transaction-limit was added
  • 2025-07-04
    • private/create-order exec_inst was added SMART_POST_ONLY
    • private/create-order-list (LIST) exec_inst was added SMART_POST_ONLY
    • private/get-open-orders exec_inst was added SMART_POST_ONLY
    • private/get-order-detail was added, exec_inst was added SMART_POST_ONLY
    • private/get-order-history exec_inst was added SMART_POST_ONLY
  • 2025-06-10
    • private/amend-order was added
    • public/get-announcements was added
  • 2025-05-29
    • transaction_time_ns field was added into user.order.{instrument_name} response
  • 2025-03-14
    • Removed deprecated attributes system_label in private/get-accounts
  • 2025-03-06
    • Removed deprecated book.{instrument_name} default book subscription
    • Removed deprecated 100ms interval from full snapshot book.{instrument_name}.{depth} book subscription
  • 2025-03-04
    • Remove section: Unified Wallet and System Label
  • 2025-01-27
    • book.{instrument_name}.{depth} - The following additional update frequencies are now supported:
      Full snapshot subscription (book_subscription_type=SNAPSHOT) 500ms
      Delta subscription (book_subscription_type=SNAPSHOT_AND_UPDATE) 100ms
  • 2024-12-11
    • private/create-order fee_instrument_name was added
  • 2024-10-02
    • public/get-risk-parameters was added
  • 2024-08-15
    • private/get-fee-rate was added
    • private/get-instrument-fee-rate was added
  • 2024-07-12
    • Staking API added:
      private/staking/stake
      private/staking/unstake
      private/staking/get-staking-position
      private/staking/get-staking-instruments
      private/staking/get-open-stake
      private/staking/get-stake-history
      private/staking/get-reward-history
      private/staking/convert
      private/staking/get-open-convert
      private/staking/get-convert-history
      public/staking/get-conversion-rate
  • 2024-06-27
    • private/create-order self-trade prevent (STP) was added
    • private/create-order-list (LIST) self-trade prevent (STP) was added
  • 2024-02-12
    • public/get-trades, trade.{instrument_name} subscription, clarification for the public trade side field
    • Side is the side of the taker order
    • book.{instrument_name}.{depth} clarifications for book delta sequence number handling and re-subscription
  • 2024-01-04
    • Market data websocket subscription enhancements:
    • book.{instrument_name} - The subscription result value is now explicit
      e.g. previous "subscription": "book.BTC_USD" -> new "subscription": "book.BTC_USD.50"
    • 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
    • ticker - Documented existing 'bs' and 'ks' fields (bid/ask size)
    • settlement - For wildcard subscription, the subscription result value is now explicit
      e.g. previous "subscription": "settlement" -> new "subscription": "settlement.BTCUSD-231124"
    • Applied consistent field ordering for all market data subscriptions (book, ticker, trade, candlestick, index, mark, settlement, funding, estimatedfunding).
      Result fields are always in the following order:
      id, method, code, instrument_name, subscription, channel
    • Market data REST public/get-trades
    • Added additional tn nanoseconds timestamp field to the trade response
    • Clarified timestamp pagination parameters
  • 2023-12-18
    • Market Data wildcard ticker subscription removed. Users should use the instrument specific subscription.
  • 2023-12-11
    • Introduced Market Data subscription limiting. Refer to Market Data Websocket Subscription Limits for more details
  • 2023-10-31
    • user.balance, private/user-balance will be updated:
      1. Existing field total_margin_balance will represent new margin balance calculation without haircut.
      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
      3. New field total_position_im will be introduced to represent initial margin requirement to support open positions and orders
      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 for details
    • user.balance, user.account_risk, private/user-balance, private/get-subaccount-balances will be updated:
      1. New field collateral_eligible will be introduced to indicate if token is eligible Collateral
      2. collateral_weight will be deprecated
      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 for details
  • 2023-08-11
    • private/create-order-list (LIST) for batch order creation added
    • private/cancel-order-list (LIST) for batch order cancel added
  • 2023-07-31
    • Market Data Websocket Subscriptions is effective:
    • funding.{instrument_name} - channel will return the fixed hourly rate that will settle at the end of the hour.
    • estimatedfunding.{instrument_name} - channel will return the estimated hourly rate that will begin in the next interval.
    • Added new "funding_rate" and "estimated_funding_rate" valuation types for public/get-valuations
  • 2023-06-28
    • private/get-deposit-history added
    • private/get-withdrawal-history added
  • 2022-11-30
    • Support using client_oid to query in private/get-order-detail REST API
  • 2022-11-10
    • 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.
    • Customer can input both USD and USD_Stable_Coin to mean the same USD Bundle.
    • However, on response, USD will be used to mean USD Bundle, instead of USD_Stable_Coin.
  • 2022-10-31
    • Added private/create-order-list, private/create-subaccount-transfer REST APIs
    • Added user.account_risk and user.position_balance WebSocket subscriptions
    • Added more period in public/get-candlestick candlestick.{time_frame}.{instrument_name} WebSocket subscription
  • 2022-09-21 - Added Unified Wallet and System Label section, to illustrate the transition from multiple wallets into unified wallet.
  • 2022-09-21 - Added new sub-account management endpoints: private/get-accounts, private/create-subaccount-transfer
  • 2022-09-21 - Added new exchange wallet management endpoints: private/create-withdrawal, private/get-deposit-address, private/get-curency-networks
  • 2022-09-21 - First publish, based on Derivative Exchange API v1.

Common API References​

Naming Conventions​

  • All methods and URLs in dash-case
  • All parameters in snake_case
  • Enums in full UPPERCASE and snake_case

Generating the API Key​

Before sending any requests, generate a new API key on the Exchange website under User Center → API. Note down:

  • API Key
  • Secret Key

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

REST API Root Endpoints​

REST API requests must be sent with Content-Type: application/json.

EnvironmentREST API
UAT Sandboxhttps://uat-api.3ona.co/exchange/v1/{method}
Productionhttps://api.crypto.com/exchange/v1/{method}

Websocket Root Endpoints​

EnvironmentWebsocket (User API)
UAT Sandboxwss://uat-stream.3ona.co/exchange/v1/user
Productionwss://stream.crypto.com/exchange/v1/user
EnvironmentWebsocket (Market Data)
UAT Sandboxwss://uat-stream.3ona.co/exchange/v1/market
Productionwss://stream.crypto.com/exchange/v1/market

Rate Limits​

REST API​

For authenticated calls, rate limits are per API method, per API key:

MethodLimit
private/create-order,
private/cancel-order,
private/cancel-all-orders
15 requests per 100ms each
private/get-order-detail30 requests per 100ms
private/get-trades1 request per second
private/get-order-history1 request per second
All others3 requests per 100ms each

For public market data calls, rate limits are per API method, per IP address:

MethodLimit
All100 requests per second each

Staking​

MethodLimit
All50 requests per second each

Websocket​

MethodLimit
User API150 requests per second
Market Data100 requests per second

Request Format​

The following information applies to both REST API and websockets commands:

NameTypeRequiredDescription
idlongYRequest identifier (0 to 9,223,372,036,854,775,807). Response echoes the same id.
methodstringYThe method to be invoked (e.g. private/get-order-detail).
paramsobjectYParameters for the method. Use {} when a method has no parameters.
api_keystringDependsAPI key. Required for private methods (see Digital Signature).
sigstringDependsDigital signature. Required for private methods.
noncelongYCurrent timestamp in milliseconds since the Unix epoch.

⚠️ All numbers must be strings, and must be wrapped in double quotes. e.g. "12.34", instead of 12.34.

Digital Signature​

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

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

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

⚠️ You should NEVER explicitly include the API Secret Key in plain-text in your request

The algorithm for generating the HMAC-SHA256 signature is as follows:

  1. If "params" exist in the request, sort the request parameter keys in ascending order.
  2. Combine all the ordered parameter keys as key + value (no spaces, no delimiters). Let's call this the parameter string
  3. Next, do the following: method + id + api_key + parameter string + nonce
  4. Use HMAC-SHA256 to hash the above using the API Secret as the cryptographic key
  5. Encode the output as a hex string -- this is your Digital Signature

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

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

JavaScript Example​

const crypto = require("crypto-js");

const signRequest = (request_body, api_key, secret) => {
const { id, method, params, nonce } = request_body;

function isObject(obj) {
return obj !== undefined && obj !== null && obj.constructor == Object;
}
function isArray(obj) {
return obj !== undefined && obj !== null && obj.constructor == Array;
}
function arrayToString(obj) {
return obj.reduce((a,b) => { return a + (isObject(b) ? objectToString(b) : (isArray(b) ? arrayToString(b) : b)); }, "");
}
function objectToString(obj) {
return (obj == null ? "" : Object.keys(obj).sort().reduce((a, b) => {
return a + b + (isArray(obj[b]) ? arrayToString(obj[b]) : (isObject(obj[b]) ? objectToString(obj[b]) : obj[b]));
}, ""));
}

const paramsString = objectToString(params);

const sigPayload = method + id + api_key + paramsString + nonce;
request_body.sig = crypto.HmacSHA256(sigPayload, secret).toString(crypto.enc.Hex);

return request_body;
};

const apiKey = "token"; /* User API Key */
const apiSecret = "secretKey"; /* User API Secret */

let request = {
id: "11",
method: "private/get-order-detail",
api_key: apiKey,
params: {
order_id: "53287421324"
},
nonce: "1587846358253",
};

const requestBody = JSON.stringify(signRequest(request, apiKey, apiSecret));

Python Example​

import hmac
import hashlib
import time

API_KEY = "API_KEY"
SECRET_KEY = "SECRET_KEY"

req = {
"id": "14",
"method": "private/create-order-list",
"api_key": API_KEY,
"params": {
"contingency_type": "LIST",
"order_list": [
{
"instrument_name": "ONE_USDT",
"side": "BUY",
"type": "LIMIT",
"price": "0.24",
"quantity": "1.0"
},
{
"instrument_name": "ONE_USDT",
"side": "BUY",
"type": "STOP_LIMIT",
"price": "0.27",
"quantity": "1.0",
"trigger_price": "0.26"
}
]
},
"nonce": str(int(time.time() * 1000))
}

# First ensure the params are alphabetically sorted by key
param_str = ""

MAX_LEVEL = 3


def params_to_str(obj, level):
if level >= MAX_LEVEL:
return str(obj)

return_str = ""
for key in sorted(obj):
return_str += key
if obj[key] is None:
return_str += 'null'
elif isinstance(obj[key], list):
for subObj in obj[key]:
return_str += params_to_str(subObj, level + 1)
else:
return_str += str(obj[key])
return return_str


if "params" in req:
param_str = params_to_str(req['params'], 0)

payload_str = req['method'] + str(req['id']) + req['api_key'] + param_str + str(req['nonce'])

req['sig'] = hmac.new(
bytes(str(SECRET_KEY), 'utf-8'),
msg=bytes(payload_str, 'utf-8'),
digestmod=hashlib.sha256
).hexdigest()

C# Example​

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

private const string API_KEY = "YOUR_API_KEY";
private const string API_SECRET = "YOUR_API_SECRET";

private static string GetSign(Dictionary<string, object> request)
{
var paramsDict = request["params"] as Dictionary<string, object>;

// Ensure the params are alphabetically sorted by key
// Note: For nested objects or lists, implement recursive sorting similar to JS/Python examples
string paramString = paramsDict != null
? string.Join("", paramsDict.Keys.OrderBy(key => key).Select(key => key + paramsDict[key]))
: "";

string sigPayload = request["method"].ToString()
+ request["id"].ToString()
+ API_KEY
+ paramString
+ request["nonce"].ToString();

using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(API_SECRET)))
{
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(sigPayload));
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}

Java Example​

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Map;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiRequestJson {
private Long id;
private String method;
private Map<String, Object> params;
private String sig;

@JsonProperty("api_key")
private String apiKey;

private Long nonce;
}

//------------

import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;

public class SigningUtil {

private static final String HMAC_SHA256 = "HmacSHA256";
private static final int MAX_LEVEL = 3;

public static boolean verifySignature(ApiRequestJson apiRequestJson, String secret) {
try {
return genSignature(apiRequestJson, secret).equalsIgnoreCase(apiRequestJson.getSig());
} catch (Exception e) {
return false;
}
}

@SuppressWarnings("unchecked")
public static String getParamString(final Object paramObject) {
StringBuilder sb = new StringBuilder();
appendParamString(sb, paramObject, 0);
return sb.toString();
}


@SuppressWarnings("unchecked")
private static void appendParamString(final StringBuilder paramsStringBuilder, final Object paramObject, final int level) {
if (level >= MAX_LEVEL) {
paramsStringBuilder.append(paramObject.toString());
return;
}

if (paramObject instanceof Map) {
TreeMap<String, Object> params = new TreeMap<>((Map) paramObject);
for (Map.Entry<String, Object> entry : params.entrySet()) {
if (entry.getValue() instanceof Double) {
paramsStringBuilder
.append(entry.getKey())
.append((new BigDecimal(entry.getValue().toString()))
.stripTrailingZeros()
.toPlainString());
} else if (entry.getValue() instanceof List || entry.getValue() instanceof Map) {
paramsStringBuilder
.append(entry.getKey());
appendParamString(paramsStringBuilder, entry.getValue(), level + 1);
} else {
paramsStringBuilder
.append(entry.getKey())
.append(entry.getValue());
}
}
} else if (paramObject instanceof List) {
List list = (List) paramObject;
for (Object o : list) {
appendParamString(paramsStringBuilder, o, level + 1);
}
} else {
paramsStringBuilder.append(paramObject.toString());
}
}

public static String genSignature(ApiRequestJson apiRequestJson, String secret)
throws NoSuchAlgorithmException, InvalidKeyException {
final byte[] byteKey = secret.getBytes(StandardCharsets.UTF_8);
Mac mac = Mac.getInstance(HMAC_SHA256);
SecretKeySpec keySpec = new SecretKeySpec(byteKey, HMAC_SHA256);
mac.init(keySpec);

String paramsString = "";

if (apiRequestJson.getParams() != null) {
paramsString += getParamString(apiRequestJson.getParams());
}

String sigPayload =
apiRequestJson.getMethod()
+ apiRequestJson.getId()
+ apiRequestJson.getApiKey()
+ paramsString
+ (apiRequestJson.getNonce() == null ? "" : apiRequestJson.getNonce());

byte[] macData = mac.doFinal(sigPayload.getBytes(StandardCharsets.UTF_8));

return Hex.encodeHexString(macData);
}

public static ApiRequestJson sign(ApiRequestJson apiRequestJson, String secret)
throws InvalidKeyException, NoSuchAlgorithmException {
apiRequestJson.setSig(genSignature(apiRequestJson, secret));

return apiRequestJson;
}

public static void main(String[] argv) throws InvalidKeyException, NoSuchAlgorithmException {
ApiRequestJson apiRequestJson = ApiRequestJson.builder()
.id(11L)
.apiKey("token")
.method("public/auth")
.nonce(1589594102779L)
.build();

System.out.println(genSignature(apiRequestJson, "secretKey"));

System.out.println(sign(apiRequestJson, "secretKey"));

}
}

Response Format​

NameTypeDescription
idlongOriginal request identifier (or -1 if omitted in request).
methodstringMethod invoked.
resultobjectResult object (present on success).
codeint0 for success; see Response and Reason Codes
messagestringOptional; server or error message.
originalstringOptional; original request as escaped string (for error cases).

Response and Reason Codes​

200 OK​

HTTP StatusCodeMessage Code / Description
2000--:

Success
20040401NOT_FOUND:

Not found
20043012SELF_TRADE_PREVENTION:

Canceled due to Self Trade Prevention

400 Bad Request​

HTTP StatusCodeMessage Code / Description
400202ACCOUNT_IS_SUSPENDED:

Account is suspended
400204DUPLICATE_CLORDID:

Duplicate client order id
400207NO_MARK_PRICE:

No mark price
400208INSTRUMENT_NOT_TRADABLE:

Instrument is not tradable
400209INVALID_INSTRUMENT:

Instrument is invalid
400213INVALID_ORDERQTY:

Invalid order quantity
400218INVALID_ORDTYPE:

Invalid order_type
400220INVALID_SIDE:

Invalid side
400221INVALID_TIF:

Invalid time_in_force
400222STALE_MARK_PRICE:

Stale mark price
400223NO_CLORDID:

No client order id
400224REJ_BY_MATCHING_ENGINE:

Rejected by matching engine
400225EXCEED_MAXIMUM_ENTRY_LEVERAGE:

Exceeds maximum entry leverage
400226INVALID_LEVERAGE:

Invalid leverage
400227INVALID_SLIPPAGE:

Invalid slippage
400228INVALID_FLOOR_PRICE:

Invalid floor price
400229INVALID_REF_PRICE:

Invalid ref price
400230INVALID_REF_PRICE_TYPE:

Invalid ref price type
400308INVALID_PRICE:

Invalid price
400314EXCEEDS_MAX_ORDER_SIZE:

Exceeds max order size
400315FAR_AWAY_LIMIT_PRICE:

Far away limit price
400318EXCEEDS_MAX_ALLOWED_ORDERS:

Exceeds max allowed orders
400319EXCEEDS_MAX_POSITION_SIZE:

Exceeds max position size
400401ACCOUNT_DOES_NOT_EXIST:

Account does not exist
400408MARGIN_UNIT_IS_SUSPENDED:

Margin unit is suspended
40030024MAX_AMOUNT_VIOLATED:

If create-withdrawal call quantity > max_withdrawal_balance in user-balance api
40040001BAD_REQUEST:

Bad request
40040002METHOD_NOT_FOUND:

Method not found
40040003INVALID_REQUEST:

Invalid request
40040004MISSING_OR_INVALID_ARGUMENT:

Required argument is blank or missing
40040005INVALID_DATE:

Invalid date
40040006DUPLICATE_REQUEST:

Duplicate request received
40040102INVALID_NONCE:

Nonce value differs by more than 60 seconds
40040107EXCEED_MAX_SUBSCRIPTIONS:

Session subscription limit has been exceeded
40050001ERR_INTERNAL:

Internal error
40050002DW_CREDIT_LINE_NOT_MAINTAINED:

If create-withdrawal call breaches credit line check

401 Unauthorized​

HTTP StatusCodeMessage Code / Description
40140101UNAUTHORIZED:

Not authenticated, or key/signature incorrect
40140103IP_ILLEGAL:

IP address not whitelisted
40140104USER_TIER_INVALID:

Disallowed based on user tier

408 Request Timeout​

HTTP StatusCodeMessage Code / Description
40840801REQUEST_TIMEOUT:

Request has timed out

429 Too Many Requests​

HTTP StatusCodeMessage Code / Description
42942901TOO_MANY_REQUESTS:

Requests have exceeded rate limits

500 Internal Server Error​

HTTP StatusCodeMessage Code / Description
500201NO_POSITION:

No position
500203ACCOUNTS_DO_NOT_MATCH:

Accounts do not match
500205DUPLICATE_ORDERID:

Duplicate order id
500206INSTRUMENT_EXPIRED:

Instrument has expired
500210INVALID_ACCOUNT:

Account is invalid
500211INVALID_CURRENCY:

Currency is invalid
500212INVALID_ORDERID:

Invalid order id
500214INVALID_SETTLE_CURRENCY:

Invalid settlement currency
500215INVALID_FEE_CURRENCY:

Invalid fee currency
500216INVALID_POSITION_QTY:

Invalid position quantity
500217INVALID_OPEN_QTY:

Invalid open quantity
500219INVALID_EXECINST:

Invalid exec_inst
500301ACCOUNT_IS_IN_MARGIN_CALL:

Account is in margin call
500302EXCEEDS_ACCOUNT_RISK_LIMIT:

Exceeds account risk limit
500303EXCEEDS_POSITION_RISK_LIMIT:

Exceeds position risk limit
500304ORDER_WILL_LEAD_TO_IMMEDIATE_LIQUIDATION:

Order will lead to immediate liquidation
500305ORDER_WILL_TRIGGER_MARGIN_CALL:

Order will trigger margin call
500306INSUFFICIENT_AVAILABLE_BALANCE:

Insufficient available balance
500307INVALID_ORDSTATUS:

Invalid order status
500309MARKET_IS_NOT_OPEN:

Market is not open
500310ORDER_PRICE_BEYOND_LIQUIDATION_PRICE:

Order price beyond liquidation price
500311POSITION_IS_IN_LIQUIDATION:

Position is in liquidation
500312ORDER_PRICE_GREATER_THAN_LIMITUPPRICE:

Order price is greater than the limit up price
500313ORDER_PRICE_LESS_THAN_LIMITDOWNPRICE:

Order price is less than the limit down price
500316NO_ACTIVE_ORDER:

No active order
500317POSITION_NO_EXIST:

Position does not exist
500320EXCEEDS_INITIAL_MARGIN:

Exceeds initial margin
500321EXCEEDS_MAX_AVAILABLE_BALANCE:

Exceeds maximum available balance
500406ACCOUNT_IS_NOT_ACTIVE:

Account is not active
500407MARGIN_UNIT_DOES_NOT_EXIST:

Margin unit does not exist
500409INVALID_USER:

Invalid user
500410USER_IS_NOT_ACTIVE:

User is not active
500411USER_NO_DERIV_ACCESS:

User does not have derivative access
500412ACCOUNT_NO_DERIV_ACCESS:

Account does not have derivative access
500415BELOW_MIN_ORDER_SIZE:

Below Min. Order Size
500501EXCEED_MAXIMUM_EFFECTIVE_LEVERAGE:

Exceeds maximum effective leverage
500604INVALID_COLLATERAL_PRICE:

Invalid collateral price
500605INVALID_MARGIN_CALC:

Invalid margin calculation
500606EXCEED_ALLOWED_SLIPPAGE:

Exceed allowed slippage
500613INVALID_ISOLATION_ID:

Invalid isolation ID
500614EXCEEDS_ISOLATED_POSITION_LIMIT:

Exceeds maximum allowed number of isolated position
500615ACCOUNT_DOES_NOT_SUPPORT_ISOLATED_POSITION:

Account does not support isolated position
500616CREATE_ISOLATED_POSITION_FAILED:

Failed to create isolated position
500617DUPLICATED_INSTRUMENT_ORDER_FOR_ISOLATED_MARGIN:

Account already have isolated position with same instrument
500618TOO_MANY_PENDING_ISOLATED_MARGIN_REQUESTS:

Exceeds request limit for isolated margin order
500619UNSUPPORTED_OPERATION_ON_ISOLATED_POSITION:

Unsupported operation on isolated position
500620CREATE_ISOLATED_POSITION_TIMEOUT:

Request for create isolated position has timed out
4001110REDUCE_ONLY_REJECTED:

Rejected REDUCE_ONLY create-order request
50043003FILL_OR_KILL:

FOK order has not been filled and cancelled
50043004IMMEDIATE_OR_CANCEL:

IOC order has not been filled and cancelled
50043005POST_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)
500120009REJECTED:

Request rejected by upstream service
500130008NON_APPLICABLE:

Operation not applicable for current state

Websocket Termination Codes​

CodeDescription
1000Normal disconnection by server, usually when the heartbeat isn't handled properly
1006Abnormal disconnection
1013Server restarting -- try again later

Error Response Format​

Due to the asynchronous nature of websocket requests, a robust and consistent error response is crucial in order to match the response with the request.

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

The original request will be returned as an escaped string in the original field.

Common Issues​

TOO_MANY_REQUESTS After Websocket Connects​

Websocket rate limits are pro-rated based on the calendar-second that the websocket connection was opened.

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

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

This will avoid occurrences of rate-limit (TOO_MANY_REQUESTS) errors.

INVALID_NONCE On All Requests​

The nonce should be the UTC Unix timestamp in milliseconds.

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

Usually, re-syncing with the NTP time server on the client machine will correct the issue.

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

Reference and Market Data

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

EndpointUse CaseUpdate Frequency
public/get-bookOrder book depth (bids/asks)Snapshot on request (up to 50 levels)
public/get-tickers24h summary (high, low, volume, open interest)Updated per trade
public/get-tradesRecent trade historyLast 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 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).

public/get-risk-parameters

GET 

/public/get-risk-parameters

Provides information on risk parameter settings for Smart Cross Margin.
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Risk parameters (Smart Cross Margin).
    default_max_product_leverage_for_spot decimal

    default max product leverage for margin trading unless specified in base_currency_config array

    default_max_product_leverage_for_perps decimal

    default max product leverage for perpetuals unless specified in base_currency_config array

    default_max_product_leverage_for_futures decimal

    default max product leverage for futures unless specified in base_currency_config array

    default_umr_multiplier_for_spot decimal
    default_umr_multiplier_for_perps decimal
    default_umr_multiplier_for_futures decimal
    default_long_pos_limit_perps decimal

    default max long position permitted for perpetual contracts, unless specified in base_currency_config array. A value of -1 indicates that no position limit applies.

    default_short_pos_limit_perps decimal

    default max short position permitted for perpetual contracts, unless specified in base_currency_config array. A value of -1 indicates that no position limit applies.

    default_long_pos_limit_futures decimal

    default max long position permitted on futures, unless specified in base_currency_config array. A value of -1 indicates that no position limit applies.

    default_short_pos_limit_futures decimal

    default max short position permitted on futures, unless specified in base_currency_config array. A value of -1 indicates that no position limit applies.

    default_unit_margin_rate decimal

    default additional margin rate / haircut rate for holding 1 unit of positions unless specified in base_currency_config array

    default_collateral_cap decimal

    refer to specified collateral cap for each token in base_currency_config array. Field is omitted if the token is not eligible as collateral

    update_timestamp_ms int64

    Last update time (ms).

    base_currency_config object[]
    specific risk parameters as shown below
  • Array [
  • instrument_name string
    collateral_cap_notional decimal

    the maximum $notional that is counted towards the margin balance. Any additional token balance would not contribute to the margin balance. Field is omitted if the token is not eligible as collateral

    minimum_haircut decimal

    Minimum haircut rate. Field is omitted if the token is not eligible as collateral

    max_product_leverage_for_spot decimal

    the max product leverage for margin trading on this token.

    max_product_leverage_for_perps decimal

    the max product leverage for perpetuals on this base token

    max_product_leverage_for_futures decimal

    the max product leverage for futures on this base token

    unit_margin_rate decimal

    the additional margin rate / haircut rate for holding 1 unit of positions with this base token

    max_short_sell_limit decimal

    max negative asset balance user can hold on the base token. If field is omitted means no short sell permitted on the token

    daily_notional_limit decimal

    max spot order notional user can place in rolling 24-hour window. If field is omitted

    order_limit decimal

    max $notional per spot order on this base token

    max_order_notional_usd decimal

    max $notional per spot order on this base token

    min_order_notional_usd decimal

    min $notional per spot order on this base token

    long_pos_limit_perps decimal

    the max long position permitted for perpetuals on this base token

    short_pos_limit_perps decimal

    the max short position permitted for perpetuals on this base token

    long_pos_limit_futures decimal

    the max long position permitted for futures on this base token

    short_pos_limit_futures decimal

    the max short position permitted for futures on this base token

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-instruments

GET 

/public/get-instruments

Provides information on all supported instruments (e.g. BTCUSD-PERP).

Request​

Query Parameters

    event_symbols string

    Filter by up to 10 event symbols. Comma-separated.

    is_combo boolean

    Filter for combo instruments.

    PREDICT_CONTRACT_TYPE string

    Filter by predict contract type.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Instruments (data array).
    data object[]
    List of instruments.
  • Array [
  • symbol string

    Instrument name, e.g. BTCUSD-PERP

    inst_type string

    Instrument type, e.g. PERPETUAL_SWAP

    display_name string

    Display name, e.g. BTCUSD Perpetual

    base_ccy string

    Base currency, e.g. BTC

    quote_ccy string

    Quote currency, e.g. USD

    quote_decimals int32

    Minimum decimal place for price field

    quantity_decimals int32

    Minimum decimal place for qty field

    price_tick_size decimal

    Minimum price tick size

    qty_tick_size decimal

    Minimum trading quantity / tick size

    max_leverage decimal

    Max leverage of the product

    tradable boolean

    True or false

    expiry_timestamp_ms int64

    Expiry timestamp in milliseconds

    beta_product boolean

    Whether this is a beta product.

    underlying_symbol string

    Underlying symbol

    product_type string

    Product type of the instrument. Possible values: COMMODITIES, EQUITY_IND, CURRENCIES, DIGITAL_CURRENCIES, EVENTS, EQUITY, PRE_IPO. Only returned if applicable.

    contract_size decimal

    Contract size for the instrument.

    margin_buy_enabled boolean

    Whether margin buying is enabled for this instrument.

    margin_sell_enabled boolean

    Whether margin selling is enabled for this instrument.

    event_details object
    Event details for prediction market instruments. Structure is flexible and defined by external systems.
    property name* any

    Event details for prediction market instruments. Structure is flexible and defined by external systems.

    last_updated_time int64

    Unix timestamp in nanoseconds when the instrument was last updated.

  • ]
  • next_cursor string

    Cursor for pagination. Use this value in the cursor parameter of the next request.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-book

GET 

/public/get-book

Fetches the public order book for a particular instrument and depth.

Request​

Query Parameters

    instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    depth stringrequired

    Number of bids and asks to return (up to 50)

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Order book. data is array of one object; bids/asks are [Price, Quantity, NumOrders].
    depth int32

    Number of bids and asks to return (up to 50)

    instrument_name string

    e.g. BTCUSD-PERP

    data object[]
  • Array [
  • bids array[]
    asks array[]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-candlestick

GET 

/public/get-candlestick

Retrieves candlesticks (k-line data history) over a given period for an instrument (e.g. BTCUSD-PERP).

Request​

Query Parameters

    instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    timeframe CandlestickTimeframe

    Possible values: [1m, 5m, 15m, 30m, 1h, 2h, 4h, 12h, 1D, 7D, 14D, 1M]

    The period value. Default 1m.

    count int32

    Default value: 25

    Number of candles to return. Default 25.

    start_ts int64

    Start time (Unix timestamp). Default 1 day ago.

    end_ts int64

    End time (Unix timestamp). Default current time.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Candlestick data. data[] has o,h,l,c,v,t (Open,High,Low,Close,Volume,Start time ms).
    interval string

    The period (e.g. M5).

    instrument_name string

    e.g. BTCUSD-PERP

    data object[]
  • Array [
  • o decimal

    Open

    h decimal

    High

    l decimal

    Low

    c decimal

    Close

    v decimal

    Volume

    t int64

    Start time of candlestick (Unix timestamp, ms), e.g. "1771761038000".

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-trades

GET 

/public/get-trades

Fetches the public trades for a particular instrument. Time window can only be up to 7 days for maximum.

Request​

Query Parameters

    instrument_name stringrequired

    e.g. BTCUSD-PERP

    count int32

    Default value: 25

    The maximum number of trades to be retrieved. Default: 25. Max: 150

    start_ts int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination

    end_ts int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Trades (data array, instrument_name). Items are PublicTradeItem (core + tn).
    data object[]
  • Array [
  • d string

    Trade ID

    t int64

    Trade timestamp in milliseconds, e.g. "1771761038000".

    p decimal

    Trade price

    q decimal

    Trade quantity

    s OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    i string

    Instrument name e.g. BTCUSD-PERP

    m int64

    Trade match ID

    tn int64

    Trade timestamp in nanoseconds (REST only)

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-tickers

GET 

/public/get-tickers

Fetches the public tickers for all or a particular instrument.

Request​

Query Parameters

    instrument_name string

    e.g. BTCUSD-PERP

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    data object[]
  • Array [
  • h decimal

    Price of the 24h highest trade

    l decimal

    Price of the 24h lowest trade, null if there weren't any trades

    a decimal

    The price of the latest trade, null if there weren't any trades

    c decimal

    24-hour price change, null if there weren't any trades

    b decimal

    The current best bid price, null if there aren't any bids

    k decimal

    The current best ask price, null if there aren't any asks

    i string

    Instrument name

    v decimal

    The total 24h traded volume

    vv decimal

    The total 24h traded volume value (in USD)

    oi decimal

    The open interest

    t int64

    The published timestamp in ms, e.g. "1771761038000".

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-valuations

GET 

/public/get-valuations

Fetches valuation type data for an instrument.

Request​

Query Parameters

    instrument_name stringrequired

    e.g. BTCUSD-INDEX

    valuation_type stringrequired

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

    Default value: 25

    Default is 25

    start_ts int64

    Default timestamp is 30 days ago for funding_hist, and 1 day ago for other valuation_type (Unix timestamp).

    end_ts int64

    Default timestamp is current time (Unix timestamp).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. instrument_name, data array (v, t per item).
    instrument_name string

    e.g. BTCUSD-INDEX

    data object[]
    Array of value and timestamp (v, t).
  • Array [
  • v decimal

    Value

    t int64

    Timestamp (ms), e.g. "1771761038000".

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-expired-settlement-price

GET 

/public/get-expired-settlement-price

Fetches settlement prices of expired instruments.

Request​

Query Parameters

    instrument_type stringrequired

    FUTURE

    page int32

    Default value: 1

    Page number. Default 1.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data[] has i (instrument), x (expiry ms), v (value), t (timestamp).
    data object[]
  • Array [
  • i string

    Instrument name

    x int64

    Expiry timestamp (ms).

    v decimal

    Value

    t int64

    Timestamp (ms).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

public/get-deposit-instruments

GET 

/public/get-deposit-instruments

Returns the list of instruments eligible for deposit and use as collateral.
Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object[]
    List of instruments eligible for deposit and collateral.
  • Array [
  • symbol string

    Instrument symbol

    inst_type string

    Instrument type (e.g. CCY)

    display_name string

    Display name

    base_ccy string

    Base currency

    quote_ccy string

    Quote currency

    quote_decimals integer

    Decimal places for quote currency

    quantity_decimals integer

    Decimal places for quantity

    haircut string

    Haircut rate (decimal string)

    collateral_eligible boolean

    Whether eligible as collateral

    price_tick_size string

    Minimum price increment

    qty_tick_size string

    Minimum quantity increment

    max_leverage string

    Maximum leverage

    tradable boolean

    Whether the instrument is tradable

    expiry_timestamp_ms int64

    Expiry timestamp (epoch ms). 0 if no expiry.

    beta_product boolean

    Whether this is a beta product

    conversion_fee string

    Conversion fee rate

    margin_buy_enabled boolean

    Whether margin buy is enabled

    margin_sell_enabled boolean

    Whether margin sell is enabled

    inst_id int64

    Internal instrument ID

  • ]

public/get-insurance

GET 

/public/get-insurance

Fetches the balance of the Insurance Fund for a particular currency.

Request​

Query Parameters

    instrument_name stringrequired

    e.g. USD

    count int32

    Default value: 25

    Default is 25

    start_ts int64

    Default timestamp is 1 day ago (Unix timestamp).

    end_ts int64

    Default timestamp is current time (Unix timestamp).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. instrument_name (e.g. USD), data[] has v (value), t (timestamp).
    instrument_name string

    e.g. USD

    data object[]
  • Array [
  • v decimal

    Value

    t int64

    Timestamp (ms), e.g. "1771761038000".

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

Account Balance and Positions

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.

private/user-balance

POST 

/private/user-balance

Returns the user's wallet balance.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/user-balance"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    No parameters; use empty object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] per instrument (e.g. USD); each has position_balances[].
    data object[]
  • Array [
  • instrument_name string

    Instrument name of the balance e.g. USD

    total_available_balance decimal

    Balance that user can open new order (Margin Balance - Initial Margin)

    total_margin_balance decimal

    Positive cash balance on eligible collateral tokens + Negative balance on all tokens + Unrealised PnL - Fee reserves

    total_initial_margin decimal

    Total margin requirement to support positions and all open orders IM and haircut from risk asset holdings. Total sum of total_position_im + total_haircut.

    total_maintenance_margin decimal

    Total maintenance margin requirement for all positions

    total_position_cost decimal

    Position value in USD

    total_cash_balance decimal

    Wallet Balance (Deposits - Withdrawals + Realized PnL - Fees)

    total_collateral_value decimal

    Collateral Value

    total_session_unrealized_pnl decimal

    Current unrealized profit and loss from all open positions (calculated with Mark Price and Avg Price)

    total_session_realized_pnl decimal

    Current realized profit and loss from all open positions

    is_liquidating boolean

    Describes whether the account is under liquidation

    total_effective_leverage decimal

    The actual leverage used (all open positions combined), i.e. position size / margin balance.

    position_limit decimal

    Maximum position size allowed (for all open positions combined)

    used_position_limit decimal

    Combined position size of all open positions + order exposure on all instruments

    total_isolated_cash_balance decimal

    Sum of cash balance of the isolated positions

    total_position_im decimal

    Initial margin requirement to support open positions and orders

    total_haircut decimal

    Total haircut on eligible collateral token assets

    total_risk_exposure decimal

    Total risk exposure. Optional.

    total_borrow decimal

    Total borrow. Optional.

    margin_score decimal

    Margin score. Optional.

    has_risk boolean

    Whether the account has risk. Optional.

    terminatable boolean

    Whether the account is terminatable. Optional.

    credit_limits array

    Credit limits; may be empty. Item shape TBD when non-empty. Optional.

    position_balances object[]
    Collateral balances as shown below.
  • Array [
  • instrument_name string

    Instrument name of the collateral e.g. USD

    quantity decimal

    Quantity of the collateral

    market_value decimal

    Market value of the collateral

    collateral_eligible boolean

    true or false

    haircut decimal

    Show haircut for eligible collateral token

    collateral_amount decimal

    Collateral amount after haircut is applied

    max_withdrawal_balance decimal

    Max withdrawal balance of the collateral

    reserved_qty decimal

    Fund/balance in use, not available for new orders or additional trading activities.

    hourly_interest_rate decimal

    Hourly interest rate for the collateral; e.g. "0". Optional.

  • ]
  • isolated_positions object[]
    Balance of isolated positions (IsolatedPositionItem; own schema, no recursion). Optional; present in user-balance and get-subaccount-balances.
  • Array [
  • instrument_name string

    Instrument name of the balance e.g. USD

    total_available_balance decimal

    Balance that user can open new order (Margin Balance - Initial Margin)

    total_margin_balance decimal

    Positive cash balance on eligible collateral tokens + Negative balance on all tokens + Unrealised PnL - Fee reserves

    total_initial_margin decimal

    Total margin requirement to support positions and all open orders IM and haircut from risk asset holdings. Total sum of total_position_im + total_haircut.

    total_maintenance_margin decimal

    Total maintenance margin requirement for all positions

    total_position_cost decimal

    Position value in USD

    total_cash_balance decimal

    Wallet Balance (Deposits - Withdrawals + Realized PnL - Fees)

    total_collateral_value decimal

    Collateral Value

    total_session_unrealized_pnl decimal

    Current unrealized profit and loss from all open positions (calculated with Mark Price and Avg Price)

    total_session_realized_pnl decimal

    Current realized profit and loss from all open positions

    is_liquidating boolean

    Describes whether the account is under liquidation

    total_effective_leverage decimal

    The actual leverage used (all open positions combined), i.e. position size / margin balance.

    position_limit decimal

    Maximum position size allowed (for all open positions combined)

    used_position_limit decimal

    Combined position size of all open positions + order exposure on all instruments

    total_isolated_cash_balance decimal

    Sum of cash balance of the isolated positions

    total_position_im decimal

    Initial margin requirement to support open positions and orders

    total_haircut decimal

    Total haircut on eligible collateral token assets

    total_risk_exposure decimal

    Total risk exposure. Optional.

    total_borrow decimal

    Total borrow. Optional.

    margin_score decimal

    Margin score. Optional.

    has_risk boolean

    Whether the account has risk. Optional.

    terminatable boolean

    Whether the account is terminatable. Optional.

    credit_limits array

    Credit limits; may be empty. Item shape TBD when non-empty. Optional.

    position_balances object[]
    Collateral balances as shown below.
  • Array [
  • instrument_name string

    Instrument name of the collateral e.g. USD

    quantity decimal

    Quantity of the collateral

    market_value decimal

    Market value of the collateral

    collateral_eligible boolean

    true or false

    haircut decimal

    Show haircut for eligible collateral token

    collateral_amount decimal

    Collateral amount after haircut is applied

    max_withdrawal_balance decimal

    Max withdrawal balance of the collateral

    reserved_qty decimal

    Fund/balance in use, not available for new orders or additional trading activities.

    hourly_interest_rate decimal

    Hourly interest rate for the collateral; e.g. "0". Optional.

  • ]
  • isolation_id string

    Isolation ID of isolated position.

    leverage decimal

    The maximum leverage of the isolated position.

    isolation_type IsolationType (string)

    Possible values: [ISOLATED_MARGIN]

    Isolation type

  • ]
  • account string

    Optional; sub-account ID in get-subaccount-balances.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "11",
  "method": "private/user-balance",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1611022832613"
}
HTTP
POST /private/user-balance HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "11",
  "method": "private/user-balance",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1611022832613"
}

private/user-balance-history

POST 

/private/user-balance-history

Returns the user's balance history. This call may temporarily have discrepancies with that shown on the GUI.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/user-balance-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    timeframe Timeframe (string)

    Possible values: [H1, D1]

    H1 = hourly, D1 = daily

    end_time int64

    Can be millisecond or nanosecond. Exclusive, e.g. "1771761038000" or "1771761038000000000". If not provided, will be current time.

    limit int32

    If timeframe is D1, max limit will be 30 (days). If timeframe is H1, max limit will be 120 (hours).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. instrument_name, data[] with t (timestamp), c (total cash balance); optional i.
    instrument_name string

    Instrument name of the balance e.g. USD

    data object[]
  • Array [
  • t int64

    Timestamp (ms).

    c decimal

    Total cash balance.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "11",
  "method": "private/user-balance-history",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1611022832613"
}
HTTP
POST /private/user-balance-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "11",
  "method": "private/user-balance-history",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1611022832613"
}

private/get-accounts

POST 

/private/get-accounts

Get Account and its Sub Accounts.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-accounts"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    page_size int32

    Default value: 20

    Number of items per page. Default 20.

    page int32

    Default value: 0

    Page number (0-based). Default 0.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. this_account, master_account and sub_account_list per docs.
    this_account object
    Information about the current API key's account.
    uuid string

    UUID of the API key

    hierarchy AccountHierarchy (string)

    Possible values: [MASTER, SUB_ACCOUNT]

    Account type of the API key: MASTER or SUB_ACCOUNT.

    master_account objectrequired
    Account object shared by master_account and sub_account_list in private/get-accounts result.
    uuid string

    UUID of the API key

    hierarchy AccountHierarchy (string)

    Possible values: [MASTER, SUB_ACCOUNT]

    Account type of the API key: MASTER or SUB_ACCOUNT.

    master_account_uuid string

    Master account uuid

    margin_account_uuid string

    Margin account uuid (optional)

    label string

    Sub account label (typically present for sub-accounts)

    enabled boolean

    true or false

    tradable boolean

    true or false

    name string

    Name of sub account

    email string

    Email of sub account

    mobile_number string

    Mobile number of sub account

    country_code string

    Country Code of sub account

    address string

    Address of sub account

    margin_access AccessLevel (string)

    Possible values: [DEFAULT, DISABLED]

    DEFAULT or DISABLED

    derivatives_access AccessLevel (string)

    Possible values: [DEFAULT, DISABLED]

    DEFAULT or DISABLED

    create_time int64

    Creation timestamp (milliseconds since the Unix epoch).

    update_time int64

    Last update timestamp (milliseconds since the Unix epoch).

    two_fa_enabled boolean

    true or false

    kyc_level string

    Kyc Level

    suspended boolean

    true or false

    terminated boolean

    true or false

    sub_account_list object[]required
  • Array [
  • uuid string

    UUID of the API key

    hierarchy AccountHierarchy (string)

    Possible values: [MASTER, SUB_ACCOUNT]

    Account type of the API key: MASTER or SUB_ACCOUNT.

    master_account_uuid string

    Master account uuid

    margin_account_uuid string

    Margin account uuid (optional)

    label string

    Sub account label (typically present for sub-accounts)

    enabled boolean

    true or false

    tradable boolean

    true or false

    name string

    Name of sub account

    email string

    Email of sub account

    mobile_number string

    Mobile number of sub account

    country_code string

    Country Code of sub account

    address string

    Address of sub account

    margin_access AccessLevel (string)

    Possible values: [DEFAULT, DISABLED]

    DEFAULT or DISABLED

    derivatives_access AccessLevel (string)

    Possible values: [DEFAULT, DISABLED]

    DEFAULT or DISABLED

    create_time int64

    Creation timestamp (milliseconds since the Unix epoch).

    update_time int64

    Last update timestamp (milliseconds since the Unix epoch).

    two_fa_enabled boolean

    true or false

    kyc_level string

    Kyc Level

    suspended boolean

    true or false

    terminated boolean

    true or false

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/get-accounts",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "page_size": "30",
    "page": "2"
  },
  "nonce": "1587846358253"
}
HTTP
POST /private/get-accounts HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/get-accounts",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "page_size": "30",
    "page": "2"
  },
  "nonce": "1587846358253"
}

private/create-subaccount-transfer

POST 

/private/create-subaccount-transfer

Transfer between subaccounts (and master account).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/create-subaccount-transfer"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    from stringrequired

    Account UUID to be debited.

    to stringrequired

    Account UUID to be credited.

    currency stringrequired

    Currency symbol.

    amount decimalrequired

    Amount to transfer; must be a positive number.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    No result block per docs when code === 0 (success).
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
}
HTTP
POST /private/create-subaccount-transfer HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-subaccount-balances

POST 

/private/get-subaccount-balances

Returns the user's wallet balances of all sub-accounts.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-subaccount-balances"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    No parameters; use empty object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    data object[]
    List of sub-account balances.
  • Array [
  • instrument_name string

    Instrument name of the balance e.g. USD

    total_available_balance decimal

    Balance that user can open new order (Margin Balance - Initial Margin)

    total_margin_balance decimal

    Positive cash balance on eligible collateral tokens + Negative balance on all tokens + Unrealised PnL - Fee reserves

    total_initial_margin decimal

    Total margin requirement to support positions and all open orders IM and haircut from risk asset holdings. Total sum of total_position_im + total_haircut.

    total_maintenance_margin decimal

    Total maintenance margin requirement for all positions

    total_position_cost decimal

    Position value in USD

    total_cash_balance decimal

    Wallet Balance (Deposits - Withdrawals + Realized PnL - Fees)

    total_collateral_value decimal

    Collateral Value

    total_session_unrealized_pnl decimal

    Current unrealized profit and loss from all open positions (calculated with Mark Price and Avg Price)

    total_session_realized_pnl decimal

    Current realized profit and loss from all open positions

    is_liquidating boolean

    Describes whether the account is under liquidation

    total_effective_leverage decimal

    The actual leverage used (all open positions combined), i.e. position size / margin balance.

    position_limit decimal

    Maximum position size allowed (for all open positions combined)

    used_position_limit decimal

    Combined position size of all open positions + order exposure on all instruments

    total_isolated_cash_balance decimal

    Sum of cash balance of the isolated positions

    total_position_im decimal

    Initial margin requirement to support open positions and orders

    total_haircut decimal

    Total haircut on eligible collateral token assets

    total_risk_exposure decimal

    Total risk exposure. Optional.

    total_borrow decimal

    Total borrow. Optional.

    margin_score decimal

    Margin score. Optional.

    has_risk boolean

    Whether the account has risk. Optional.

    terminatable boolean

    Whether the account is terminatable. Optional.

    credit_limits array

    Credit limits; may be empty. Item shape TBD when non-empty. Optional.

    position_balances object[]
    Collateral balances as shown below.
  • Array [
  • instrument_name string

    Instrument name of the collateral e.g. USD

    quantity decimal

    Quantity of the collateral

    market_value decimal

    Market value of the collateral

    collateral_eligible boolean

    true or false

    haircut decimal

    Show haircut for eligible collateral token

    collateral_amount decimal

    Collateral amount after haircut is applied

    max_withdrawal_balance decimal

    Max withdrawal balance of the collateral

    reserved_qty decimal

    Fund/balance in use, not available for new orders or additional trading activities.

    hourly_interest_rate decimal

    Hourly interest rate for the collateral; e.g. "0". Optional.

  • ]
  • isolated_positions object[]
    Balance of isolated positions (IsolatedPositionItem; own schema, no recursion). Optional; present in user-balance and get-subaccount-balances.
  • Array [
  • instrument_name string

    Instrument name of the balance e.g. USD

    total_available_balance decimal

    Balance that user can open new order (Margin Balance - Initial Margin)

    total_margin_balance decimal

    Positive cash balance on eligible collateral tokens + Negative balance on all tokens + Unrealised PnL - Fee reserves

    total_initial_margin decimal

    Total margin requirement to support positions and all open orders IM and haircut from risk asset holdings. Total sum of total_position_im + total_haircut.

    total_maintenance_margin decimal

    Total maintenance margin requirement for all positions

    total_position_cost decimal

    Position value in USD

    total_cash_balance decimal

    Wallet Balance (Deposits - Withdrawals + Realized PnL - Fees)

    total_collateral_value decimal

    Collateral Value

    total_session_unrealized_pnl decimal

    Current unrealized profit and loss from all open positions (calculated with Mark Price and Avg Price)

    total_session_realized_pnl decimal

    Current realized profit and loss from all open positions

    is_liquidating boolean

    Describes whether the account is under liquidation

    total_effective_leverage decimal

    The actual leverage used (all open positions combined), i.e. position size / margin balance.

    position_limit decimal

    Maximum position size allowed (for all open positions combined)

    used_position_limit decimal

    Combined position size of all open positions + order exposure on all instruments

    total_isolated_cash_balance decimal

    Sum of cash balance of the isolated positions

    total_position_im decimal

    Initial margin requirement to support open positions and orders

    total_haircut decimal

    Total haircut on eligible collateral token assets

    total_risk_exposure decimal

    Total risk exposure. Optional.

    total_borrow decimal

    Total borrow. Optional.

    margin_score decimal

    Margin score. Optional.

    has_risk boolean

    Whether the account has risk. Optional.

    terminatable boolean

    Whether the account is terminatable. Optional.

    credit_limits array

    Credit limits; may be empty. Item shape TBD when non-empty. Optional.

    position_balances object[]
    Collateral balances as shown below.
  • Array [
  • instrument_name string

    Instrument name of the collateral e.g. USD

    quantity decimal

    Quantity of the collateral

    market_value decimal

    Market value of the collateral

    collateral_eligible boolean

    true or false

    haircut decimal

    Show haircut for eligible collateral token

    collateral_amount decimal

    Collateral amount after haircut is applied

    max_withdrawal_balance decimal

    Max withdrawal balance of the collateral

    reserved_qty decimal

    Fund/balance in use, not available for new orders or additional trading activities.

    hourly_interest_rate decimal

    Hourly interest rate for the collateral; e.g. "0". Optional.

  • ]
  • isolation_id string

    Isolation ID of isolated position.

    leverage decimal

    The maximum leverage of the isolated position.

    isolation_type IsolationType (string)

    Possible values: [ISOLATED_MARGIN]

    Isolation type

  • ]
  • account string

    Optional; sub-account ID in get-subaccount-balances.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-subaccount-balances",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1"
}
HTTP
POST /private/get-subaccount-balances HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-subaccount-balances",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1"
}

private/get-positions

POST 

/private/get-positions

Returns the user's position.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-positions"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    E.g. BTCUSD-PERP. Omit for 'all'.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] per docs (account_id, quantity, cost, open_position_pnl, etc.).
    data object[]
    List of positions.
  • Array [
  • account_id string

    Account ID.

    instrument_name string

    E.g. BTCUSD-PERP.

    type string

    E.g. PERPETUAL_SWAP.

    quantity decimal

    Position quantity.

    cost string

    Position cost or value in USD.

    open_position_pnl string

    Profit and loss for the open position.

    open_pos_cost string

    Open position cost.

    session_pnl string

    Profit and loss in the current trading session.

    update_timestamp_ms int64

    Updated time (Unix timestamp).

    isolation_id string

    Isolation ID of the isolated position.

    isolation_type IsolationType (string)

    Possible values: [ISOLATED_MARGIN]

    Isolation type

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-positions",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1611022832613"
}
HTTP
POST /private/get-positions HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-positions",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1611022832613"
}

private/get-fee-credit-balances

POST 

/private/get-fee-credit-balances

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-fee-credit-balances"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    page integer

    Page number (0-based).

    page_size integer

    Possible values: >= 1 and <= 200

    Number of entries per page. Default: 200, Max: 200.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    fee_credits object[]required
    List of fee credit entries grouped by expiry date, sorted in ascending order.
  • Array [
  • expiry_date int64required

    Expiry date in epoch milliseconds (end of day 23:59 UTC)

    type string

    Comma-separated campaign names. Master accounts only.

    distributed_amount decimal

    Total distributed amount (8 decimal places). Master accounts only.

    available_balance decimalrequired

    Estimated available balance (8 decimal places)

    details object[]
    Per-campaign breakdown. Master accounts only.
  • Array [
  • type stringrequired

    Campaign name

    distribution_date int64required

    Distribution date in epoch milliseconds (end of day 23:59 UTC)

    distributed_amount decimalrequired

    Amount distributed for this campaign (8 decimal places)

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-fee-credit-balances",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "page": 0,
    "page_size": 200
  },
  "nonce": "1721989202781"
}
HTTP
POST /private/get-fee-credit-balances HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-fee-credit-balances",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "page": 0,
    "page_size": 200
  },
  "nonce": "1721989202781"
}

Trading

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 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 to cancel a single order by order_id or client_oid, or private/cancel-all-orders to cancel all orders for a given instrument.

Order Types​

TypeDescription
LIMITLimit order with specified price. Rests on the order book until filled or canceled.
MARKETMarket 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.

Time in Force​

ValueDescription
GOOD_TILL_CANCELOrder remains active until filled or explicitly canceled. Default for limit orders.
IMMEDIATE_OR_CANCELOrder fills immediately (partial or full), unfilled portion is canceled.
FILL_OR_KILLOrder 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.

InstructionDescription
POST_ONLYOrder is rejected if it would take liquidity. Ensures maker fee.
SMART_POST_ONLYIf the order would take liquidity, it is repriced to the best maker level instead of being rejected.
REDUCE_ONLYOrder can only reduce an existing position, not increase or open a new position.

Order Statuses​

StatusDescription
PENDINGOrder submitted, awaiting processing by the matching engine.
NEWOrder accepted by the matching engine, not yet on the order book.
ACTIVEOrder is live on the order book, waiting to be filled.
FILLEDOrder has been completely filled.
CANCELEDOrder was canceled (by user request, or by system).
EXPIREDOrder expired due to time-in-force constraints.
REJECTEDOrder was rejected (e.g., invalid parameters, risk checks failed).

Querying Orders and Trades​

Real-Time Order and Trade Updates​

Subscribe to the following WebSocket channels for real-time updates:

ChannelDescription
user.orderOrder lifecycle events across all instruments
user.order.{instrument_name}Order updates for a specific instrument
user.tradeTrade 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.

private/create-order

POST 

/private/create-order

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/create-order"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    Base order parameters shared by all create-order variants.
    instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type stringrequired

    Possible values: [LIMIT, MARKET]

    Order type: LIMIT or MARKET

    price decimal

    Limit price (required for LIMIT orders)

    notional decimal

    Amount to spend; for MARKET BUY only (alternative to quantity)

    spot_margin SpotMargin (string)

    Possible values: [SPOT, MARGIN]

    SPOT or MARGIN (spot/margin mode).

    isolated_margin_amount decimal

    Isolated margin amount

    isolation_id string

    Isolation ID for isolated margin

    leverage decimal

    Leverage for margin/derivatives

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. order_id, client_oid.
    order_id int64

    Newly created order ID

    client_oid string

    Client Order ID from the request, or the request nonce if not provided. Recommend specifying client_oid as nonce can be the same across orders.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/create-order HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/amend-order

POST 

/private/amend-order

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/amend-order"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_id int64

    Optional Order ID. Either order_id or orig_client_oid must be present.

    client_oid string

    Client Order ID (maximum 36 characters).

    orig_client_oid string

    Optional Original Client Order ID. Either order_id or orig_client_oid must be present. If both exist, order_id has higher priority.

    new_price decimalrequired

    The new amended price. If no change required, input original value.

    new_quantity decimalrequired

    The new amended quantity. If no change required, input original value.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. client_oid, order_id.
    client_oid string

    Client order ID

    order_id int64

    Order ID

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/amend-order HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/cancel-order

POST 

/private/cancel-order

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/cancel-order"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_id int64

    Optional Order ID. Either order_id or client_oid must be present. string format is highly recommended.

    client_oid string

    Optional Client Order ID. Either order_id or client_oid must be present.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. order_id, client_oid.
    order_id int64

    Order ID

    client_oid string

    Client Order ID

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/cancel-order",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "order_id": "18342311"
  }
}
HTTP
POST /private/cancel-order HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/cancel-order",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "order_id": "18342311"
  }
}

private/cancel-all-orders

POST 

/private/cancel-all-orders

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/cancel-all-orders"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    e.g. BTCUSD-PERP. If not provided, the orders of ALL instruments will be canceled.

    type CancelOrderType (string)

    Possible values: [LIMIT, TRIGGER, ALL]

    Allowed values depend on operation:

    • ➖ private/cancel-all-orders: LIMIT, ALL
    • ➖ private/advanced/cancel-all-orders: LIMIT, TRIGGER, ALL. For LIMIT, only the legs from advanced orders will be in-scope.
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs (code 0 = queued).
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/cancel-all-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1611169184000",
  "params": {
    "instrument_name": "BTCUSD-PERP"
  }
}
HTTP
POST /private/cancel-all-orders HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/cancel-all-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1611169184000",
  "params": {
    "instrument_name": "BTCUSD-PERP"
  }
}

private/close-position

POST 

/private/close-position

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/close-position"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name stringrequired

    e.g. BTCUSD-PERP.

    type ClosePositionType (string)required

    Possible values: [LIMIT, MARKET]

    LIMIT or MARKET

    price decimal

    For LIMIT orders only. Must use decimal precision matching the instrument's price_tick_size.

    quantity decimal

    Positive number only. Only provide if intending to do partial closing.

    isolation_id string

    Needed when closing an existing isolated position. If omitted, the non-isolated position will be closed.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. order_id, client_oid.
    order_id int64

    Order ID

    client_oid string

    Client Order ID

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/close-position HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-open-orders

POST 

/private/get-open-orders

Gets all open orders for a particular instrument.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-open-orders"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    E.g. BTCUSD-PERP. Omit for 'all'.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] per docs.
    data object[]
    List of open orders.
  • Array [
  • account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-open-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "instrument_name": "BTCUSD-PERP"
  },
  "nonce": "1613575617173"
}
HTTP
POST /private/get-open-orders HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-open-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "instrument_name": "BTCUSD-PERP"
  },
  "nonce": "1613575617173"
}

private/get-order-detail

POST 

/private/get-order-detail

Gets detail of a single order by order_id or client_oid.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-order-detail"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_id int64

    Order ID. string format is highly recommended, especially for JavaScript client. If not provided, client_oid must be specified.

    client_oid string

    Client Order ID. If not provided, order_id must be specified.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Order object shared by get-order-detail, get-open-orders, get-order-history and advanced variants. reason optional (detail/history). list_id, contingency_type, leg_id, ref_price, ref_price_type optional (advanced OTO/OTOCO only).
    account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-order-detail",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "order_id": "19848525"
  },
  "nonce": "1587846358253"
}
HTTP
POST /private/get-order-detail HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-order-detail",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "order_id": "19848525"
  },
  "nonce": "1587846358253"
}

private/create-order-list (LIST)

POST 

/private/create-order-list

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/create-order-list"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    contingency_type ContingencyTypeList (string)required

    Possible values: [LIST]

    Must be LIST for order-list APIs

    order_list object[]required
    Possible values: >= 1, <= 10
    LIST: 1-10 orders. See private/create-order for order fields.
  • Array [
  • instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type stringrequired

    Possible values: [LIMIT, MARKET]

    Order type: LIMIT or MARKET

    price decimal

    Limit price (required for LIMIT orders)

    notional decimal

    Amount to spend; for MARKET BUY only (alternative to quantity)

    spot_margin SpotMargin (string)

    Possible values: [SPOT, MARGIN]

    SPOT or MARGIN (spot/margin mode).

    isolated_margin_amount decimal

    Isolated margin amount

    isolation_id string

    Isolation ID for isolated margin

    leverage decimal

    Leverage for margin/derivatives

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object[]
    Present when code === 0. Array of { code, index, client_oid, order_id, message } per docs.
  • Array [
  • code int32

    0 if success.

    index int32

    The index of corresponding order request (start from 0).

    client_oid string

    (Optional) Client order ID if provided in the request (maximum 36 characters).

    order_id int64

    Newly created order ID.

    message string

    (Optional) For server or error messages.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/create-order-list HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/cancel-order-list (LIST)

POST 

/private/cancel-order-list

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/cancel-order-list"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    contingency_type ContingencyTypeList (string)required

    Possible values: [LIST]

    Must be LIST for order-list APIs

    order_list object[]required
    List of orders to be cancelled. Each item: instrument_name (optional), order_id, client_oid (optional).
  • Array [
  • instrument_name string

    Instrument name, e.g. ETH_CRO, BTC_USDT.

    order_id int64

    Order ID.

    client_oid string

    Optional Client order ID (maximum 36 characters).

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object[]
    Present when code === 0. Array of { code, index, message } per docs.
  • Array [
  • code int32

    0 if success.

    index int32

    The index of corresponding order request (start from 0).

    message string

    (Optional) For server or error messages.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/cancel-order-list HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/change-account-leverage

POST 

/private/change-account-leverage

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/change-account-leverage"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    account_id stringrequired

    Account ID to change the leverage. Must be the currently logged-in user's account.

    leverage int32required

    Maximum leverage for the account. Valid values 1-100 (inclusive).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs.
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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
  }
}
HTTP
POST /private/change-account-leverage HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/change-account-settings

POST 

/private/change-account-settings

Change account level settings regarding STP and other properties.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/change-account-settings"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_id string

    Optional. 0 to 32767. If stp_scope and stp_inst not specified, REJECT. If stp_scope specified, default 0.

    leverage int32

    Maximum leverage for the account. When account effective leverage exceeds this, further risk-increasing orders are rejected.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs.
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/change-account-settings HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-account-settings

POST 

/private/get-account-settings

Get account settings.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-account-settings"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    No parameters; use empty object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 for successful changes.

    result object[]
    Present when code === 0. result[] has leverage, stp_id, stp_scope, stp_inst per docs.
  • Array [
  • leverage decimal

    The max leverage user set on the account. When account effective leverage exceeds this, further risk increasing orders will be rejected.

    stp_id int64

    Optional. 0 to 32767. If stp_scope and stp_inst not specified, REJECT. If stp_scope specified, default 0. Orderbook-specific settings take higher precedence.

    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "697",
  "method": "private/get-account-settings",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1721989202781",
  "params": {}
}
HTTP
POST /private/get-account-settings HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "697",
  "method": "private/get-account-settings",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1721989202781",
  "params": {}
}

private/create-isolated-margin-transfer

POST 

/private/create-isolated-margin-transfer

Transfer balance between account and isolated position.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/create-isolated-margin-transfer"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    isolation_id stringrequired

    Isolation ID of the isolated position to transfer margin to or from.

    direction IsolatedMarginTransferDirection (string)required

    Possible values: [CREDIT, DEBIT]

    CREDIT for credit to the isolated position; DEBIT for debit from the isolated position.

    amount decimalrequired

    Amount of USD to transfer; must be a positive number.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs.
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/create-isolated-margin-transfer HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/change-isolated-margin-leverage

POST 

/private/change-isolated-margin-leverage

Changes the maximum leverage of an isolated position.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/change-isolated-margin-leverage"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    isolation_id stringrequired

    Isolation ID of the isolated position to apply the leverage change to.

    leverage decimalrequired

    The maximum leverage to be used for the isolated position.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs.
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "11",
  "method": "private/change-isolated-margin-leverage",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1611022832613",
  "params": {
    "isolation_id": "19848526",
    "leverage": "10"
  }
}
HTTP
POST /private/change-isolated-margin-leverage HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "11",
  "method": "private/change-isolated-margin-leverage",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1611022832613",
  "params": {
    "isolation_id": "19848526",
    "leverage": "10"
  }
}

private/get-fee-rate

POST 

/private/get-fee-rate

Get fee rates for user’s account.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-fee-rate"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    No parameters; use empty object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    spot_tier int32

    30-day spot trading volume tier.

    deriv_tier int32

    30-day deriv trading volume tier.

    effective_spot_maker_rate_bps decimal

    30-day spot maker rate in bps.

    effective_spot_taker_rate_bps decimal

    30-day spot taker rate in bps.

    effective_deriv_maker_rate_bps decimal

    30-day deriv maker rate in bps.

    effective_deriv_taker_rate_bps decimal

    30-day deriv taker rate in bps.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-fee-rate",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1721989202781"
}
HTTP
POST /private/get-fee-rate HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-fee-rate",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {},
  "nonce": "1721989202781"
}

private/get-instrument-fee-rate

POST 

/private/get-instrument-fee-rate

Get the instrument fee rate.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-instrument-fee-rate"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name stringrequired

    E.g. BTC_USD, BTCUSD-PERP.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. instrument_name, effective_maker_rate_bps, effective_taker_rate_bps.
    instrument_name string

    E.g. BTC_USD.

    effective_maker_rate_bps decimal

    Maker rate in bps.

    effective_taker_rate_bps decimal

    Taker rate in bps.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/get-instrument-fee-rate",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "instrument_name": "BTC_USD"
  }
}
HTTP
POST /private/get-instrument-fee-rate HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/get-instrument-fee-rate",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "instrument_name": "BTC_USD"
  }
}

private/get-order-history

POST 

/private/get-order-history

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-order-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string
    start_time int64

    Start time (ms or ns).

    end_time int64

    End time (ms or ns).

    limit int32

    Default value: 100

    Maximum number of orders to retrieve. Default: 100.

    isolation_id string
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] (status REJECTED/CANCELED/FILLED/EXPIRED).
    data object[]
  • Array [
  • account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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
  }
}
HTTP
POST /private/get-order-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-trades

POST 

/private/get-trades

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-trades"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    E.g. BTCUSD-PERP. Omit for 'all'.

    start_time int64

    Start time in Unix time format (inclusive), ms or ns. Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive), ms or ns. Default: current system timestamp. Nanosecond recommended for accurate pagination.

    limit int32

    Maximum number of trades to retrieve before end_time. Default: 100. Max: 100.

    isolation_id string

    Optional filter for trades of a particular isolated position. Omit for 'all'.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] per docs (account_id, traded_quantity, traded_price, fees, order_id, trade_id, etc.).
    data object[]
    List of trades.
  • Array [
  • account_id string

    Account ID.

    event_date string

    Event date.

    journal_type string

    Journal type would be TRADING.

    traded_quantity decimal

    Trade quantity.

    traded_price decimal

    Trade price.

    fees decimal

    Net trade fees (after fee credits applied, if any). The negative sign means a deduction on balance.

    fee_credits decimal

    Fee credits used to offset the trade fees. The negative sign means fee credits were consumed.

    order_id int64

    Order ID.

    trade_id int64

    Trade ID.

    trade_match_id int64

    Trade match ID.

    client_oid string

    Client Order ID.

    taker_side TakerSide (string)

    Possible values: [MAKER, TAKER]

    Maker or taker side of the trade

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    E.g. USD.

    create_time int64

    Create timestamp in milliseconds.

    create_time_ns int64

    Create timestamp in nanoseconds.

    match_count int32

    Optional. Number of orders matched; Maker's order always 1; Taker's is the number of orders matched.

    match_index int32

    Optional. Only for Maker's order; which order entry of the price level was matched; 0-based.

    isolation_id string

    Isolation ID of the order if under isolated position.

    isolation_type IsolationType (string)

    Possible values: [ISOLATED_MARGIN]

    Isolation type

    transact_time_ns int64

    Trade transaction time in nanoseconds.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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
  }
}
HTTP
POST /private/get-trades HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-transactions

POST 

/private/get-transactions

Fetches recent transactions.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-transactions"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    E.g. BTCUSD-PERP. Omit for 'all'.

    journal_type JournalType (string)

    Possible values: [TRADING, TRADE_FEE, ONCHAIN_WITHDRAWAL, ONCHAIN_DEPOSIT, FUNDING, REALIZED_PNL, INSURANCE_FUND, SOCIALIZED_LOSS, LIQUIDATION_FEE, SESSION_RESET, ADJUSTMENT, SESSION_SETTLE, UNCOVERED_LOSS, ADMIN_ADJUSTMENT, DELIST, SETTLEMENT_FEE, AUTO_CONVERSION, MANUAL_CONVERSION, SUBACCOUNT_TX, FIAT_WITHDRAWAL_CANCEL, MARGIN_TRADE_INTEREST]

    Journal / transaction type

    start_time int64

    Start time in Unix time format (inclusive), ms or ns. Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive), ms or ns. Default: current system timestamp. Nanosecond recommended for accurate pagination.

    limit int32

    Maximum number of transactions to retrieve before end_time. Default: 100. Max: 100.

    isolation_id string

    Optional filter for transactions of a particular isolated position. Omit for 'all'.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] per docs (journal_type, journal_id, transaction_qty, realized_pnl, etc.).
    data object[]
    List of transactions.
  • Array [
  • account_id string

    Account ID.

    event_date string

    Event date.

    journal_type JournalType (string)

    Possible values: [TRADING, TRADE_FEE, ONCHAIN_WITHDRAWAL, ONCHAIN_DEPOSIT, FUNDING, REALIZED_PNL, INSURANCE_FUND, SOCIALIZED_LOSS, LIQUIDATION_FEE, SESSION_RESET, ADJUSTMENT, SESSION_SETTLE, UNCOVERED_LOSS, ADMIN_ADJUSTMENT, DELIST, SETTLEMENT_FEE, AUTO_CONVERSION, MANUAL_CONVERSION, SUBACCOUNT_TX, FIAT_WITHDRAWAL_CANCEL, MARGIN_TRADE_INTEREST]

    Journal / transaction type

    journal_id int64

    Journal ID.

    transaction_qty decimal

    Transaction quantity.

    transaction_cost decimal

    Transaction cost.

    realized_pnl decimal

    Realized PNL.

    order_id int64

    Order ID.

    trade_id int64

    Trade ID.

    trade_match_id int64

    Trade match ID; applicable to trades only; non-trade transactions may have zero or null.

    event_timestamp_ms int64

    Event timestamp in milliseconds.

    event_timestamp_ns int64

    Event timestamp in nanoseconds.

    client_oid string

    Client Order ID (can be empty).

    taker_side TakerSide (string)

    Possible values: [MAKER, TAKER]

    Maker or taker side of the trade

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    instrument_name string

    E.g. BTCUSD-PERP.

    isolation_id string

    Isolation ID of the order if under isolated position.

    isolation_type IsolationType (string)

    Possible values: [ISOLATED_MARGIN]

    Isolation type

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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
  }
}
HTTP
POST /private/get-transactions HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

Advanced Order Management

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 to create trigger orders.

TypeDescription
STOP_LOSSConverts to a market order when trigger price is reached. Used to limit losses.
STOP_LIMITConverts to a limit order when trigger price is reached. Offers price control on stop execution.
TAKE_PROFITMarket order activated when price moves favorably to the trigger level. Used to lock in gains.
TAKE_PROFIT_LIMITLimit 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.

StrategyDescriptionEndpoint
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
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
OTOCO (One-Triggers-OCO)Primary order triggers an OCO pair when filled. Entry order with both TP and SL attached.private/advanced/create-otoco

Contingency Types​

Multi-leg orders use contingency types to define the relationship between legs:

TypeDescription
OCOOne-Cancels-Other: two orders, one cancels when the other fills
SPOT_ATTACHAttach trigger orders to a spot position
DERIV_ATTACHAttach trigger orders to a derivatives position (supports isolated margin)

Order Management​

Real-Time Updates​

Subscribe to user.advanced.order for real-time advanced order lifecycle events.

private/advanced/create-order

POST 

/private/advanced/create-order

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

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/create-order"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    Base order parameters shared by all create-order variants.
    instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type stringrequired

    Possible values: [STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Trigger order type

    price decimal

    Limit price (required for STOP_LIMIT and TAKE_PROFIT_LIMIT)

    ref_price decimal

    Trigger price (required for all trigger order types)

    ref_price_type RefPriceType (string)

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Reference price type for trigger orders

    attach_order_id int64

    The order ID this trigger order is attached to. Used to attach TP/SL to an existing limit order (SpotAttach / DerivAttach attach-to-order).

    attach_isolation_id string

    Position this trigger order is attached to (DerivAttach attach-to-position, derivatives only). > 0: attach to the isolated position whose isolation_id equals the value. 0: attach to the cross-margin position. Requires REDUCE_ONLY in exec_inst. Mutually exclusive with attach_order_id and isolation_id.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Contains order_id and client_oid.
    order_id int64

    Newly created order ID.

    client_oid string

    Newly created client order ID.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/advanced/create-order HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/amend-order

POST 

/private/advanced/amend-order

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

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/amend-order"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_id int64

    Order ID to amend. Either order_id or client_oid must be present. string format is highly recommended.

    client_oid string

    Client Order ID to amend. Either order_id or client_oid must be present.

    new_ref_price decimal

    New reference/trigger price. Omit to keep the existing trigger price.

    new_quantity decimalrequired

    New quantity. If no change required, input original value.

    new_price decimalrequired

    New limit price for the trigger order. Set to '0' to convert trigger limit to market, or value > 0 to convert market to limit.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Contains order_id and client_oid.
    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/advanced/amend-order HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/create-oco

POST 

/private/advanced/create-oco

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/create-oco"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_list object[]required
    Possible values: >= 2, <= 2
    Exactly 2 orders. One must be LIMIT, the other STOP_LOSS, STOP_LIMIT, TAKE_PROFIT_LIMIT or TAKE_PROFIT. For ref_price_type of the trigger order only MARK_PRICE is supported.
  • Array [
  • instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type OrderType (string)required

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    price decimal

    Limit price (required for LIMIT, STOP_LIMIT, TAKE_PROFIT_LIMIT)

    notional decimal

    Amount to spend; for MARKET/STOP_LOSS/TAKE_PROFIT BUY only

    ref_price decimal

    Trigger price for STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT

    ref_price_type RefPriceType (string)

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Reference price type for trigger orders

    spot_margin SpotMargin (string)

    Possible values: [SPOT, MARGIN]

    SPOT or MARGIN (spot/margin mode).

    isolated_margin_amount decimal

    Isolated margin amount

    isolation_id string

    Isolation ID for isolated margin

    leverage decimal

    Leverage for margin/derivatives

    attach_order_id int64

    Order ID to attach this trigger order to. Used for SpotAttach / DerivAttach.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Contains list_id.
    list_id int64

    List ID.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/advanced/create-oco HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/cancel-oco

POST 

/private/advanced/cancel-oco

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/cancel-oco"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    list_id int64required

    List ID of the OCO order to cancel

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "method": "private/advanced/cancel-oco",
  "id": "1234",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "123456789000",
  "params": {
    "list_id": "4421958062479290999"
  }
}
HTTP
POST /private/advanced/cancel-oco HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "method": "private/advanced/cancel-oco",
  "id": "1234",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "123456789000",
  "params": {
    "list_id": "4421958062479290999"
  }
}

private/advanced/create-oto

POST 

/private/advanced/create-oto

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/create-oto"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_list object[]required
    Possible values: >= 2, <= 2
    Exactly 2 orders. One must be LIMIT or MARKET, the other STOP_LOSS, STOP_LIMIT, TAKE_PROFIT_LIMIT or TAKE_PROFIT. ref_price_type supports MARK_PRICE (default), INDEX_PRICE, LAST_PRICE.
  • Array [
  • instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type OrderType (string)required

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    price decimal

    Limit price (required for LIMIT, STOP_LIMIT, TAKE_PROFIT_LIMIT)

    notional decimal

    Amount to spend; for MARKET/STOP_LOSS/TAKE_PROFIT BUY only

    ref_price decimal

    Trigger price for STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT

    ref_price_type RefPriceType (string)

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Reference price type for trigger orders

    spot_margin SpotMargin (string)

    Possible values: [SPOT, MARGIN]

    SPOT or MARGIN (spot/margin mode).

    isolated_margin_amount decimal

    Isolated margin amount

    isolation_id string

    Isolation ID for isolated margin

    leverage decimal

    Leverage for margin/derivatives

    attach_order_id int64

    Order ID to attach this trigger order to. Used for SpotAttach / DerivAttach.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. list_id.
    list_id int64

    List ID.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/advanced/create-oto HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/cancel-oto

POST 

/private/advanced/cancel-oto

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/cancel-oto"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    list_id int64required
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. No result block is returned per docs; code 0 indicates request queued.
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "method": "private/advanced/cancel-oto",
  "id": "1234",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "123456789000",
  "params": {
    "list_id": "4421958062479290999"
  }
}
HTTP
POST /private/advanced/cancel-oto HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "method": "private/advanced/cancel-oto",
  "id": "1234",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "123456789000",
  "params": {
    "list_id": "4421958062479290999"
  }
}

private/advanced/create-otoco

POST 

/private/advanced/create-otoco

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/create-otoco"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_list object[]required
    Possible values: >= 3, <= 3
    Exactly 3 orders. One must be LIMIT or MARKET; one trigger must be STOP_LOSS or STOP_LIMIT, the other TAKE_PROFIT or TAKE_PROFIT_LIMIT. ref_price_type supports MARK_PRICE (default), INDEX_PRICE, LAST_PRICE.
  • Array [
  • instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type OrderType (string)required

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    price decimal

    Limit price (required for LIMIT, STOP_LIMIT, TAKE_PROFIT_LIMIT)

    notional decimal

    Amount to spend; for MARKET/STOP_LOSS/TAKE_PROFIT BUY only

    ref_price decimal

    Trigger price for STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT

    ref_price_type RefPriceType (string)

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Reference price type for trigger orders

    spot_margin SpotMargin (string)

    Possible values: [SPOT, MARGIN]

    SPOT or MARGIN (spot/margin mode).

    isolated_margin_amount decimal

    Isolated margin amount

    isolation_id string

    Isolation ID for isolated margin

    leverage decimal

    Leverage for margin/derivatives

    attach_order_id int64

    Order ID to attach this trigger order to. Used for SpotAttach / DerivAttach.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. list_id.
    list_id int64

    List ID.

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/advanced/create-otoco HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/cancel-otoco

POST 

/private/advanced/cancel-otoco

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/cancel-otoco"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    list_id int64required
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs (code 0 = queued).
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "method": "private/advanced/cancel-otoco",
  "id": "1234",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "123456789000",
  "params": {
    "list_id": "4421958062479290999"
  }
}
HTTP
POST /private/advanced/cancel-otoco HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "method": "private/advanced/cancel-otoco",
  "id": "1234",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "123456789000",
  "params": {
    "list_id": "4421958062479290999"
  }
}

private/advanced/cancel-order

POST 

/private/advanced/cancel-order

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/cancel-order"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_id int64

    Optional Order ID. Either order_id or client_oid must be present. string format is highly recommended.

    client_oid string

    Optional Client Order ID. Either order_id or client_oid must be present.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. order_id, client_oid.
    order_id int64

    Order ID

    client_oid string

    Client Order ID

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "nonce": "1610905028000",
  "method": "private/advanced/cancel-order",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "order_id": "18342311"
  }
}
HTTP
POST /private/advanced/cancel-order HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "nonce": "1610905028000",
  "method": "private/advanced/cancel-order",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "order_id": "18342311"
  }
}

private/advanced/cancel-all-orders

POST 

/private/advanced/cancel-all-orders

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/cancel-all-orders"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    e.g. BTC_USD. If not provided, the OTO/OTOCO orders of ALL instruments will be canceled. Required when position_type is specified.

    type CancelOrderType (string)

    Possible values: [LIMIT, TRIGGER, ALL]

    Allowed values depend on operation:

    • ➖ private/cancel-all-orders: LIMIT, ALL
    • ➖ private/advanced/cancel-all-orders: LIMIT, TRIGGER, ALL. For LIMIT, only the legs from advanced orders will be in-scope.
    position_type string

    Possible values: [CROSS_MARGIN, ISOLATED_MARGIN]

    Derivatives only. One of CROSS_MARGIN, ISOLATED_MARGIN. When set, only advanced orders tied to the specified position type on the given instrument_name are cancelled. Requires instrument_name when set. Cannot be combined with type=LIMIT or type=TRIGGER.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0; no result block per docs (code 0 = queued).
    object
    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "nonce": "1611169184000",
  "method": "private/advanced/cancel-all-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "instrument_name": "BTC_USD"
  }
}
HTTP
POST /private/advanced/cancel-all-orders HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "nonce": "1611169184000",
  "method": "private/advanced/cancel-all-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "params": {
    "instrument_name": "BTC_USD"
  }
}

private/advanced/get-open-orders

POST 

/private/advanced/get-open-orders

Gets all open orders for OTO/OTOCO orders for a particular instrument.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/get-open-orders"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    e.g. BTC_USD. Omit for 'all'.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] (OTO/OTOCO open orders).
    data object[]
  • Array [
  • account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/advanced/get-open-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "BTC_USD"
  }
}
HTTP
POST /private/advanced/get-open-orders HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/advanced/get-open-orders",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "BTC_USD"
  }
}

private/advanced/get-order-detail

POST 

/private/advanced/get-order-detail

Gets detail of a single advanced order by order_id or client_oid.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/get-order-detail"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_id int64

    Order ID. string format is highly recommended, especially for JavaScript client. Either order_id or client_oid must be specified.

    client_oid string

    Client Order ID. Either order_id or client_oid must be specified.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Order object shared by get-order-detail, get-open-orders, get-order-history and advanced variants. reason optional (detail/history). list_id, contingency_type, leg_id, ref_price, ref_price_type optional (advanced OTO/OTOCO only).
    account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/advanced/get-order-detail",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "order_id": "19848525"
  }
}
HTTP
POST /private/advanced/get-order-detail HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/advanced/get-order-detail",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "order_id": "19848525"
  }
}

private/advanced/get-order-history

POST 

/private/advanced/get-order-history

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/get-order-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    e.g. BTCUSD-PERP. Omit for 'all'.

    start_time int64

    Start time in Unix time format (inclusive), ms or ns. Default: end_time - 1 day. Nanosecond is recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive), ms or ns. Default: current system timestamp. Nanosecond is recommended for accurate pagination.

    limit int32

    Maximum number of results to return before end_time. Default: 100. Max: 100.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] (OTO/OTOCO order history).
    data object[]
  • Array [
  • account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/advanced/get-order-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/create-order-list

POST 

/private/advanced/create-order-list

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/create-order-list"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_list object[]required
    Possible values: >= 1, <= 10
    Array of trigger orders to create (max 10). Each order must be STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, or TAKE_PROFIT_LIMIT.
  • Array [
  • instrument_name stringrequired

    Instrument symbol, e.g. BTCUSD-PERP

    side OrderSide (string)required

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimalrequired

    Order quantity. For MARKET BUY can use notional instead.

    client_oid string

    Client order ID (max 36 chars). Recommended for correlation.

    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    exec_inst ExecInstCreateOrder (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, ISOLATED_MARGIN, MARGIN_ORDER]

    Optional array of execution instructions. POST_ONLY and SMART_POST_ONLY mutually exclusive.

    fee_instrument_name string

    Fee instrument (e.g. CRO) for fee deduction

    stp_id string

    Self-trade prevention ID (0 to 32767)

    stp_inst StpInst (string)

    Possible values: [M, T, B]

    Self-trade prevention instruction. Used in private/change-account-settings (params) and private/get-account-settings (result). Mandatory if stp_scope is set.

    • ➖ M: Cancel Maker
    • ➖ T: Cancel Taker
    • ➖ B: Cancel Both Maker and Taker
    stp_scope StpScope (string)

    Possible values: [M, S, D]

    Self-trade prevention scope. Used in private/change-account-settings (params) and private/get-account-settings (result).

    • ➖ M: Matches Master or Sub a/c
    • ➖ S: Matches Sub a/c only
    • ➖ D: reset all STP fields to default (stp_inst and stp_id in same request are ignored).
    type stringrequired

    Possible values: [STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Trigger order type

    price decimal

    Limit price (required for STOP_LIMIT and TAKE_PROFIT_LIMIT)

    ref_price decimal

    Trigger price (required for all trigger order types)

    ref_price_type RefPriceType (string)

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Reference price type for trigger orders

    attach_order_id int64

    The order ID this trigger order is attached to. Used to attach TP/SL to an existing limit order (SpotAttach / DerivAttach attach-to-order).

    attach_isolation_id string

    Position this trigger order is attached to (DerivAttach attach-to-position, derivatives only). > 0: attach to the isolated position whose isolation_id equals the value. 0: attach to the cross-margin position. Requires REDUCE_ONLY in exec_inst. Mutually exclusive with attach_order_id and isolation_id.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object[]
    Present when code === 0. Array of results for each order.
  • Array [
  • index integer

    Index of the order in the original request (0-based).

    code integer

    0 for success, error code otherwise.

    order_id int64

    Order ID (present on success).

    client_oid string

    Client Order ID (present on success).

    message string

    Error message (present on failure).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/advanced/create-order-list HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/cancel-order-list

POST 

/private/advanced/cancel-order-list

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/cancel-order-list"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    order_list object[]required
    Possible values: >= 1, <= 10
    Array of orders to cancel (max 10). Each item must have either order_id or client_oid.
  • Array [
  • order_id int64

    Order ID to cancel. string format is highly recommended.

    client_oid string

    Client Order ID to cancel.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object[]
    Present when code === 0. Array of results for each cancel request.
  • Array [
  • index integer

    Index of the order in the original request (0-based).

    code integer

    0 for success, error code otherwise.

    message string

    Error message (present on failure).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
      }
    ]
  }
}
HTTP
POST /private/advanced/cancel-order-list HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/advanced/get-order-list-detail

POST 

/private/advanced/get-order-list-detail

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/advanced/get-order-list-detail"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    list_id_list int64[]required

    List of list IDs to query. string format is highly recommended for JavaScript clients.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. result.data[] (order details by list_id).
    data object[]
  • Array [
  • account_id string

    Account ID.

    order_id int64

    Order ID.

    client_oid string

    Client Order ID.

    order_type OrderType (string)

    Possible values: [LIMIT, MARKET, STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT]

    Order type:

    • ➖ LIMIT, MARKET
    • ➖ STOP_LOSS, STOP_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT: Trigger orders
    time_in_force TimeInForce (string)

    Possible values: [GOOD_TILL_CANCEL, IMMEDIATE_OR_CANCEL, FILL_OR_KILL]

    Time in force

    side OrderSide (string)

    Possible values: [BUY, SELL]

    BUY or SELL

    exec_inst ExecInstOrderDetail (string)[]

    Possible values: [POST_ONLY, REDUCE_ONLY, SMART_POST_ONLY, LIQUIDATION, ISOLATED_MARGIN, MARGIN_ORDER]

    Execution instructions.

    quantity decimal

    Quantity specified in the order.

    limit_price decimal

    Limit price specified in the order.

    order_value decimal

    Order value.

    maker_fee_rate decimal

    User's maker fee rate.

    taker_fee_rate decimal

    User's taker fee rate.

    avg_price decimal

    Average price.

    cumulative_quantity decimal

    Cumulative executed quantity.

    cumulative_value decimal

    Cumulative executed value.

    cumulative_fee decimal

    Cumulative executed fee.

    status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    update_user_id string

    Updated user.

    order_date string

    Order creation date.

    instrument_name string

    E.g. BTCUSD-PERP.

    fee_instrument_name string

    Currency used for the fees.

    create_time int64

    Order creation timestamp (ms), e.g. "1771761038000".

    create_time_ns int64

    Order creation timestamp (nanosecond), e.g. "1771761038000000000".

    update_time int64

    Order update timestamp (ms), e.g. "1771761038000".

    reason string

    Rejection reason code; present for get-order-detail and get-order-history.

    isolation_id string

    isolation_id of the isolated position the order is tied to (derivatives only).

    isolation_type string

    Possible values: [ISOLATED_MARGIN]

    ISOLATED_MARGIN when isolation_id > 0 (derivatives only).

    list_id int64

    OTO/OTOCO/OCO list id; advanced only.

    contingency_type ContingencyType (string)

    Possible values: [OCO, OTO, OTOCO, SPOT_ATTACH, DERIV_ATTACH]

    Contingency type for advanced orders:

    • ➖ OCO: One-Cancels-the-Other
    • ➖ OTO: One-Triggers-the-Other
    • ➖ OTOCO: One-Triggers-a-One-Cancels-the-Other
    • ➖ SPOT_ATTACH: SpotAttach (TP/SL attached to order for spot instruments)
    • ➖ DERIV_ATTACH: DerivAttach (TP/SL attached to order or position for derivative instruments)
    leg_id string

    Leg id within OTO/OTOCO/OCO; advanced only.

    ref_price decimal

    Trigger reference price (trigger legs only).

    ref_price_type string

    Possible values: [MARK_PRICE, INDEX_PRICE, LAST_PRICE]

    Price source used for ref_price: MARK_PRICE, INDEX_PRICE, or LAST_PRICE (trigger legs only).

    attach_order_id int64

    The order ID this trigger is attached to (for SpotAttach / DerivAttach attach-to-order orders).

    attach_isolation_id string

    Position this trigger is attached to (DerivAttach attach-to-position): > 0 = isolation_id of the isolated position; 0 = cross-margin position.

    exchange_order_id string

    Order ID assigned by the exchange (present once the leg has been accepted).

    reject_reason string

    Rejection reason, if the leg was rejected.

    leverage number

    Leverage specified on the primary leg (derivatives only, when provided).

    isolated_margin_amount decimal

    Isolated margin amount specified on the primary leg (derivatives only, when provided).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
    ]
  }
}
HTTP
POST /private/advanced/get-order-list-detail HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

OTC RFQ for Taker

RFQ Trading Flow​

  1. Taker can firstly subscribe to the following WebSocket channels:

  2. Taker can create a quote request via WebSocket: private/otc/request-quote

  3. Taker, who will be notified of quotes from the WebSocket channel user.otc_qr.quotes, can create a deal request upon Quote message with private/otc/request-deal

  4. Taker will receive confirmation of the deal's status on WebSocket channel user.otc.deals

  5. Taker can get the rejected or completed quote request from Quote Query API

  6. Taker can get the rejected or completed deal from Deal Query API

Quote Request Lifecycle​

StatusDescription
ACTIVEuser may receive a quote and user may call request-deal to execute a trade
COMPLETEDquote request duration has expired and no longer valid. User will not receive quote nor able to call request-deal anymore
REJECTEDrejected due to various reasons; quote request is no longer valid

Quote Lifecycle​

StatusDescription
ACTIVEQuote is valid
EXPIREDQuote has exceeded its TTL
CANCELLEDLiquidity provider cancelled the quote

Deal History​

Use the deal history endpoint to retrieve executed trades. Deal statuses:

StatusDescription
ACCEPTEDDeal request accepted by the system.
CONFIRMEDLiquidity provider has executed the deal.
SETTLEDDeal settled and funds transferred.
REJECTEDDeal request rejected (quote expired, insufficient balance, etc.)

private/otc/request-quote (RFQ)

POST 

/private/otc/request-quote

Create a quote request (RFQ flow).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/request-quote"

    params objectrequired
    cl_quote_req_id stringrequired

    Client provided ID for the quote request. Should be unique per ACTIVE quote request. Accepted characters a-z, A-Z, 0-9, _, -

    firm_quote boolean

    FALSE indicates the quoted price subject to changes. TRUE indicates the quoted price is guaranteed.

    FALSE / TRUE (default to FALSE)

    settlement_arrangement string

    Possible values: [IMMEDIATE, T1]

    Default value: IMMEDIATE

    IMMEDIATE can only be used by non settle later account. T1 can only be used by settle later account.

    duration string

    Possible values: [5000, 10000, 30000, 60000, 300000, 600000]

    Default value: 10000

    Quote request goes from ACTIVE to COMPLETED after this duration (in millisecond).

    quote_ttl string

    Possible values: [4000, 5000]

    Default value: 4000

    The minimum time the quotes remains valid (in millisecond).

    leg_list object[]required
    Legs of the quote request.
  • Array [
  • instrument_name stringrequired

    Instrument for this leg, e.g. BTC_USD

    side stringrequired

    Possible values: [BUY, SELL]

    BUY or SELL

    quantity decimal

    Quantity for this leg. Either quantity or notional must be provided but not both.

    notional decimal

    Notional for this leg. Either quantity or notional must be provided but not both.

  • ]
Success.
Schema
    id int64

    Echoed request id

    method stringrequired

    Method invoked

    code int32required

    0 = success; non-zero indicates error (reason code).

    result objectrequired
    Present when code === 0. subscription user.otc_qr.requests, channel user.otc_qr.requests.
    subscription stringrequired

    Should be user.otc_qr.requests

    channel stringrequired

    Should be user.otc_qr.requests

    data object[]
    Quote request data items.
  • Array [
  • quote_req_id stringrequired

    System generated unique ID for the quote request

    cl_quote_req_id stringrequired

    Client provided ID for the quote request

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/request-quote",
  "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"
      }
    ]
  }
}
HTTP
POST /private/otc/request-quote HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/request-quote",
  "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"
      }
    ]
  }
}

private/otc/get-otc-instruments

POST 

/private/otc/get-otc-instruments

Retrieves a list of available OTC instruments that takers can request quotes for.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-otc-instruments"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired

    Empty object for this endpoint.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    instrument_list object[]
    List of available OTC instruments.
  • Array [
  • instrument_name string

    Trading pair identifier, e.g. BTC_USD

    base_currency string

    Primary asset

    quote_currency string

    Pricing asset

    type string

    Instrument classification, e.g. SPOT

    price_tick_size string

    Minimum price increment

    quote_decimals integer

    Quote decimal precision

    qty_tick_size string

    Minimum quantity increment

    qty_decimals integer

    Quantity decimal precision

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-otc-instruments",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}
HTTP
POST /private/otc/get-otc-instruments HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-otc-instruments",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}

private/otc/get-open-quote-requests

POST 

/private/otc/get-open-quote-requests

Get open quote requests. Only return active quote requests (status = NEW or ACTIVE).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-open-quote-requests"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    If start_time and end_time not provided, limit is not used; default page size 100.
    cl_quote_req_id string

    Client provided ID for the quote request

    quote_req_id string

    System generated unique ID for the quote request

    start_time int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination.

    limit int32

    Page size (default: 20, max: 200).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    count int32

    Number of quote requests returned

    quote_request_list object[]
    List of open quote requests (status NEW or ACTIVE).
  • Array [
  • quote_req_id string

    System generated unique ID for the quote request

    cl_quote_req_id string

    Client provided ID for the quote request

    firm_quote boolean

    The quoted price is guaranteed or subject to change

    settlement_arrangement string

    Possible values: [IMMEDIATE, T1]

    Settlement arrangement of the Quote Request

    status string

    Possible values: [NEW, ACTIVE]

    NEW or ACTIVE

    reason string

    e.g. NO_ERROR

    request_time_ns string

    Unix epoch time when quote request was created in nanoseconds

    leg_list object[]
  • Array [
  • instrument_name string

    Instrument for this leg, e.g. BTC_USD

    quantity decimal

    Either quantity or notional

    notional decimal

    Either quantity or notional

    side string

    Possible values: [BUY, SELL]

    The side of the quote request

    type string

    Possible values: [PRICE]

    e.g. PRICE

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-open-quote-requests",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}
HTTP
POST /private/otc/get-open-quote-requests HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-open-quote-requests",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}

private/otc/get-open-quotes

POST 

/private/otc/get-open-quotes

Get open quotes. Only return active Quotes (status = ACTIVE).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-open-quotes"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    If quote_id or lp_quote_id provided, query ignores time range.
    quote_id string

    System supplied Quote ID; if provided

    lp_quote_id string

    LP supplied Quote ID; if provided

    start_time int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination.

    limit int32

    Page size (default: 20, max: 200).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    count int32

    Number of quotes returned

    quote_list object[]
    List of open quotes (status ACTIVE).
  • Array [
  • quote_id string

    System generated unique ID for the quote

    lp_quote_id string

    LP supplied ID for the quote

    quote_req_id string

    System generated unique ID for the quote request

    status string

    Possible values: [ACTIVE]

    ACTIVE

    reason string

    e.g. NO_ERROR

    response_time_ns string

    Unix epoch time when quote was received in nanosecond

    expiry_time_ns string

    Unix epoch time when quote expires in nanosecond

    expire_time_ns string

    Alias for expiry_time_ns (Unix epoch time when quote expires in nanosecond).

    leg_list object[]
  • Array [
  • instrument_name string

    Instrument for this leg, e.g. BTC_USD

    quantity decimal

    Either quantity or notional

    notional decimal

    Either quantity or notional

    bid decimal

    The bid price for the instrument

    ask decimal

    The ask price for the instrument

    type string

    Possible values: [PRICE]

    PRICE. Only present when the quote has pricing (i.e. bid / ask).

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-open-quotes",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "lp_quote_id": "98765"
  }
}
HTTP
POST /private/otc/get-open-quotes HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-open-quotes",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "lp_quote_id": "98765"
  }
}

private/otc/get-quote-history

POST 

/private/otc/get-quote-history

Get quotes history.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-quote-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    If quote_id or lp_quote_id provided, query ignores time range.
    quote_id string

    System supplied Quote ID; if provided

    lp_quote_id string

    LP supplied Quote ID; if provided

    start_time int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination.

    limit int32

    Page size (default: 20, max: 200).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    count int32

    Number of quotes returned

    quote_list object[]
    List of quotes in history.
  • Array [
  • quote_id string

    System generated unique ID for the quote

    lp_quote_id string

    LP supplied ID for the quote

    quote_req_id string

    System generated unique ID for the quote request

    status string

    Quote status (e.g. ACTIVE

    reason string

    e.g. NO_ERROR

    response_time_ns string

    Unix epoch time when quote was received in nanosecond

    expiry_time_ns string

    Unix epoch time when quote expires in nanosecond

    expire_time_ns string

    Alias for expiry_time_ns (Unix epoch time when quote expires in nanosecond).

    leg_list object[]
  • Array [
  • instrument_name string

    Instrument for this leg, e.g. BTC_USD

    quantity decimal

    Either quantity or notional

    notional decimal

    Either quantity or notional

    bid decimal

    The bid price for the instrument

    ask decimal

    The ask price for the instrument

    type string

    Possible values: [PRICE]

    PRICE. Only present when the quote has pricing (i.e. bid / ask).

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-quote-history",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "lp_quote_id": "98765"
  }
}
HTTP
POST /private/otc/get-quote-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-quote-history",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "lp_quote_id": "98765"
  }
}

private/otc/get-quote-request-history

POST 

/private/otc/get-quote-request-history

Get quote requests history. Only return closed quote requests (status = COMPLETED/REJECTED).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-quote-request-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    Optional filters for quote request history.
    cl_quote_req_id string

    Client provided ID for quote request

    quote_req_id string

    System generated unique ID for the quote request

    start_time int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination.

    limit int32

    Page size (default: 20, max: 200).

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    count int32

    Number of quote requests returned

    quote_request_list object[]
    List of closed quote requests (status COMPLETED or REJECTED).
  • Array [
  • quote_req_id string

    System generated unique ID for the quote request

    cl_quote_req_id string

    Client provided ID for the quote request

    firm_quote boolean

    The quoted price is guaranteed or subject to change

    settlement_arrangement string

    Possible values: [IMMEDIATE, T1]

    Settlement arrangement of the quote request

    status string

    Possible values: [COMPLETED, REJECTED]

    COMPLETED or REJECTED

    reason string

    Reason if REJECTED

    request_time_ns string

    Unix epoch time when quote request was created in nanoseconds

    leg_list object[]
  • Array [
  • instrument_name string

    Instrument for this leg, e.g. BTC_USD

    quantity decimal

    Either quantity or notional

    notional decimal

    Either quantity or notional

    side string

    Possible values: [BUY, SELL]

    The side of the quote request

    type string

    Possible values: [PRICE]

    e.g. PRICE

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-quote-request-history",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}
HTTP
POST /private/otc/get-quote-request-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-quote-request-history",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}

private/otc/request-deal (RFQ)

POST 

/private/otc/request-deal

Request a deal from a quote (RFQ flow).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/request-deal"

    params objectrequired
    deal_type stringrequired

    Possible values: [QUOTE_REQUEST]

    Should be QUOTE_REQUEST

    cl_deal_id stringrequired

    Client provided ID for the deal. Should be unique per deal request. Accepted characters a-z, A-Z, 0-9, _, -

    quote_id stringrequired

    quote_id obtained from user.otc_qr.quotes

    quote_req_id stringrequired

    quote_req_id obtained from user.otc_qr.requests

    leg_list object[]required
    List of legs for the deal request.
  • Array [
  • instrument_name stringrequired

    Instrument symbol (e.g., BTC_USD). Same value used in request-quote.

    price decimalrequired

    Bid or ask obtained from user.otc_qr.quotes.

    quantity decimal

    Client either provide quantity or notional. Same value used in request-quote.

    notional decimal

    Client either provide quantity or notional. Same value used in request-quote.

    side stringrequired

    Possible values: [BUY, SELL]

    BUY or SELL

  • ]
Success.
Schema
    id int64

    Echoed request id

    method stringrequired

    Method invoked

    code int32required

    0 = success; non-zero indicates error (reason code).

    result objectrequired
    Present when code === 0.
    deal_id stringrequired

    System generated unique ID for the deal

    cl_deal_id stringrequired

    Client provided ID for the deal request

    quote_id stringrequired

    System generated unique ID for the quote

    quote_req_id stringrequired

    System generated unique ID for the quote request

    deal_type stringrequired

    Deal type

    deal_status stringrequired

    Possible values: [ACCEPTED, REJECTED]

    ACCEPTED = system received deal; REJECTED = deal rejected

    reason stringrequired

    e.g. NO_ERROR

    update_time_ns stringrequired

    Unix epoch time when deal last updated in nanosecond

    leg_list object[]required
    List of legs for the deal.
  • Array [
  • instrument_name stringrequired

    Instrument symbol (e.g., BTC_USD)

    price decimalrequired

    Echoed back from quote

    quantity decimal

    Echoed back from quote request if requested quantity

    notional decimal

    Echoed back from quote request if requested notional

    executed_quantity decimal

    Executed quantity

    executed_notional decimal

    Executed notional

    side stringrequired

    Possible values: [BUY, SELL]

    Echoed back from deal

    type string

    Possible values: [PRICE]

    e.g. PRICE

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/otc/request-deal",
  "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"
      }
    ]
  }
}
HTTP
POST /private/otc/request-deal HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/otc/request-deal",
  "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"
      }
    ]
  }
}

private/otc/get-open-deals (RFQ)

POST 

/private/otc/get-open-deals

Get quote requests history. Only return closed quote requests (status = COMPLETED/REJECTED).

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-open-deals"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    deal_type stringrequired

    Possible values: [QUOTE_REQUEST]

    QUOTE_REQUEST

    deal_id string

    System generated unique ID for the Deal. If provided, will ignore instrument_name, start_time, and end_time params.

    start_time int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    deal_list object[]
    List of deals.
  • Array [
  • deal_id string

    System generated unique ID for the Deal

    quote_id string

    System generated unique ID for the Quote

    cl_deal_id string

    Client provided ID for the deal

    deal_type string

    Possible values: [QUOTE_REQUEST]

    QUOTE_REQUEST

    deal_status string

    Possible values: [ACCEPTED, CONFIRMED, SETTLED, REJECTED]

    ACCEPTED = system received deal; CONFIRMED = liquidity provider has executed deal; SETTLED = deal settled and funds transferred; REJECTED = deal rejected

    settlement_arrangement string

    Possible values: [IMMEDIATE, T1]

    Settlement arrangement of the Deal

    create_time_ns string

    Create time of the Deal (in nanoseconds)

    update_time_ns string

    Last updated time of the Deal (in nanoseconds)

    settle_time_ns string

    Scheduled time the deal is to be settled at (in nanoseconds). Early settled deal reflected on update_time_ns. 0 or not present for IMMEDIATE deal.

    quote_req_id string

    System generated unique ID for the quote request

    leg_list object[]
  • Array [
  • instrument_name string

    Instrument of the Deal (e.g., BTC_USD)

    quantity decimal

    Either quantity or notional of the Deal

    notional decimal

    Either quantity or notional of the Deal

    executed_quantity decimal

    Executed qty of the Deal

    executed_notional decimal

    Executed notional of the Deal

    price decimal

    Price of the Deal

    side string

    Possible values: [BUY, SELL]

    The side of the deal

    type string

    Possible values: [PRICE]

    e.g. PRICE

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-open-deals",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "deal_type": "QUOTE_REQUEST"
  }
}
HTTP
POST /private/otc/get-open-deals HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-open-deals",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {
    "deal_type": "QUOTE_REQUEST"
  }
}

private/otc/get-deal-history (RFQ)

POST 

/private/otc/get-deal-history

Get closed deals for given user.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-deal-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    deal_type stringrequired

    Possible values: [QUOTE_REQUEST]

    QUOTE_REQUEST

    deal_id string

    System generated unique ID for the Deal

    start_time int64

    Start time in Unix time format (inclusive). Default: end_time - 1 day. Nanosecond recommended for accurate pagination.

    end_time int64

    End time in Unix time format (exclusive). Default: current system timestamp. Nanosecond recommended for accurate pagination.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0.
    deal_list object[]
    List of closed deals.
  • Array [
  • deal_id string

    System generated unique ID for the Deal

    quote_id string

    System generated unique ID for the Quote

    cl_deal_id string

    Client provided ID for the deal

    deal_type string

    Possible values: [QUOTE_REQUEST]

    QUOTE_REQUEST

    deal_status string

    Possible values: [ACCEPTED, CONFIRMED, SETTLED, REJECTED]

    ACCEPTED = system received deal; CONFIRMED = liquidity provider has executed deal; SETTLED = deal settled and funds transferred; REJECTED = deal rejected

    settlement_arrangement string

    Possible values: [IMMEDIATE, T1]

    Settlement arrangement of the Deal

    create_time_ns string

    Create time of the Deal (in nanoseconds)

    update_time_ns string

    Last updated time of the Deal (in nanoseconds)

    settle_time_ns string

    Scheduled time the deal is to be settled at (in nanoseconds). Early settled deal reflected on update_time_ns. 0 or not present for IMMEDIATE deal.

    quote_req_id string

    System generated unique ID for the quote request

    leg_list object[]
  • Array [
  • instrument_name string

    Instrument of the Deal (e.g., BTC_USD)

    quantity decimal

    Either quantity or notional of the Deal

    notional decimal

    Either quantity or notional of the Deal

    executed_quantity decimal

    Executed qty of the Deal

    executed_notional decimal

    Executed notional of the Deal

    price decimal

    Price of the Deal

    side string

    Possible values: [BUY, SELL]

    The side of the deal

    type string

    Possible values: [PRICE]

    e.g. PRICE

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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
  }
}
HTTP
POST /private/otc/get-deal-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/otc/get-settle-later-limit

POST 

/private/otc/get-settle-later-limit

Get used settle later limit as well as the configured limit for account.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-settle-later-limit"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired

    No params required.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Settle later limit (used and configured).
    account_id string

    Account ID

    configured_limit string

    Configured limit, e.g. 1000000

    used_limit string

    Used limit, e.g. 200000

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-settle-later-limit",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}
HTTP
POST /private/otc/get-settle-later-limit HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-settle-later-limit",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}

private/otc/get-unsettled-amounts

POST 

/private/otc/get-unsettled-amounts

Get pending settlement amount aggregated by date and instrument.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/otc/get-unsettled-amounts"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired

    No params required.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Pending settlement amount aggregated by date and instrument.
    unsettled_ccys object
    Map by date (timestamp key in nanoseconds) and instrument/currency (inner key). Each value is the amount as string.
    property name* object
    property name* string

    Amount

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/otc/get-unsettled-amounts",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}
HTTP
POST /private/otc/get-unsettled-amounts HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/otc/get-unsettled-amounts",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1610905028000",
  "params": {}
}

Crypto Wallet

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.

private/create-withdrawal

POST 

/private/create-withdrawal

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/create-withdrawal"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    client_wid string

    Optional Client withdrawal ID.

    currency stringrequired

    E.g. BTC, CRO.

    amount decimalrequired

    Withdrawal amount.

    address stringrequired

    Destination address (must be whitelisted).

    address_tag string

    Secondary address identifier for coins like XRP, XLM (memo or tag).

    network_id string

    Desired network; address must be whitelisted. See default_network and network in get-currency-networks.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. currency and other fields per docs.
    id int64

    Newly created withdrawal ID.

    client_wid string

    (Optional) Client withdrawal ID if provided in the request.

    currency string

    E.g. BTC, CRO.

    amount decimal

    Withdrawal amount.

    fee decimal

    Withdrawal fee.

    address string

    Address with Address Tag (if any).

    create_time int64

    Creation time (ms).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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
  }
}
HTTP
POST /private/create-withdrawal HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-currency-networks

POST 

/private/get-currency-networks

Get the symbol network mapping.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-currency-networks"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    No parameters; use empty object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. update_time, currency_map (full_name, default_network, network_list).
    update_time int64

    Last update timestamp (ms).

    currency_map object
    Map of currency code to currency network info.
    property name* object
    full_name string

    E.g. SHIBA INU.

    default_network string

    If network is not provided in create-withdrawal, this is used when more than one network is available.

    network_list object[]
    List of networks for this currency.
  • Array [
  • network_id string

    Network id; can be used in create-withdrawal.

    withdrawal_fee decimal

    Withdrawal fee.

    withdraw_enabled boolean

    Whether withdrawal is enabled.

    min_withdrawal_amount decimal

    Minimum withdrawal amount.

    deposit_enabled boolean

    Whether deposit is enabled.

    confirmation_required int32

    Confirmation blocks count.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "12",
  "method": "private/get-currency-networks",
  "params": {},
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640830660110"
}
HTTP
POST /private/get-currency-networks HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "12",
  "method": "private/get-currency-networks",
  "params": {},
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640830660110"
}

private/get-deposit-address

POST 

/private/get-deposit-address

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-deposit-address"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    currency stringrequired

    E.g. BTC, CRO.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. deposit_address_list (currency, create_time, id, address, status, network).
    deposit_address_list object[]
    List of deposit addresses.
  • Array [
  • id string

    Newly created deposit ID.

    currency string

    E.g. BTC, CRO.

    network string

    E.g. ETH, CRO. When currency = CRO, network = CRO is main net; network = ETH is ERC20 address.

    address string

    Address with Address Tag (if any).

    create_time int64

    Creation time (ms).

    status string

    0 = Inactive, 1 = Active.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "-1",
  "method": "private/get-deposit-address",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1587846358253",
  "params": {
    "currency": "CRO"
  }
}
HTTP
POST /private/get-deposit-address HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "-1",
  "method": "private/get-deposit-address",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1587846358253",
  "params": {
    "currency": "CRO"
  }
}

private/get-deposit-history

POST 

/private/get-deposit-history

Fetches deposit history. If you do not see the option when viewing your API Keys, this feature is not yet available for you.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-deposit-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    currency string

    E.g. BTC, CRO.

    start_ts int64

    Start time (ms), e.g. "1771761038000". Default is 90 days from current timestamp.

    end_ts int64

    End time (ms), e.g. "1771761038000". Default is current timestamp.

    page_size int32

    Page size (Default: 20, Max: 200).

    page int32

    Page number (0-based).

    status DepositStatus (string)

    Possible values: [0, 1, 2, 3]

    Deposit status. Used in private/get-deposit-history request (filter) and response (deposit_list[].status).

    • ➖ 0: Not Arrived
    • ➖ 1: Arrived
    • ➖ 2: Failed
    • ➖ 3: Pending
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. deposit_list (currency, fee, create_time, id, update_time, amount, address, status).
    deposit_list object[]
    List of deposits.
  • Array [
  • id string

    Newly created deposit ID.

    currency string

    E.g. BTC, CRO.

    amount decimal

    Deposit amount.

    fee decimal

    Deposit fee.

    address string

    Address with Address Tag (if any).

    create_time int64

    Creation time (ms).

    update_time int64

    Last update time (ms).

    status DepositStatus (string)

    Possible values: [0, 1, 2, 3]

    Deposit status. Used in private/get-deposit-history request (filter) and response (deposit_list[].status).

    • ➖ 0: Not Arrived
    • ➖ 1: Arrived
    • ➖ 2: Failed
    • ➖ 3: Pending
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/get-deposit-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/get-withdrawal-history

POST 

/private/get-withdrawal-history

Fetches withdrawal history. If you do not see the option when viewing your API Keys, this feature is not yet available for you.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/get-withdrawal-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    currency string

    E.g. BTC, CRO.

    start_ts int64

    Start time (ms). Default is 90 days before current timestamp.

    end_ts int64

    End time (ms). Default is current timestamp.

    page_size int32

    Page size (Default: 20, Max: 200).

    page int32

    Page number (0-based).

    status WithdrawalStatus (string)

    Possible values: [0, 1, 2, 3, 4, 5, 6]

    Withdrawal status. Used in private/get-withdrawal-history request (filter) and response (withdrawal_list[].status).

    • ➖ 0: Pending
    • ➖ 1: Processing
    • ➖ 2: Rejected
    • ➖ 3: Payment In-progress
    • ➖ 4: Payment Failed
    • ➖ 5: Completed
    • ➖ 6: Cancelled
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. withdrawal_list (currency, client_wid, fee, create_time, id, update_time, amount, address, status, txid, network_id).
    withdrawal_list object[]
    List of withdrawal records.
  • Array [
  • currency string

    E.g. BTC, CRO.

    client_wid string

    Client withdrawal ID from the request, if provided.

    fee decimal

    Withdrawal fee.

    create_time int64

    Creation timestamp.

    id string

    Withdrawal ID.

    update_time int64

    Last update timestamp.

    amount decimal

    Withdrawal amount.

    address string

    Address with Address Tag (if any).

    status WithdrawalStatus (string)

    Possible values: [0, 1, 2, 3, 4, 5, 6]

    Withdrawal status. Used in private/get-withdrawal-history request (filter) and response (withdrawal_list[].status).

    • ➖ 0: Pending
    • ➖ 1: Processing
    • ➖ 2: Rejected
    • ➖ 3: Payment In-progress
    • ➖ 4: Payment Failed
    • ➖ 5: Completed
    • ➖ 6: Cancelled
    txid string

    Transaction hash.

    network_id string

    Network for the transaction; only available when the exchange supports multiple networks for the currency.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/get-withdrawal-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

Fiat Wallet

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 NetworkCurrency
openpayd_exchange_sepaEUR
usd_swiftUSD
usd_fedwireUSD
usd_cubixUSD
uk_fpsGBP
aed_ipiAED

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.

private/fiat/fiat-access

POST 

/private/fiat/fiat-access

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-access"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1773372503821".

    on_behalf_of_account_uuid stringrequired

    The account UUID of the user on whose behalf the broker is making the request

    params objectrequired
    object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Contains accesses array.
    accesses object[]required
    List of fiat access permissions
  • Array [
  • currency stringrequired

    Currency code (e.g., USD)

    payment_network stringrequired

    Payment network identifier (e.g., us_ach)

    is_deposit_enable booleanrequired

    Whether deposits are enabled for this currency/network

    is_withdraw_enable booleanrequired

    Whether withdrawals are enabled for this currency/network

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "3",
  "method": "private/fiat/fiat-access",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1773372503821",
  "params": {}
}
HTTP
POST /private/fiat/fiat-access HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "3",
  "method": "private/fiat/fiat-access",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1773372503821",
  "params": {}
}

private/fiat/fiat-deposit-info

POST 

/private/fiat/fiat-deposit-info

Retrieves fiat deposit information for the authenticated user. Returns bank details for depositing fiat currency with optional payment network filtering.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-deposit-info"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    payment_networks string

    Comma-separated list of payment networks to filter by

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. deposit_info_list per docs.
    deposit_info_list object[]required
    List of deposit information
  • Array [
  • payment_network stringrequired

    Payment network identifier

    currency stringrequired

    Currency code

    bank_details objectrequired
    Bank details object
    account_holder_name stringnullable

    Account holder name

    bank_name stringnullable

    Bank name

    bank_address stringnullable

    Bank address

    bank_country stringnullable

    Bank country

    routing_number stringnullable

    Bank routing number

    account_number stringnullable

    Bank account number

    recipient_name stringnullable

    Recipient name

    recipient_address stringnullable

    Recipient address

    bic_code stringnullable

    Bank Identifier Code (SWIFT code)

    iban_code stringnullable

    International Bank Account Number

    reference_code stringnullable

    Reference code for the deposit

    sort_code stringnullable

    UK bank sort code

    cubix_partner_name stringnullable

    Cubix partner name

    cubix_account_name stringnullable

    Cubix account name

    cubix_account_id stringnullable

    Cubix account ID

    cubix_account_number stringnullable

    Last 4 digits of Cubix account number

    account_type stringnullable

    Account type

    meta objectnullable

    Additional metadata

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "123456",
  "method": "private/fiat/fiat-deposit-info",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_networks": "usd_cubix"
  }
}
HTTP
POST /private/fiat/fiat-deposit-info HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "123456",
  "method": "private/fiat/fiat-deposit-info",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_networks": "usd_cubix"
  }
}

private/fiat/fiat-deposit-history

POST 

/private/fiat/fiat-deposit-history

Retrieves paginated fiat deposit transaction history for the authenticated user.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-deposit-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    page int32required

    Page number (0-based)

    page_size int32required

    Number of items per page

    start_time int64

    Start time for filtering transactions, as a Unix timestamp in milliseconds. Required if end_time is provided.

    end_time int64

    End time for filtering transactions, as a Unix timestamp in milliseconds.

    payment_networks string

    Comma-separated list of payment networks to filter by

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. transaction_history_list, page, page_size, total.
    transaction_history_list object[]
  • Array [
  • id uuidrequired

    Transaction ID.

    amount decimalrequired

    Transaction amount

    currency stringrequired

    Currency code

    fee_currency string

    Fee currency

    fee_amount decimal

    Transaction fee amount

    status stringrequired

    Transaction status (pending, completed, failed, refunded)

    payment_network stringrequired

    Payment network identifier

    created_at int64required

    Transaction creation timestamp (ms).

    updated_at int64

    Transaction update timestamp (ms).

    completed_at int64

    Transaction completion timestamp (ms).

    fee decimal

    Transaction fee (alternate).

    vendor_transaction_id stringnullable

    Transaction identifier assigned by the upstream fiat vendor / payment service provider (PSP) that processed the deposit.

    sender objectnullable
    Sender or beneficiary in a fiat deposit/withdraw transaction.
    account_identifier_value string

    Account identifier value

    beneficiary objectnullable
    Sender or beneficiary in a fiat deposit/withdraw transaction.
    account_identifier_value string

    Account identifier value

  • ]
  • page int32

    Current page number

    page_size int32

    Number of items per page

    total int32

    Total number of transactions

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/fiat/fiat-deposit-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/fiat/fiat-withdraw-history

POST 

/private/fiat/fiat-withdraw-history

Retrieves paginated fiat withdrawal transaction history for the authenticated user.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-withdraw-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    page int32required

    Page number (0-based).

    page_size int32required

    Number of items per page.

    start_time int64

    Start time for filtering transactions, as a Unix timestamp in milliseconds. Required if end_time is provided.

    end_time int64

    End time for filtering transactions, as a Unix timestamp in milliseconds.

    payment_networks string

    Comma-separated list of payment networks to filter by

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. transaction_history_list, page, page_size, total per docs.
    page int32required

    Current page number

    page_size int32required

    Number of items per page

    total int32required

    Total number of transactions

    transaction_history_list object[]required
    List of withdrawal transactions
  • Array [
  • id uuidrequired

    Transaction ID.

    account_id int64

    Account ID.

    currency stringrequired

    Currency code

    amount decimalrequired

    Transaction amount

    amount_in_usd decimalnullable

    Amount in USD.

    fee_currency string

    Fee currency

    fee_amount decimal

    Transaction fee amount

    fee_amount_in_usd decimalnullable

    Fee amount in USD

    fee decimal

    Transaction fee (alternate).

    payment_network stringrequired

    Payment network identifier

    status stringrequired

    Transaction status (pending, completed, failed, cancelled, refunded)

    created_at int64required

    Transaction creation timestamp (ms).

    updated_at int64

    Transaction update timestamp (ms).

    completed_at int64nullable

    Transaction completion timestamp (ms).

    client_wid stringnullable

    Optional client withdrawal ID. Returns null if no client_wid was supplied at creation time.

    vendor_transaction_id stringnullable

    Transaction identifier assigned by the upstream fiat vendor / payment service provider (PSP) that processed the withdrawal.

    sender objectnullable
    Sender or beneficiary in a fiat deposit/withdraw transaction.
    account_identifier_value string

    Account identifier value

    beneficiary objectnullable
    Sender or beneficiary in a fiat deposit/withdraw transaction.
    account_identifier_value string

    Account identifier value

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/fiat/fiat-withdraw-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/fiat/fiat-create-withdraw

POST 

/private/fiat/fiat-create-withdraw

Creates a new fiat withdrawal request for the authenticated user.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-create-withdraw"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    client_wid string

    Possible values: <= 36 characters

    Optional client withdrawal ID. (Max 36 chars) Recommended for correlation.

    account_id stringrequired

    Linked bank account ID (UUID format); use id from private/fiat/fiat-get-bank-accounts response.

    amount decimalrequired

    Withdrawal amount as string.

    currency stringrequired

    Currency code (3-letter format).

    payment_network stringrequired

    Payment network identifier.

    intermediate_bank object
    Only required for usd_swift. Intermediary bank information will update the bank intermediate bank info if provided. Please check with your bank for the correct information.
    bank_identifier_type string

    Type of bank identifier (e.g., SWIFT, ROUTING)

    bank_identifier_value string

    Bank identifier value

    bank_name string

    Name of the intermediary bank.

    address_1 string

    Bank address line 1

    address_2 string

    Bank address line 2

    beneficiary_id string

    Beneficiary ID (optional)

    authorization_id string

    Authorization ID (optional)

    bank_identifier_value string

    Only available to aed_ipi. Bank identifier value for the AED network.

    account_identifier_value string

    Only available to aed_ipi. Account identifier value for the AED network.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Withdrawal result per docs.
    id stringrequired

    System-generated withdrawal ID

    client_wid string

    Client withdrawal ID (echoed from request if provided)

    account_id string

    Linked bank account ID for the withdrawal

    status stringrequired

    Withdrawal status (e.g., pending)

    payment_network stringrequired

    Payment network identifier

    currency stringrequired

    Currency code

    amount decimalrequired

    Withdrawal amount (string for precision).

    amount_in_usd decimal

    Withdrawal amount converted to USD (string for precision).

    fee_currency stringrequired

    Currency of the withdrawal fee

    fee_amount decimalrequired

    Withdrawal fee amount (string for precision).

    beneficiary_id string

    Beneficiary identifier

    authorization_id string

    Authorization identifier for the withdrawal

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
    }
  }
}
HTTP
POST /private/fiat/fiat-create-withdraw HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/fiat/fiat-transaction-quota

POST 

/private/fiat/fiat-transaction-quota

Retrieves transaction quota information for a specific payment network.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-transaction-quota"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    payment_network stringrequired

    Payment network identifier.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. details per docs.
    details objectrequired
    Detailed quota information. See properties below.
    currency stringrequired

    Currency code.

    payment_network stringrequired

    Payment network identifier.

    network_name string

    Human-readable network name.

    monthly_quota_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_quota_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    used_monthly_quota_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    used_daily_quota_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    remaining_monthly_quota_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    remaining_daily_quota_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    minimum_withdrawal_amount_in_usd object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    monthly_quota objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_quota objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    used_monthly_quota objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    used_daily_quota objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    remaining_monthly_quota objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    remaining_daily_quota objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    minimum_withdrawal_amount objectrequired
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_daily_quota object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_monthly_quota object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_used_daily_quota object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_used_monthly_quota object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_remaining_daily_quota object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_remaining_monthly_quota object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    transactions_per_day int32nullable

    Maximum transactions per day (null if no limit).

    transactions_per_month int32nullable

    Maximum transactions per month (null if no limit).

    transactions_daily_count int32required

    Current daily transaction count.

    transactions_monthly_count int32required

    Current monthly transaction count.

    remaining_transactions_daily_count int32nullable

    Remaining daily transactions (null if no limit).

    remaining_transactions_monthly_count int32nullable

    Remaining monthly transactions (null if no limit).

    currency_transactions_per_day int32nullable

    Currency-level max transactions per day (null if no limit).

    currency_transactions_per_month int32nullable

    Currency-level max transactions per month (null if no limit).

    currency_transactions_daily_count int32

    Currency-level current daily transaction count.

    currency_transactions_monthly_count int32

    Currency-level current monthly transaction count.

    currency_remaining_transactions_daily_count int32nullable

    Currency-level remaining daily transactions (null if no limit).

    currency_remaining_transactions_monthly_count int32nullable

    Currency-level remaining monthly transactions (null if no limit).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "123456",
  "method": "private/fiat/fiat-transaction-quota",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_network": "usd_cubix"
  }
}
HTTP
POST /private/fiat/fiat-transaction-quota HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "123456",
  "method": "private/fiat/fiat-transaction-quota",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_network": "usd_cubix"
  }
}

private/fiat/fiat-transaction-limit

POST 

/private/fiat/fiat-transaction-limit

Retrieves transaction limits for a specific payment network.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-transaction-limit"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    payment_network stringrequired

    Payment network identifier.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. deposit and payment limits per docs.
    deposit objectrequired
    Deposit limits and information
    min_deposit_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_max_deposit_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    monthly_max_deposit_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_daily_max_deposit_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_monthly_max_deposit_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_quota int32

    Daily quota count (null/0 means no limit).

    monthly_quota int32

    Monthly quota count (null/0 means no limit).

    daily_transaction_count int32

    Current daily transaction count (null/0 means no limit).

    monthly_transaction_count int32

    Current monthly transaction count (null/0 means no limit).

    currency_daily_transaction_count int32

    Currency-level daily transaction count (null/0 means no limit).

    currency_monthly_transaction_count int32

    Currency-level monthly transaction count (null/0 means no limit).

    fee_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_max_transaction_count int32

    Maximum daily transaction count (null/0 means no limit).

    monthly_max_transaction_count int32

    Maximum monthly transaction count (null/0 means no limit).

    currency_daily_max_transaction_count int32

    Currency-level max daily transaction count (null/0 means no limit).

    currency_monthly_max_transaction_count int32

    Currency-level max monthly transaction count (null/0 means no limit).

    payment objectrequired
    Payment limits and information
    name string

    Payment network name

    full_name string

    Payment network full name

    review_time_description string

    Human-readable review time description

    review_time object
    min decimal
    max decimal
    unit string
    bank_transfer_time_description string

    Human-readable bank transfer time description

    bank_transfer_time object
    min decimal
    max decimal
    unit string
    min_payment_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_max_payment_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    monthly_max_payment_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    auto_approve_max_payment_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_daily_max_payment_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    currency_monthly_max_payment_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    fee_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    refund_fee_amount object
    Currency and amount pair (amount may be null to indicate no limit).
    currency string

    Currency code (e.g., USD)

    amount decimalnullable

    Amount as string; null means no limit where applicable

    daily_transaction_count int32

    Current daily transaction count.

    monthly_transaction_count int32

    Current monthly transaction count.

    currency_daily_transaction_count int32

    Currency-level daily transaction count.

    currency_monthly_transaction_count int32

    Currency-level monthly transaction count.

    daily_max_transaction_count int32

    Maximum daily transaction count (null/0 means no limit).

    monthly_max_transaction_count int32

    Maximum monthly transaction count (null/0 means no limit).

    currency_daily_max_transaction_count int32

    Currency-level max daily transaction count (null/0 means no limit).

    currency_monthly_max_transaction_count int32

    Currency-level max monthly transaction count (null/0 means no limit).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "123456",
  "method": "private/fiat/fiat-transaction-limit",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_network": "usd_cubix"
  }
}
HTTP
POST /private/fiat/fiat-transaction-limit HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "123456",
  "method": "private/fiat/fiat-transaction-limit",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_network": "usd_cubix"
  }
}

private/fiat/fiat-create-bank-account

POST 

/private/fiat/fiat-create-bank-account

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-create-bank-account"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1773372503821".

    on_behalf_of_account_uuid stringrequired

    The account UUID of the user on whose behalf the broker is making the request

    params objectrequired
    plaid_account_id stringrequired

    The user's bank account ID from Plaid (selected by user in Plaid Link flow)

    plaid_public_token stringrequired

    Plaid public token received from the Plaid Link SDK's onSuccess callback on the frontend. This is NOT the link_token from private/fiat/fiat-get-plaid-token; the link_token is used to initialize Plaid Link, while the public_token is returned by Plaid after the user completes the bank linking flow.

    currency stringrequired

    Currency code (3-letter format)

    bank_account_id string

    Existing bank account ID. Used to link a Plaid-created bank account to an existing bank account record (e.g., re-linking or updating). Optional — omit on first creation.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. Returns list of bank accounts including the newly created one.
    bank_accounts_list object[]required
    List of user's bank accounts
  • Array [
  • id stringrequired

    Unique bank account ID

    status stringrequired

    Possible values: [pending, submitted, pending_authorize, authenticated, transaction_enabled, pending_proof, proof_submitted, approved, rejected, escalated, completed, deleted]

    Bank account status.

    bank_name stringrequired

    Bank name

    currency stringrequired

    Currency code (e.g., USD)

    account_holder_name stringrequired

    Account holder name

    account_identifier_value stringrequired

    Masked account identifier value

    supported_payment_networks string[]required

    Array of supported payment network identifiers

    created_at int64required

    Account creation timestamp (ms).

    updated_at int64required

    Account last update timestamp (ms).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/fiat/fiat-create-bank-account HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/fiat/fiat-get-bank-accounts

POST 

/private/fiat/fiat-get-bank-accounts

Retrieves user's bank accounts with optional payment network filtering.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/fiat/fiat-get-bank-accounts"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    payment_networks string

    Comma-separated list of payment networks to filter by

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. bank_accounts_list per docs.
    bank_accounts_list object[]required
    List of user's bank accounts
  • Array [
  • ok string

    Status indicator (null in most cases)

    code string

    Response code (null in most cases)

    message string

    Response message (null in most cases)

    id stringrequired

    Unique bank account ID (use this for withdrawals)

    account_id string

    Account ID (cannot be used for withdrawal)

    user_uuid string

    User UUID

    status stringrequired

    Possible values: [pending, submitted, pending_authorize, authenticated, transaction_enabled, pending_proof, proof_submitted, approved, rejected, escalated, completed, deleted, expired]

    Bank account status. When expired, the bank account token has expired and the user must relink via the Plaid relink flow before withdrawals can resume.

    bank_name stringrequired

    Bank name

    bank_city string

    Bank city

    bank_country string

    Bank country code

    bank_identifier_type string

    Type of bank identifier (e.g., cubix_account_number_last_4_digits, bic_swift)

    bank_identifier_value string

    Masked bank identifier value

    bank_account_holder_name string

    Bank account holder name

    account_identifier_type string

    Type of account identifier (e.g., cubix_account_id, iban)

    account_identifier_value string

    Masked account identifier value

    account_holder_name stringrequired

    Account holder name

    account_type string

    Account type (null in most cases)

    currency stringrequired

    Currency code (e.g., USD)

    verified_by string

    Verification method (e.g., Cubix, Deposit)

    reason string

    Reason or additional information

    supported_payment_networks string[]required

    Array of supported payment network identifiers

    withdrawal_payment_networks string[]

    Array of withdrawal payment networks (null if not applicable)

    payment_network_identifier_value string

    Payment network identifier value

    bank_details object
    Bank details object
    institutional_street_address string

    Institutional street address

    bank_street_address string

    Bank street address

    account_holder_address string

    Account holder address

    bank_account_address object

    Bank account address object

    intermediate_bank object

    Intermediate bank information

    intermediate_bank_options array

    Array of intermediate bank options

    created_at int64required

    Account creation timestamp (ms).

    updated_at int64required

    Account last update timestamp (ms).

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "123456",
  "method": "private/fiat/fiat-get-bank-accounts",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_networks": "usd_cubix"
  }
}
HTTP
POST /private/fiat/fiat-get-bank-accounts HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "123456",
  "method": "private/fiat/fiat-get-bank-accounts",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1640995200000",
  "params": {
    "payment_networks": "usd_cubix"
  }
}

Staking

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 to retrieve the list of tokens available for staking, including minimum stake amounts and reward rates.

2. Stake Tokens Call private/staking/stake to lock tokens and begin earning rewards. The request is processed asynchronously.

3. Monitor Position Use private/staking/get-staking-position to view your total staked balance and private/staking/get-open-stake to track pending stake requests.

4. Unstake Tokens Call 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:

History​

EndpointDescription
private/staking/get-stake-historyPast stake and unstake requests
private/staking/get-reward-historyEarned staking rewards
private/staking/get-convert-historyPast conversion requests

public/staking/get-conversion-rate

POST 

/public/staking/get-conversion-rate

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "public/staking/get-conversion-rate"

    params objectrequired
    instrument_name stringrequired

    Liquid staking token instrument name

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. instrument_name, conversion_rate.
    instrument_name string

    e.g. CDCETH

    conversion_rate decimal

    Conversion rate between staked token (e.g. ETH.staked) and liquid staking token (e.g. CDCETH).

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "public/staking/get-conversion-rate",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "CDCETH"
  }
}
HTTP
POST /public/staking/get-conversion-rate HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "public/staking/get-conversion-rate",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "CDCETH"
  }
}

private/staking/stake

POST 

/private/staking/stake

Create a request to earn token rewards by staking on-chain in the Exchange.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/stake"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name stringrequired

    Staking instrument name, e.g. SOL.staked.

    quantity decimalrequired

    Stake quantity

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. staking_id, instrument_name, status, quantity, underlying_inst_name, pre_stake_charge, etc.
    staking_id string

    Request id

    instrument_name string

    Staking instrument name, e.g. SOL.staked

    status StakingStatus (string)

    Possible values: [NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED]

    • Possible values:
    • ➖ NEW: Request created
    • ➖ PENDING: In progress
    • ➖ PENDING_WITHDRAWAL: Withdrawal pending
    • ➖ PENDING_UNSTAKING: Unstaking pending
    • ➖ STAKED: Staked
    • ➖ COMPLETED: Completed
    • ➖ REJECTED: Rejected
    • Possible values by operations:
    • ➖ private/staking/stake: NEW, PENDING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/unstake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/get-open-stake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED
    • ➖ private/staking/get-stake-history: COMPLETED, REJECTED
    quantity decimal

    Stake quantity

    underlying_inst_name string

    Underlying instrument name of staking, e.g. SOL

    pre_stake_charge_rate_in_bps int32

    Pre stake charge rate in basis point.

    pre_stake_charge decimal

    Pre stake charge value.

    reason string

    Reason for the status, e.g. NO_ERROR

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/staking/stake",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "SOL.staked",
    "quantity": "1"
  }
}
HTTP
POST /private/staking/stake HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/staking/stake",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "SOL.staked",
    "quantity": "1"
  }
}

private/staking/unstake

POST 

/private/staking/unstake

Create a request to unlock staked token.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/unstake"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name stringrequired

    Staking instrument name, e.g. SOL.staked.

    quantity decimalrequired

    Unstake quantity. For yield-bearing instruments, quantity in terms of original staked token. E.g. for TSTON.staked, specify the TSTON.staked quantity to unstake; you will receive the equivalent in TON when the request completes.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. staking_id, instrument_name, status, quantity, underlying_inst_name, reason.
    staking_id string

    Request id

    instrument_name string

    Staking instrument name, e.g. SOL.staked

    status StakingStatus (string)

    Possible values: [NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED]

    • Possible values:
    • ➖ NEW: Request created
    • ➖ PENDING: In progress
    • ➖ PENDING_WITHDRAWAL: Withdrawal pending
    • ➖ PENDING_UNSTAKING: Unstaking pending
    • ➖ STAKED: Staked
    • ➖ COMPLETED: Completed
    • ➖ REJECTED: Rejected
    • Possible values by operations:
    • ➖ private/staking/stake: NEW, PENDING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/unstake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/get-open-stake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED
    • ➖ private/staking/get-stake-history: COMPLETED, REJECTED
    quantity decimal

    Unstake quantity. For yield-bearing instruments, in terms of original staked token. E.g. for TSTON.staked, this shows the quantity of TON you will receive when the request completes.

    underlying_inst_name string

    Underlying instrument name, e.g. SOL

    reason string

    Reason for the status, e.g. NO_ERROR

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/staking/unstake",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "SOL.staked",
    "quantity": "1"
  }
}
HTTP
POST /private/staking/unstake HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/staking/unstake",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "SOL.staked",
    "quantity": "1"
  }
}

private/staking/get-staking-position

POST 

/private/staking/get-staking-position

Get the total staking position for a user/token

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-staking-position"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    Staking instrument name, e.g. SOL.staked

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array of staking positions.
    data object[]
    List of staking positions.
  • Array [
  • instrument_name string

    Staking instrument name, e.g. SOL.staked

    underlying_inst_name string

    Underlying instrument name, e.g. SOL

    staked_quantity decimal

    Total staked quantity. For yield-bearing instruments, staked_quantity, pending_unstaked_quantity, and reward_eligible_quantity are in terms of yield-bearing tokens held. E.g. for TSTON.staked, the quantity of TSTON held on-chain.

    pending_staked_quantity decimal

    Total pending staked quantity

    pending_unstaked_quantity decimal

    Total pending unstaked quantity

    reward_eligible_quantity decimal

    Total reward eligible quantity; quantity can be unstaked/convert

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/staking/get-staking-position",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "SOL.staked"
  }
}
HTTP
POST /private/staking/get-staking-position HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/staking/get-staking-position",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {
    "instrument_name": "SOL.staked"
  }
}

private/staking/get-staking-instruments

POST 

/private/staking/get-staking-instruments

Get staking instruments information

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-staking-instruments"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    No parameters; use empty object
Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array of staking instruments.
    data object[]
    List of staking instruments.
  • Array [
  • instrument_name string

    Staking instrument name, e.g. SOL.staked

    underlying_inst_name string

    Underlying instrument name, e.g. SOL

    reward_inst_name string

    Reward instrument name, e.g. SOL.staked

    out_of_stock boolean

    Disabled stake - true or false

    block_unstake boolean

    Disabled unstake - true or false

    est_rewards decimal

    Estimated rewards

    apr_y AprUnit (string)

    Possible values: [APR, APY]

    APR or APY

    min_stake_amt decimal

    Minimum stake amount

    reward_frequency int32

    Estimated reward frequency (day)

    lock_up_period int32

    Estimated lock up period (day)

    is_compound_reward boolean

    Is reward compounded - true or false

    pre_stake_charge_enable boolean

    Is pre stake charge applied - true or false

    pre_stake_charge_rate_in_bps int32

    Pre stake charge rate in basis point

    is_restaked boolean

    Is restaked instrument - true or false

    additional_rewards object[]
    Additional reward entries; each has reward_inst_name.
  • Array [
  • reward_inst_name string

    Additional reward instrument name

  • ]
  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "id": "1",
  "method": "private/staking/get-staking-instruments",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {}
}
HTTP
POST /private/staking/get-staking-instruments HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

{
  "id": "1",
  "method": "private/staking/get-staking-instruments",
  "api_key": "YOUR_API_KEY",
  "sig": "DIGITAL_SIGNATURE",
  "nonce": "1739923200000",
  "params": {}
}

private/staking/get-open-stake

POST 

/private/staking/get-open-stake

Get stake/unstake requests that status is not in final state.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-open-stake"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    Staking instrument name, e.g. SOL.staked

    start_time int64

    Start time in Unix format (inclusive), ms or ns. Default: end_time - 30 days. Min: end_time - 180 days.

    end_time int64

    End time in Unix format (inclusive), ms or ns. Default: current system timestamp.

    limit int32

    Max number of requests returned. Default: 20. Max: 500.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array of open stake entries.
    data object[]
    List of open stake entries.
  • Array [
  • instrument_name string

    Staking instrument name, e.g. SOL.staked

    underlying_inst_name string

    Underlying instrument name, e.g. SOL

    cycle_id string

    Cycle id

    staking_id string

    Request id

    status StakingStatus (string)

    Possible values: [NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED]

    • Possible values:
    • ➖ NEW: Request created
    • ➖ PENDING: In progress
    • ➖ PENDING_WITHDRAWAL: Withdrawal pending
    • ➖ PENDING_UNSTAKING: Unstaking pending
    • ➖ STAKED: Staked
    • ➖ COMPLETED: Completed
    • ➖ REJECTED: Rejected
    • Possible values by operations:
    • ➖ private/staking/stake: NEW, PENDING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/unstake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/get-open-stake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED
    • ➖ private/staking/get-stake-history: COMPLETED, REJECTED
    account string

    Account id

    quantity decimal

    Stake/unstake quantity. For yield-bearing instruments, in terms of original staked token. E.g. when unstaking TSTON.staked, quantity is denominated in TON.

    side StakingSide (string)

    Possible values: [STAKE, UNSTAKE]

    STAKE or UNSTAKE

    create_timestamp_ms int64

    Request creation timestamp in milliseconds in Unix time format.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/staking/get-open-stake HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/staking/get-stake-history

POST 

/private/staking/get-stake-history

Get stake/unstake request history

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-stake-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    Staking instrument name, e.g. SOL.staked

    start_time int64

    Start time in Unix format (inclusive), ms or ns. Default: end_time - 30 days. Min: end_time - 180 days.

    end_time int64

    End time in Unix format (inclusive), ms or ns. Default: current system timestamp.

    limit int32

    Max number of requests returned. Default: 20. Max: 500.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array of stake history entries.
    data object[]
    List of stake history entries.
  • Array [
  • instrument_name string

    Staking instrument name, e.g. SOL.staked

    underlying_inst_name string

    Underlying instrument name, e.g. SOL

    cycle_id string

    Cycle id

    staking_id string

    Request id

    status StakingStatus (string)

    Possible values: [NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED]

    • Possible values:
    • ➖ NEW: Request created
    • ➖ PENDING: In progress
    • ➖ PENDING_WITHDRAWAL: Withdrawal pending
    • ➖ PENDING_UNSTAKING: Unstaking pending
    • ➖ STAKED: Staked
    • ➖ COMPLETED: Completed
    • ➖ REJECTED: Rejected
    • Possible values by operations:
    • ➖ private/staking/stake: NEW, PENDING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/unstake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED, COMPLETED, REJECTED
    • ➖ private/staking/get-open-stake: NEW, PENDING, PENDING_WITHDRAWAL, PENDING_UNSTAKING, STAKED
    • ➖ private/staking/get-stake-history: COMPLETED, REJECTED
    account string

    Account id

    quantity decimal

    Stake/unstake quantity. For yield-bearing instruments, in terms of original staked token. After unstaking, shows amount received (e.g. TON for TSTON.staked).

    side StakingSide (string)

    Possible values: [STAKE, UNSTAKE]

    STAKE or UNSTAKE

    create_timestamp_ms int64

    Request creation timestamp in milliseconds in Unix time format.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/staking/get-stake-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/staking/get-reward-history

POST 

/private/staking/get-reward-history

Get stake/unstake request history

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-reward-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    instrument_name string

    Staking instrument name, e.g. SOL.staked.

    start_time int64

    Start time in Unix format (inclusive), ms or ns. Default: end_time - 30 days. Min: end_time - 180 days.

    end_time int64

    End time in Unix format (inclusive), ms or ns. Default: current system timestamp.

    limit int32

    Max number of requests returned. Default: 20. Max: 500.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array (reward_quantity, staked_balance, etc.).
    data object[]
    List of reward history entries.
  • Array [
  • staking_inst_name string

    Staking instrument name, e.g. SOL.staked.

    underlying_inst_name string

    Underlying instrument name, e.g. SOL.

    reward_inst_name string

    Reward instrument name, e.g. SOL.staked.

    reward_quantity decimal

    Reward quantity.

    staked_balance decimal

    Staked balance.

    event_timestamp_ms int64

    Event timestamp in milliseconds in Unix time format.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/staking/get-reward-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/staking/convert

POST 

/private/staking/convert

Create a request to convert between staked token with liquid staking token.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/convert"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    from_instrument_name stringrequired

    Instrument name to convert from, e.g. ETH.staked or CDCETH.

    to_instrument_name stringrequired

    Instrument name to convert to: CDCETH if from is ETH.staked, ETH.staked if from is CDCETH.

    expected_rate decimalrequired

    Expected conversion rate, from public/staking/get-conversion-rate.

    from_quantity decimalrequired

    Quantity to be converted in from_instrument_name.

    slippage_tolerance_bps decimalrequired

    Maximum slippage allowed in basis point.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. from_instrument_name, to_instrument_name, expected_rate, from_quantity, slippage_tolerance_bps, convert_id, reason per doc.
    from_instrument_name string

    Instrument name to convert from, e.g. ETH.staked

    to_instrument_name string

    Instrument name to convert to, e.g. CDCETH

    expected_rate decimal

    Expected conversion rate

    from_quantity decimal

    Quantity to be converted in from_instrument_name

    slippage_tolerance_bps int32

    Maximum slippage allowed in basis point

    convert_id string

    Convert request id

    reason string

    Reason for the status, e.g. NO_ERROR

    message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/staking/convert HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/staking/get-open-convert

POST 

/private/staking/get-open-convert

Get convert request that status is not in final state.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-open-convert"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    start_time int64

    Start time in Unix format (inclusive), ms or ns. Default: end_time - 30 days. Min: end_time - 180 days.

    end_time int64

    End time in Unix format (inclusive), ms or ns. Default: current system timestamp.

    limit int32

    Max number of requests returned. Default: 20. Max: 500.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array of open convert entries.
    data object[]
    List of open convert entries.
  • Array [
  • from_instrument_name string

    Instrument name to convert from, e.g. ETH.staked or CDCETH

    to_instrument_name string

    Instrument name to convert to, e.g. CDCETH

    expected_rate decimal

    Expected conversion rate

    from_quantity decimal

    Quantity to be converted in from_instrument_name

    slippage_tolerance_bps int32

    Maximum slippage allowed in basis point

    actual_rate decimal

    Actual conversion rate

    to_quantity decimal

    Quantity converted to to_instrument_name

    convert_id string

    Convert request id

    status ConvertStatus (string)

    Possible values: [NEW, COMPLETED, REJECTED]

    Status of a convert request (used wherever convert_id is present).

    • ➖ NEW: Request created
    • ➖ COMPLETED: Conversion completed
    • ➖ REJECTED: Conversion rejected
    • Possible values by operations:
    • ➖ private/staking/get-open-convert: NEW
    • ➖ private/staking/get-convert-history: COMPLETED, REJECTED
    create_timestamp_ms int64

    Request creation timestamp in milliseconds in Unix time format.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/staking/get-open-convert HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/staking/get-convert-history

POST 

/private/staking/get-convert-history

Get convert request history

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/staking/get-convert-history"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1771761038000".

    params objectrequired
    start_time int64

    Start time in Unix format (inclusive), ms or ns. Default: end_time - 30 days. Min: end_time - 180 days.

    end_time int64

    End time in Unix format (inclusive), ms or ns. Default: current system timestamp.

    limit int32

    Max number of requests returned. Default: 20. Max: 500.

Success.
Schema
    id int64

    Echoed request id

    method string

    Method invoked

    code int32

    0 = success; non-zero indicates error (reason code).

    result object
    Present when code === 0. data array of convert history entries.
    data object[]
    List of convert history entries.
  • Array [
  • from_instrument_name string

    Instrument name to convert from, e.g. ETH.staked or CDCETH

    to_instrument_name string

    Instrument name to convert to, e.g. CDCETH or ETH.staked

    expected_rate decimal

    Expected conversion rate

    from_quantity decimal

    Quantity to be converted in from_instrument_name

    slippage_tolerance_bps int32

    Maximum slippage allowed in basis point

    actual_rate decimal

    Actual conversion rate

    to_quantity decimal

    Quantity converted to to_instrument_name

    convert_id string

    Convert request id

    status ConvertStatus (string)

    Possible values: [NEW, COMPLETED, REJECTED]

    Status of a convert request (used wherever convert_id is present).

    • ➖ NEW: Request created
    • ➖ COMPLETED: Conversion completed
    • ➖ REJECTED: Conversion rejected
    • Possible values by operations:
    • ➖ private/staking/get-open-convert: NEW
    • ➖ private/staking/get-convert-history: COMPLETED, REJECTED
    create_timestamp_ms int64

    Request creation timestamp in milliseconds in Unix time format.

  • ]
  • message string

    Response message. Contains additional reason when code !== 0.

    original string

    Present when code !== 0.

JSON
{
  "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"
  }
}
HTTP
POST /private/staking/get-convert-history HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

Trading Bot API

Manage automated trading bots including DCA (Dollar-Cost Averaging), TWAP (Time-Weighted Average Price), GRID, and Funding Arbitrage strategies.

Bot Types​

TypeDescription
DCADollar-Cost Averaging - automatically buys or sells at regular intervals over a preset time frame
TWAPTime-Weighted Average Price - executes large orders by splitting them into smaller slices over a defined time window
GRIDGrid Trading - automatically places buy and sell orders within a defined price range
FUNDING_ARBITRAGEFunding Arbitrage - simultaneously holds a spot position and an opposing perpetual swap position to capture funding rate income

Bot States​

StateDescription
RUNNINGBot is actively placing orders
PAUSEDBot is paused, no new orders will be placed
TERMINATEDBot has been terminated

private/bot/create-trading-bot (DCA)

POST 

/private/bot/create-trading-bot

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/create-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Display name of the trading bot. 4-15 characters; letters, numbers,

    settings object required
    Bot-type-specific settings. Schema depends on bot_type parameter
    oneOf
    is_basket booleanrequired

    Whether this is a basket DCA bot (multiple instruments)

    allocations object[]required
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • investment_currency stringrequired

    Currency used for investment

    side string

    Possible values: [BUY, SELL]

    BUY or SELL. Required when is_basket is false

    type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT. Required when is_basket is false

    auto_stake boolean

    Whether to automatically stake earned tokens. Required when is_basket is false

    price decimal

    Limit price. Required when type is LIMIT

    quantity decimal

    Quantity per order. Either quantity or total_investment is required

    total_investment decimal

    Total investment amount. Either quantity or total_investment is required

    investment_frequency_mode InvestmentFrequencyMode (string)required

    Possible values: [FIXED_DURATION, MONTHLY]

    Investment frequency mode for DCA bots:

    • FIXED_DURATION: Fixed interval in milliseconds
    • MONTHLY: Monthly investment
    investment_frequency int64

    Interval between orders in milliseconds. Required when investment_frequency_mode is FIXED_DURATION

    first_investment_time int64

    Unix timestamp in milliseconds for the first order

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price. Not supported for basket bots

    take_profit_price decimal

    Take-profit price. Not supported for basket bots

    simplified_mode boolean

    Whether to use simplified mode

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object
    bot_id string

    Newly created Trading Bot ID

JSON
{
  "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
    }
  }
}
HTTP
POST /private/bot/create-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/create-trading-bot (TWAP)

POST 

/private/bot/create-trading-bot

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/create-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Display name of the trading bot. 4-15 characters; letters, numbers,

    settings object required
    Bot-type-specific settings. Schema depends on bot_type parameter
    oneOf
    is_basket booleanrequired

    Whether this is a basket DCA bot (multiple instruments)

    allocations object[]required
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • investment_currency stringrequired

    Currency used for investment

    side string

    Possible values: [BUY, SELL]

    BUY or SELL. Required when is_basket is false

    type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT. Required when is_basket is false

    auto_stake boolean

    Whether to automatically stake earned tokens. Required when is_basket is false

    price decimal

    Limit price. Required when type is LIMIT

    quantity decimal

    Quantity per order. Either quantity or total_investment is required

    total_investment decimal

    Total investment amount. Either quantity or total_investment is required

    investment_frequency_mode InvestmentFrequencyMode (string)required

    Possible values: [FIXED_DURATION, MONTHLY]

    Investment frequency mode for DCA bots:

    • FIXED_DURATION: Fixed interval in milliseconds
    • MONTHLY: Monthly investment
    investment_frequency int64

    Interval between orders in milliseconds. Required when investment_frequency_mode is FIXED_DURATION

    first_investment_time int64

    Unix timestamp in milliseconds for the first order

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price. Not supported for basket bots

    take_profit_price decimal

    Take-profit price. Not supported for basket bots

    simplified_mode boolean

    Whether to use simplified mode

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object
    bot_id string

    Newly created Trading Bot ID

JSON
{
  "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
    }
  }
}
HTTP
POST /private/bot/create-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/create-trading-bot (GRID)

POST 

/private/bot/create-trading-bot

Creates a new GRID Trading Bot that automatically places buy and sell orders within a defined price range.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/create-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Display name of the trading bot. 4-15 characters; letters, numbers,

    settings object required
    Bot-type-specific settings. Schema depends on bot_type parameter
    oneOf
    is_basket booleanrequired

    Whether this is a basket DCA bot (multiple instruments)

    allocations object[]required
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • investment_currency stringrequired

    Currency used for investment

    side string

    Possible values: [BUY, SELL]

    BUY or SELL. Required when is_basket is false

    type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT. Required when is_basket is false

    auto_stake boolean

    Whether to automatically stake earned tokens. Required when is_basket is false

    price decimal

    Limit price. Required when type is LIMIT

    quantity decimal

    Quantity per order. Either quantity or total_investment is required

    total_investment decimal

    Total investment amount. Either quantity or total_investment is required

    investment_frequency_mode InvestmentFrequencyMode (string)required

    Possible values: [FIXED_DURATION, MONTHLY]

    Investment frequency mode for DCA bots:

    • FIXED_DURATION: Fixed interval in milliseconds
    • MONTHLY: Monthly investment
    investment_frequency int64

    Interval between orders in milliseconds. Required when investment_frequency_mode is FIXED_DURATION

    first_investment_time int64

    Unix timestamp in milliseconds for the first order

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price. Not supported for basket bots

    take_profit_price decimal

    Take-profit price. Not supported for basket bots

    simplified_mode boolean

    Whether to use simplified mode

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object
    bot_id string

    Newly created Trading Bot ID

JSON
{
  "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
    }
  }
}
HTTP
POST /private/bot/create-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/create-trading-bot (FUNDING_ARBITRAGE)

POST 

/private/bot/create-trading-bot

Creates a new Funding Arbitrage Trading Bot that simultaneously holds a spot position and an opposing perpetual swap position to capture funding rate income.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/create-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Display name of the trading bot. 4-15 characters; letters, numbers,

    settings object required
    Bot-type-specific settings. Schema depends on bot_type parameter
    oneOf
    is_basket booleanrequired

    Whether this is a basket DCA bot (multiple instruments)

    allocations object[]required
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • investment_currency stringrequired

    Currency used for investment

    side string

    Possible values: [BUY, SELL]

    BUY or SELL. Required when is_basket is false

    type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT. Required when is_basket is false

    auto_stake boolean

    Whether to automatically stake earned tokens. Required when is_basket is false

    price decimal

    Limit price. Required when type is LIMIT

    quantity decimal

    Quantity per order. Either quantity or total_investment is required

    total_investment decimal

    Total investment amount. Either quantity or total_investment is required

    investment_frequency_mode InvestmentFrequencyMode (string)required

    Possible values: [FIXED_DURATION, MONTHLY]

    Investment frequency mode for DCA bots:

    • FIXED_DURATION: Fixed interval in milliseconds
    • MONTHLY: Monthly investment
    investment_frequency int64

    Interval between orders in milliseconds. Required when investment_frequency_mode is FIXED_DURATION

    first_investment_time int64

    Unix timestamp in milliseconds for the first order

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price. Not supported for basket bots

    take_profit_price decimal

    Take-profit price. Not supported for basket bots

    simplified_mode boolean

    Whether to use simplified mode

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object
    bot_id string

    Newly created Trading Bot ID

JSON
{
  "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"
      }
    }
  }
}
HTTP
POST /private/bot/create-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/update-trading-bot (DCA)

POST 

/private/bot/update-trading-bot

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/update-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Updated display name for the bot. 4-15 characters; letters, numbers,

    settings object
    Bot-type-specific settings to update. TWAP and FUNDING_ARBITRAGE bots do not support updating settings.
    oneOf
    allocations object[]
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT

    price decimal

    Limit price

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price

    take_profit_price decimal

    Take-profit price

    auto_stake boolean

    Whether to automatically stake earned tokens

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    investment_frequency int64

    Interval between orders in milliseconds

    quantity decimal

    Quantity per order

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
    }
  }
}
HTTP
POST /private/bot/update-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/update-trading-bot (TWAP)

POST 

/private/bot/update-trading-bot

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/update-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Updated display name for the bot. 4-15 characters; letters, numbers,

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
  }
}
HTTP
POST /private/bot/update-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/update-trading-bot (GRID)

POST 

/private/bot/update-trading-bot

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/update-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Updated display name for the bot. 4-15 characters; letters, numbers,

    settings object
    Bot-type-specific settings to update. TWAP and FUNDING_ARBITRAGE bots do not support updating settings.
    oneOf
    allocations object[]
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT

    price decimal

    Limit price

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price

    take_profit_price decimal

    Take-profit price

    auto_stake boolean

    Whether to automatically stake earned tokens

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    investment_frequency int64

    Interval between orders in milliseconds

    quantity decimal

    Quantity per order

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
    }
  }
}
HTTP
POST /private/bot/update-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/update-trading-bot (FUNDING_ARBITRAGE)

POST 

/private/bot/update-trading-bot

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.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/update-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    notify_on_bot_change booleanrequired

    Whether to receive push notifications on bot state changes

    display_name string

    Updated display name for the bot. 4-15 characters; letters, numbers,

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
  }
}
HTTP
POST /private/bot/update-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/terminate-trading-bot

POST 

/private/bot/terminate-trading-bot

Terminates a Trading Bot. All open orders placed by the bot are cancelled.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/terminate-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    close_position boolean

    For FUNDING_ARBITRAGE - whether to close open positions on termination

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
  }
}
HTTP
POST /private/bot/terminate-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/pause-trading-bot

POST 

/private/bot/pause-trading-bot

Pauses a running Trading Bot. The bot's open orders are cancelled and no new orders will be placed until resumed.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/pause-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
  }
}
HTTP
POST /private/bot/pause-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/resume-trading-bot

POST 

/private/bot/resume-trading-bot

Resumes a paused Trading Bot. The bot will restart placing orders according to its configured strategy.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/resume-trading-bot"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    bot_type BotType (string)required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

JSON
{
  "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"
  }
}
HTTP
POST /private/bot/resume-trading-bot HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/get-trading-bots

POST 

/private/bot/get-trading-bots

Returns a list of Trading Bots filtered by type and state. Results are sorted by update time in descending order.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/get-trading-bots"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64

    Find by Trading Bot ID. When provided, state is not required.

    bot_types BotType (string)[]required

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Filter by bot type

    state BotState (string)[]

    Possible values: [RUNNING, PAUSED, TERMINATED]

    Filter by bot state. Required when bot_id is not provided.

    page integer

    Default value: 0

    Page number

    page_size integer

    Default value: 20

    Page size. Max 500.

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object
    bot_list object[]
    List of trading bots
  • Array [
  • bot_id string

    Trading Bot ID

    bot_type BotType (string)

    Possible values: [DCA, TWAP, GRID, FUNDING_ARBITRAGE]

    Trading bot type:

    • DCA: Dollar Cost Averaging
    • TWAP: Time-Weighted Average Price
    • GRID: Grid trading
    • FUNDING_ARBITRAGE: Funding arbitrage
    display_name string

    Display name of the trading bot

    state BotState (string)

    Possible values: [RUNNING, PAUSED, TERMINATED]

    Trading bot state:

    • RUNNING: Bot is actively placing orders
    • PAUSED: Bot is paused and not placing orders
    • TERMINATED: Bot has been permanently stopped
    reason string

    Termination reason (only present for terminated bots)

    create_time int64

    Create time in milliseconds (UTC)

    update_time int64

    Last update time in milliseconds (UTC)

    end_time int64

    End time in milliseconds (UTC). 0 if still active.

    migrated boolean

    Whether the bot was migrated

    settings object
    Bot-type-specific settings
    oneOf
    is_basket booleanrequired

    Whether this is a basket DCA bot (multiple instruments)

    allocations object[]required
    Array of instrument allocations
  • Array [
  • instrument_name stringrequired

    Instrument name

    allocated_percentage decimalrequired

    Percentage allocated (must sum to 100 across all allocations)

  • ]
  • investment_currency stringrequired

    Currency used for investment

    side string

    Possible values: [BUY, SELL]

    BUY or SELL. Required when is_basket is false

    type string

    Possible values: [MARKET, LIMIT]

    MARKET or LIMIT. Required when is_basket is false

    auto_stake boolean

    Whether to automatically stake earned tokens. Required when is_basket is false

    price decimal

    Limit price. Required when type is LIMIT

    quantity decimal

    Quantity per order. Either quantity or total_investment is required

    total_investment decimal

    Total investment amount. Either quantity or total_investment is required

    investment_frequency_mode InvestmentFrequencyMode (string)required

    Possible values: [FIXED_DURATION, MONTHLY]

    Investment frequency mode for DCA bots:

    • FIXED_DURATION: Fixed interval in milliseconds
    • MONTHLY: Monthly investment
    investment_frequency int64

    Interval between orders in milliseconds. Required when investment_frequency_mode is FIXED_DURATION

    first_investment_time int64

    Unix timestamp in milliseconds for the first order

    investment_duration int64

    Total duration. In number of months when investment_frequency_mode is MONTHLY; in milliseconds when FIXED_DURATION.

    max_order string

    Maximum number of orders to place

    stop_price decimal

    Stop-loss price. Not supported for basket bots

    take_profit_price decimal

    Take-profit price. Not supported for basket bots

    simplified_mode boolean

    Whether to use simplified mode

    execution_summary object
    Bot execution summary (varies by bot type)
    property name* any

    Bot execution summary (varies by bot type)

  • ]
JSON
{
  "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
  }
}
HTTP
POST /private/bot/get-trading-bots HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

private/bot/get-trading-bot-executions

POST 

/private/bot/get-trading-bot-executions

Returns the order execution history for a specific Trading Bot.

Request​

Body

required
    id int64required

    Request id (echoed in response)

    method stringrequired

    Must be "private/bot/get-trading-bot-executions"

    api_key stringrequired

    Your API key (only required for private REST)

    sig stringrequired

    HMAC-SHA256 signature in hex (only required for private REST)

    nonce int64required

    Current timestamp in milliseconds, e.g. "1610905028000".

    params objectrequired
    bot_id int64required

    Trading Bot ID

    order_status OrderStatus (string)[]

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Filter by order status

    basket_bot_filter object
    Filter for basket DCA bots
    include_child_symbols string[]

    List of instrument symbols to include

    page integer

    Default value: 0

    Page number

    page_size integer

    Default value: 20

    Page size. Max 500.

Success.
Schema
    id int64

    Original request identifier

    method string

    Method name

    code int32

    0 for success; error code otherwise

    message string

    Error message for non-zero codes

    result object
    execution_list object[]
    List of bot executions
  • Array [
  • instrument_name string

    Instrument display name

    symbol string

    Instrument symbol

    execution_time int64

    Execution time in milliseconds (UTC)

    schedule_time int64

    Scheduled execution time in milliseconds (UTC)

    order_status OrderStatus (string)

    Possible values: [PENDING, NEW, ACTIVE, FILLED, CANCELED, REJECTED, EXPIRED]

    Order status

    side string

    Possible values: [BUY, SELL]

    Order side

    price decimal

    Order price

    quantity decimal

    Order quantity

    avg_price decimal

    Average fill price

    cum_qty decimal

    Cumulative filled quantity

    order_id string

    Exchange order ID

    update_time int64

    Last update time in milliseconds (UTC)

    executed_percentage decimal

    Percentage of the order quantity that has been filled

  • ]
JSON
{
  "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
  }
}
HTTP
POST /private/bot/get-trading-bot-executions HTTP/1.1
Host: api.crypto.com/exchange/v1
Content-Type: application/json

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

Transaction History

History will be stored for recent 6 months record only. For records over 6 months, please contact our support team.