Private HTTP API V4 for trading


Base URL is https://whitebit.com (opens in a new tab)

Endpoint example: https://whitebit.com/api/v4/{endpoint} (opens in a new tab)

All endpoints return time in Unix-time format.

All endpoints return either a JSON object or array.

For receiving responses from API calls please use http method POST

Error messages V4 format


{
  "code": 0,
  "message": "MESSAGE",
  "errors": {
    "PARAM1": ["MESSAGE"],
    "PARAM2": ["MESSAGE"]
  }
}

Spot

Trading balance

[POST] /api/v4/trade-account/balance

This endpoint retrieves the trade balance by currency ticker or all balances.

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
tickerStringNoCurrency's ticker. Example: BTC

Request BODY raw:

{
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response:

Available statuses:

  • Status 200
  • Status 422 if request validation failed
  • Status 400 if inner validation failed
  • Status 503 if service temporary unavailable
{
    "...": {...},
    "BTC": {
        "available": "0.123",      // Available balance of currency for trading
        "freeze": "1"              // Balance of currency that is currently in active orders
    },
    "...": {...},
    "XMR": {
        "available": "3013",
        "freeze": "100"
    },
    "...": {...}
}
Errors:
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "ticker": ["Ticker field should be a string."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "ticker": ["Currency was not found."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
___

Create limit order

[POST] /api/v4/order/new

This endpoint creates limit trading order.

❗ Rate limit 10000 requests/10 sec.

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'
amountString/NumberYesAmount of stock currency to buy or sell. Example: '0.001' or 0.001
priceString/NumberYesPrice in money currency. Example: '9800' or 9800
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.
postOnlybooleanNoOrders are guaranteed to be the maker order when executed. Variables: 'true' / 'false' Example: 'false'.
iocbooleanNoAn immediate or cancel order (IOC) is an order that attempts to execute all or part immediately and then cancels any unfilled portion of the order. Variables: 'true' / 'false' Example: 'false'.
bboRoleIntegerNoWhen you activate the BBO option when placing Limit orders, the system automatically selects the best market prices for executing these orders in one of two ways. Variables: 1 - Queue Method / 2 - Counterparty Method. You can use 2 method with ioc flag. Example: 2.

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.01",
  "price": "40000",
  "postOnly": false,
  "ioc": false,
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if request validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "limit", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that is finished
  "dealStock": "0", // if order finished - amount in stock currency that is finished
  "amount": "0.01", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of the amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "price": "40000", // price
  "postOnly": false, // PostOnly
  "ioc": false // IOC
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
  • 32 - amount validation failed
  • 33 - price validation failed
  • 36 - clientOrderId validation failed
  • 37 - ioc and postOnly flags are both true
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field is required."],
    "market": ["Market field is required."],
    "price": ["Price field is required."],
    "side": ["Side field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "side": ["Side field should contain only 'buy' or 'sell' values."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field should be numeric string or number."]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price field should be numeric string or number."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Given amount is less than min amount 0.001",
      "Min amount step = 0.000001"
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": ["ClientOrderId field should be a string."]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "ClientOrderId field field should contain only latin letters, numbers and dashes."
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "This client order id is already used by the current account. It will become available in 24 hours (86400 seconds)."
    ]
  }
}
{
  "code": 37,
  "message": "Validation failed",
  "errors": {
    "ioc": ["Either IOC or PostOnly flag in true state is allowed."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "total": ["Total(amount * price) is less than 5.05"]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Min amount step = 0.01" // money/stock precision is not taken into consideration when order was submitted
    ]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price field should be at least 10", "Min price step = 0.000001"]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price should be greater than 0."]
  }
}
{
  "code": 35,
  "message": "Validation failed",
  "errors": {
    "maker_fee": ["Incorrect maker fee"]
  }
}
{
  "code": 10,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 11,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Amount too small."]
  }
}
{
  "code": 13,
  "message": "Inner validation failed",
  "errors": {
    "postOnly": [
      "This order couldn't be executed as a maker order and was canceled."
    ]
  }
}

Create market order

[POST] /api/v4/order/market

This endpoint creates market trading order.

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'
amountString/NumberYes⚠️ Amount of money currency to buy or amount in stock currency to sell. Example: '5 USDT' for buy (min total) and '0.001 BTC' for sell (min amount).
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "50", // I want to buy BTC for 50 USDT
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}
{
  "market": "BTC_USDT",
  "side": "sell",
  "amount": "0.01", // I want to sell 0.01 BTC
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if request validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "market", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // amount in money currency that finished
  "dealStock": "0", // amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - its rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - its rounded to zero
  "left": "0.001", // rest of amount that must be finished
  "dealFee": "0" // fee in money that you pay if order is finished
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
  • 32 - amount validation failed
  • 36 - clientOrderId validation failed
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field is required."],
    "market": ["Market field is required."],
    "side": ["Side field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "side": ["Side field should contain only 'buy' or 'sell' values."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field should be numeric string or number."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Given amount is less than min amount 0.001",
      "Min amount step = 0.000001"
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": ["ClientOrderId field should be a string."]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "ClientOrderId field field should contain only latin letters, numbers and dashes."
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "This client order id is already used by the current account. It will become available in 24 hours (86400 seconds)."
    ]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Total amount should be no less than 5.05 + trade fee"]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Min total step = = 0.000001"]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount should be greater than 0."]
  }
}
{
  "code": 10,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 11,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Amount too small."]
  }
}

Create buy stock market order

[POST] /api/v4/order/stock_market

This endpoint creates buy stock market trading order.

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
sideStringYesOrder type. Available variables: "buy", "sell"
amountString/NumberYes⚠️ Amount in stock currency for buy or sell. Example: "0.0001" or 0.0001.
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.001", // I want to buy 0.001 BTC
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if request validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "stock market", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // amount in money currency that finished
  "dealStock": "0", // amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - its rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - its rounded to zero
  "left": "0.001", // rest of amount that must be finished
  "dealFee": "0" // fee in money that you pay if order is finished
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
  • 32 - amount validation failed
  • 36 - clientOrderId validation failed
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field is required."],
    "market": ["Market field is required."],
    "side": ["Side field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "side": ["Side field should contain only 'buy' or 'sell' values."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field should be numeric string or number."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Given amount is less than min amount 0.001",
      "Min amount step = 0.000001"
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": ["ClientOrderId field should be a string."]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "ClientOrderId field field should contain only latin letters, numbers and dashes."
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "This client order id is already used by the current account. It will become available in 24 hours (86400 seconds)."
    ]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount should be greater than 0."]
  }
}
{
  "code": 10,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 11,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Amount too small."]
  }
}

Create stop-limit order

[POST] /api/v4/order/stop_limit

This endpoint creates stop-limit trading order

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'
amountString/NumberYesAmount of stock currency to buy or sell. Example: '0.001' or 0.001
priceString/NumberYesPrice in money currency. Example: '9800' or 9800
activation_priceString/NumberYesActivation price in money currency. Example: '10000' or 10000
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.001",
  "price": "40000",
  "activation_price": "40000",
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if request validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "stop limit", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that finished
  "dealStock": "0", // if order finished - amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "price": "40000", // price
  "activation_price": "40000" // activation price
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
  • 32 - amount validation failed
  • 33 - price validation failed
  • 36 - clientOrderId validation failed
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activation_price": ["Activation price field is required."],
    "amount": ["Amount field is required."],
    "market": ["Market field is required."],
    "price": ["Price field is required."],
    "side": ["Side field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "side": ["Side field should contain only 'buy' or 'sell' values."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field should be numeric string or number."]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price field should be numeric string or number."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Given amount is less than min amount 0.001",
      "Min amount step = 0.000001"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "total": ["Total(amount * price) is less than 5.05"]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": ["ClientOrderId field should be a string."]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "ClientOrderId field field should contain only latin letters, numbers and dashes."
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "This client order id is already used by the current account. It will become available in 24 hours (86400 seconds)."
    ]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount should be greater than 0."]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price field should be at least 10", "Min price step = 0.000001"]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price should be greater than 0."]
  }
}
{
  "code": 35,
  "message": "Validation failed",
  "errors": {
    "maker_fee": ["Incorrect maker fee"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": [
      "Activation price should not be equal to the last price"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activation_price": ["Activation price should be numeric string."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Activation price should be greater than 0."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Empty history"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Min activation price = 10"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Min activation price step = 0.00001"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": [
      "Activation price should not be equal to the last price"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "lastPrice": ["internal error"]
  }
}
{
  "code": 10,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 11,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Amount too small."]
  }
}

Create stop-market order

[POST] /api/v4/order/stop_market

This endpoint creates stop-market trading order

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'
amountString/NumberYes⚠️Amount of money currency to buy or amount in stock currency to sell. Example: '0.01' or 0.01 for buy and '0.0001' for sell.
activation_priceString/NumberYesActivation price in money currency. Example: '10000' or 10000
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "50", // I want to buy for 50 USDT
  "activation_price": "40000",
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}
{
  "market": "BTC_USDT",
  "side": "sell",
  "amount": "0.001", // I want to sell 0.01 BTC
  "activation_price": "40000",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 422 if inner validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom order identifier; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "stop market", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that finished
  "dealStock": "0", // if order finished - amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "activation_price": "40000" // activation price
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
  • 32 - amount validation failed
  • 36 - clientOrderId validation failed
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activation_price": ["Activation price field is required."],
    "amount": ["Amount field is required."],
    "market": ["Market field is required."],
    "side": ["Side field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "side": ["Side field should contain only 'buy' or 'sell' values."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field should be numeric string or number."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Given amount is less than min amount 0.001",
      "Min amount step = 0.000001"
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": ["ClientOrderId field should be a string."]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "ClientOrderId field field should contain only latin letters, numbers and dashes."
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "This client order id is already used by the current account. It will become available in 24 hours (86400 seconds)."
    ]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount should be greater than 0."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": [
      "Activation price should not be equal to the last price"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activation_price": ["Activation price should be numeric string."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Activation price should be greater than 0."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Empty history"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Min activation price = 10"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Min activation price step = 0.00001"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": [
      "Activation price should not be equal to the last price"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "lastPrice": ["internal error"]
  }
}
{
  "code": 10,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 11,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Amount too small."]
  }
}

Cancel order

[POST] /api/v4/order/cancel

Cancel existing order

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
orderIdString/IntYesOrder Id. Example: 4180284841 or "4180284841"

Request BODY raw:

{
  "market": "BTC_USDT",
  "orderId": 4180284841,
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response:

Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "customId11", // custom order identifier; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "stop market", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that is finished
  "dealStock": "0", // if order finished - amount in stock currency that is finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of the amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "price": "40000", // price if price isset
  "activation_price": "40000" // activation price if activation price is set
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field is required."],
    "orderId": ["OrderId field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "orderId": ["OrderId field should be an integer."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "market": [
      "Market field should be a string.",
      "Market field format is invalid."
    ]
  }
}
{
  "code": 2,
  "message": "Inner validation failed",
  "errors": {
    "orderId": ["Unexecuted order was not found."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}

Cancel all orders

[POST] /api/v4/order/cancel/all

Cancel existing order

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringNoAvailable market. Example: BTC_USDT
typeArrayNoOrder types value. Example: "spot", "margin", "futures"

Request BODY raw:

{
  "market": "BTC_USDT",
  "type": [
    "Margin",
    "Futures",
    "Spot"
  ]
}

Response:

Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if validation failed
  • Status 503 if service temporary unavailable
[]
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "type": ["The type must be an array."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "market": [
      "Market field should be a string.",
      "Market field format is invalid."
    ]
  }
}
{
  "code": 2,
  "message": "Inner validation failed",
  "errors": {
    "orderId": ["Unexecuted order was not found."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}

Query unexecuted(active) orders

[POST] /api/v4/orders

This endpoint retrieves unexecuted orders only.

❗ Rate limit 1000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringNoAvailable market. Example: BTC_USDT
orderIdString/IntNoAvailable orderId. Example: 3134995325
clientOrderIdStringNoAvailable clientOrderId. Example: customId11
limitString/IntNoLIMIT is a special clause used to limit records a particular query can return. Default: 50, Min: 1, Max: 100
offsetString/IntNoIf you want the request to return entries starting from a particular line, you can use OFFSET clause to tell it where it should start. Default: 0, Min: 0, Max: 10000

Search across all markets is available only if clientOrderId and orderId are not provided.

Request BODY raw:

{
  "market": "BTC_USDT",
  "orderId": "3134995325", //order Id (optional)
  "clientOrderId": "customId11", // custom order id; (optional)
  "offset": 0,
  "limit": 100,
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response:

Available statuses:

  • Status 200
  • Status 422 if request validation failed
  • Status 400 if inner validation failed
  • Status 503 if service temporary unavailable
[
    {
        "orderId": 3686033640,            // unexecuted order ID
        "clientOrderId": "customId11",    // custom order id; "clientOrderId": "" - if not specified.
        "market": "BTC_USDT",             // currency market
        "side": "buy",                    // order side
        "type": "limit",                  // unexecuted order type
        "timestamp": 1594605801.49815,    // current timestamp of unexecuted order
        "dealMoney": "0",                 // executed amount in money
        "dealStock": "0",                 // executed amount in stock
        "amount": "2.241379",             // active order amount
        "takerFee": "0.001",              // taker fee ratio. If the number less than 0.0001 - it will be rounded to zero
        "makerFee": "0.001",              // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
        "left": "2.241379",               // unexecuted amount in stock
        "dealFee": "0",                   // executed fee by deal
        "price": "40000",                 // unexecuted order price
        "oto": {                          // OTO order data - if stopLoss or takeProfit is specified
          "otoId": 29457221,              // ID of the OTO
          "stopLoss": "30000",            // stop loss order price - if stopLoss is specified
          "takeProfit": "50000"           // take profit order price - if takeProfit is specified
      }
    },
    {...}
]
 
Errors:
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["The market field is required."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should be a string."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field format is invalid."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "message": "Validation failed",
  "code": 31,
  "errors": {
    "market": ["Market is not available"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["The limit must be an integer."],
    "offset": ["The offset must be an integer."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["The limit may not be greater than 100."],
    "offset": ["The offset may not be greater than 10000."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["The limit must be at least 1."],
    "offset": ["The offset must be at least 0."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}

Query executed order history

[POST] /api/v4/trade-account/executed-history

This endpoint retrieves the deals history. Can be sorted by single market if needed.

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringNoRequested market. Example: BTC_USDT
clientOrderIdStringNoRequested clientOrderId. Example: customId11
limitString/IntNoLIMIT is a special clause used to limit records a particular query can return. Default: 50, Min: 1, Max: 100
offsetString/IntNoIf you want the request to return entries starting from a particular line, you can use OFFSET clause to tell it where it should start. Default: 0, Min: 0, Max: 10000

Request BODY raw:

{
  "clientOrderId": "customId11", // custom order id; (optional)
  "offset": 0,
  "limit": 100,
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response:

Available statuses:

  • Status 200
  • Status 422 if request validation failed
  • Status 400 if inner validation failed
  • Status 503 if service temporary unavailable
{
    "BTC_USDT": [
        {
            "id": 160305483,               // deal ID
            "clientOrderId": "customId11", // custom order id; "clientOrderId": "" - if not specified.
            "time": 1594667731.724403,     // Timestamp of the executed deal
            "side": "sell",                // Deal side "sell" / "buy"
            "role": 2,                     // Role - 1 - maker, 2 - taker
            "amount": "0.000076",          // amount in stock
            "price": "9264.21",            // price
            "deal": "0.70407996",          // amount in money
            "fee": "0.00070407996"         // paid fee
        },
        {...}
    ],
    "DTBC_DUSDT": [...]
}
 
 
Errors:
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit field should be an integer."],
    "offset": ["Offset field should be an integer."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field format is invalid."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should be a string."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit should not be greater than 100."],
    "offset": ["Offset should not be greater than 10000."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit should be at least 1."],
    "offset": ["Offset should be at least 0."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}

Query executed order deals

[POST] /api/v4/trade-account/order

This endpoint retrieves deals history details on pending or executed order.

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
orderIdString/IntYesOrder ID. Example: 1234
limitString/IntNoLIMIT is a special clause used to limit records a particular query can return. Default: 50, Min: 1, Max: 100
offsetString/IntNoIf you want the request to return entries starting from a particular line, you can use OFFSET clause to tell it where it should start. Default: 0, Min: 0, Max: 1000

Request BODY raw:

{
  "orderId": 3135554375,
  "offset": 0,
  "limit": 100,
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response:

Available statuses:

  • Status 200
  • Status 422 if request validation failed
  • Status 400 if inner validation failed
  • Status 503 if service temporary unavailable
{
  "records": [
    {
      "time": 1593342324.613711, // Timestamp of executed order
      "fee": "0.00000419198", // fee that you pay
      "price": "0.00000701", // price
      "amount": "598", // amount in stock
      "id": 149156519, // deal id
      "dealOrderId": 3134995325, // completed order Id
      "clientOrderId": "customId11", // custom order id; "clientOrderId": "" - if not specified.
      "role": 2, // Role - 1 - maker, 2 - taker
      "deal": "0.00419198" // amount in money
    }
  ],
  "offset": 0,
  "limit": 100
}
Errors:
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "orderId": ["Order was not found."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "orderId": ["OrderId field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "orderId": ["OrderId field should be an integer."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit should not be greater than 100."],
    "offset": ["Offset should not be greater than 10000."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit should be at least 1."],
    "offset": ["Offset should be at least 0."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}

Query executed orders

[POST] /api/v4/trade-account/order/history

This endpoint retrieves executed order history by market.

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketString/IntNoRequested available market. Example: BTC_USDT
orderIdString/IntNoRequested available orderId. Example: 3134995325
clientOrderIdStringNoRequested available clientOrderId. Example: clientOrderId
limitString/IntNoLIMIT is a special clause used to limit records a particular query can return. Default: 50, Min: 1, Max: 100
offsetString/IntNoIf you want the request to return entries starting from a particular line, you can use OFFSET clause to tell it where it should start. Default: 0, Min: 0, Max: 10000
statusStringNoPossible values: "all", "filled", "canceled"

Request BODY raw:

{
  "market": "BTC_USDT", //optional
  "orderId": "3134995325", //order Id (optional)
  "clientOrderId": "clientOrderId", // custom order id; (optional)
  "offset": 0,
  "limit": 100,
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response:

Available statuses:

  • Status 200
  • Status 422 if request validation failed
  • Status 400 if inner validation failed
  • Status 503 if service temporary unavailable

Empty response if order is not yours

{
    "BTC_USDT": [
        {
            "amount": "0.0009",               // amount of trade
            "price": "40000",                 // price
            "type": "limit",                  // order type
            "id": 4986126152,                 // order id
            "clientOrderId": "customId11",    // custom order identifier; "clientOrderId": "" - if not specified.
            "side": "sell",                   // order side
            "ctime": 1597486960.311311,       // timestamp of order creation
            "takerFee": "0.001",              // maker fee ratio. If the number less than 0.0001 - its rounded to zero
            "ftime": 1597486960.311332,       // executed order timestamp
            "makerFee": "0.001",              // maker fee ratio. If the number less than 0.0001 - its rounded to zero
            "dealFee": "0.041258268",         // paid fee if order is finished
            "dealStock": "0.0009",            // amount in stock currency that finished
            "dealMoney": "41.258268",         // amount in money currency that finished
            "postOnly": false,                // PostOnly flag
            "ioc": false,                     // IOC flag
            "status": "canceled"             // Order status: either "filled" or "canceled"
        },
        {...}
    ]
}
 
 
Errors:
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit field should be an integer."],
    "offset": ["Offset field should be an integer."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field format is invalid."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should be a string."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit should not be greater than 100."],
    "offset": ["Offset should not be greater than 10000."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "limit": ["Limit should be at least 1."],
    "offset": ["Offset should be at least 0."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}

Collateral

Collateral Account Balance

[POST] /api/v4/collateral-account/balance

This endpoint returns a current collateral balance

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Parameters

NameTypeMandatoryDescription
tickerStringNoAsset to be filtered. For example: BTC

Request BODY raw:

{
  "ticker": "BTC",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 422 if inner validation failed
  • Status 503 if service temporary unavailable
{
  "BTC": 1,
  "USDT": 1000
}
Errors:
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "ticker": [
      "ticker is invalid."
    ]
  }
}

Collateral Account Balance Summary

[POST] /api/v4/collateral-account/balance-summary

This endpoint returns a current collateral balance summary

Parameters

NameTypeMandatoryDescription
tickerStringNoFilter by requested asset. For example: BTC

Request BODY raw:

{
  "ticker": "BTC",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 422 if inner validation failed
  • Status 503 if service temporary unavailable
[
  {
    "asset": "BTC",
    "balance": "0",
    "borrow": "0",
    "availableWithoutBorrow": "0",
    "availableWithBorrow": "123.456"
  }
]
Errors:
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "ticker": [
      "ticker is invalid."
    ]
  }
}

Collateral Limit Order

[POST] /api/v4/order/collateral/limit

This endpoint creates limit order using collateral balance

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable margin market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'. For open long position you have to use buy, for short sell. Also to close current position you have to place opposite order with current position amount.
amountStringYes⚠️Amount of stock currency to buy or sell.
priceStringYesPrice in money currency. Example: '9800'
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.
stopLossStringNoStop loss price, if exist create OTO with stop loss
takeProfitStringNoTake profit price, if exist create OTO with take profit
postOnlybooleanNoOrders are guaranteed to be the maker order when executed. Variables: true / false Example: false.
iocbooleanNoAn immediate or cancel order (IOC) is an order that attempts to execute all or part immediately and then cancels any unfilled portion of the order. Variables: 'true' / 'false' Example: 'false'.
bboRoleIntegerNoWhen you activate the BBO option when placing Limit orders, the system automatically selects the best market prices for executing these orders in one of two ways. Variables: 1 - Queue Method / 2 - Counterparty Method. You can use 2 method with ioc flag. Example: 1.

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.01",
  "price": "40000",
  "postOnly": false,
  "ioc": false,
  "clientOrderId": "order1987111",
  "stopLoss": "50000",
  "takeProfit": "30000",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 422 if inner validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "limit", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that is finished
  "dealStock": "0", // if order finished - amount in stock currency that is finished
  "amount": "0.01", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of the amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "price": "40000", // price
  "postOnly": false, // PostOnly
  "ioc": false // IOC
  "oto": { // OTO order data - if stopLoss or takeProfit is specified
    "otoId": 29457221, // ID of the OTO
    "stopLoss": "30000", // stop loss order price - if stopLoss is specified
    "takeProfit": "50000" // take profit order price - if takeProfit is specified
  }
}
Errors:

Error codes:

  • 31 - market is disabled for trading
  • 32 - incorrect amount (it is less than or equals zero or its precision is too big)
  • 33 - incorrect price (it is less than or equals zero or its precision is too big)
  • 36 - incorrect clientOrderId (invalid string or not unique id)
  • 37 - ioc and postOnly flags are both true

Detailed information about errors response you can find in Create limit order


Collateral Market Order

[POST] /api/v4/order/collateral/market

This endpoint creates market trading order.

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable margin market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'. For open long position you have to use buy, for short sell. Also to close current position you have to place opposite order with current position amount.
amountStringYes⚠️Amount of stock currency to buy or sell.
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.
stopLossStringNoStop loss price, if exist create OTO with stop loss
takeProfitStringNoTake profit price, if exist create OTO with take profit

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.01", // I want to buy 0.01 BTC
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}
{
  "market": "BTC_USDT",
  "side": "sell",
  "amount": "0.01", // I want to sell 0.01 BTC
  "clientOrderId": "order1987111",
  "stopLoss": "50000",
  "takeProfit": "40000",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 422 if internal validation failed
  • Status 503 if service is temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "sell", // order side
  "type": "market", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // amount in money currency that finished
  "dealStock": "0", // amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - its rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - its rounded to zero
  "left": "0.001", // rest of amount that must be finished
  "dealFee": "0" // fee in money that you pay if order is finished
  "oto": { // OTO order data - if stopLoss or takeProfit is specified
    "otoId": 29457221, // ID of the OTO
    "stopLoss": "50000", // stop loss order price - if stopLoss is specified
    "takeProfit": "40000" // take profit order price - if takeProfit is specified
  }
}
Errors:

Error codes:

  • 31 - market is disabled for trading
  • 32 - incorrect amount (it is less than or equals zero or its precision is too big)
  • 33 - incorrect price (it is less than or equals zero or its precision is too big)
  • 36 - incorrect clientOrderId (invalid string or not unique id)

Detailed information about errors response you can find in Create market order



Collateral Stop-Limit Order

[POST] /api/v4/order/collateral/stop-limit

This endpoint creates collateral stop-limit trading order

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'
amountString/NumberYesAmount of stock currency to buy or sell. Example: '0.001' or 0.001
priceString/NumberYesPrice in money currency. Example: '9800' or 9800
activation_priceString/NumberYesActivation price in money currency. Example: '10000' or 10000
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.
stopLossString/NumberNoStop loss price, if exist create OTO with stop loss
takeProfitString/NumberNoTake profit price, if exist create OTO with take profit

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.001",
  "price": "40000",
  "activation_price": "40000",
  "stopLoss": "30000",
  "takeProfit": "50000",
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 400 if inner validation failed
  • Status 422 if request validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom client order id; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "buy", // order side
  "type": "stop limit", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that finished
  "dealStock": "0", // if order finished - amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // taker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "price": "40000", // price
  "activation_price": "40000" // activation price
  "oto": { // OTO order data - if stopLoss or takeProfit is specified
    "otoId": 29457221, // ID of the OTO
    "stopLoss": "30000", // stop loss order price - if stopLoss is specified
    "takeProfit": "50000" // take profit order price - if takeProfit is specified
  }
}
Errors:

Error codes:

  • 30 - default validation error code
  • 31 - market validation failed
  • 32 - amount validation failed
  • 33 - price validation failed
  • 36 - clientOrderId validation failed
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activation_price": ["Activation price field is required."],
    "amount": ["Amount field is required."],
    "market": ["Market field is required."],
    "price": ["Price field is required."],
    "side": ["Side field is required."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "side": ["Side field should contain only 'buy' or 'sell' values."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount field should be numeric string or number."]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price field should be numeric string or number."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market is not available."]
  }
}
{
  "code": 31,
  "message": "Validation failed",
  "errors": {
    "market": ["Market field should not be empty string."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "Given amount is less than min amount 0.001",
      "Min amount step = 0.000001"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "total": ["Total(amount * price) is less than 5.05"]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": ["ClientOrderId field should be a string."]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "ClientOrderId field field should contain only latin letters, numbers and dashes."
    ]
  }
}
{
  "code": 36,
  "message": "Validation failed",
  "errors": {
    "clientOrderId": [
      "This client order id is already used by the current account. It will become available in 24 hours (86400 seconds)."
    ]
  }
}
{
  "code": 32,
  "message": "Validation failed",
  "errors": {
    "amount": ["Amount should be greater than 0."]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price field should be at least 10", "Min price step = 0.000001"]
  }
}
{
  "code": 33,
  "message": "Validation failed",
  "errors": {
    "price": ["Price should be greater than 0."]
  }
}
{
  "code": 35,
  "message": "Validation failed",
  "errors": {
    "maker_fee": ["Incorrect maker fee"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": [
      "Activation price should not be equal to the last price"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activation_price": ["Activation price should be numeric string."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Activation price should be greater than 0."]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Empty history"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Min activation price = 10"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": ["Min activation price step = 0.00001"]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "activationPrice": [
      "Activation price should not be equal to the last price"
    ]
  }
}
{
  "code": 30,
  "message": "Validation failed",
  "errors": {
    "lastPrice": ["internal error"]
  }
}
{
  "code": 10,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough balance."]
  }
}
{
  "code": 1,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Invalid argument."]
  }
}
{
  "code": 11,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Amount too small."]
  }
}

Collateral Trigger Market Order

[POST] /api/v4/order/collateral/trigger-market

This endpoint creates margin trigger market order

❗ Rate limit 10000 requests/10 sec.

Response is cached for: NONE

Parameters:

NameTypeMandatoryDescription
marketStringYesAvailable margin market. Example: BTC_USDT
sideStringYesOrder type. Variables: 'buy' / 'sell' Example: 'buy'. For open long position you have to use buy, for short sell. Also to close current position you have to place opposite order with current position amount.
amountStringYes⚠️Amount of stock currency to buy or sell.
activation_priceStringYesActivation price in money currency. Example: '10000'
clientOrderIdStringNoIdentifier should be unique and contain letters, dashes or numbers only. The identifier must be unique for the next 24 hours.
stopLossStringNoStop loss price, if exist create OTO with stop loss
takeProfitStringNoTake profit price, if exist create OTO with take profit

Request BODY raw:

{
  "market": "BTC_USDT",
  "side": "buy",
  "amount": "0.01", // I want to buy 0.01 BTC
  "activation_price": "40000",
  "clientOrderId": "order1987111",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}
{
  "market": "BTC_USDT",
  "side": "sell",
  "amount": "0.01", // I want to sell 0.01 BTC
  "activation_price": "40000",
  "stopLoss": "50000",
  "takeProfit": "30000",
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 422 if inner validation failed
  • Status 503 if service temporary unavailable
{
  "orderId": 4180284841, // order id
  "clientOrderId": "order1987111", // custom order identifier; "clientOrderId": "" - if not specified.
  "market": "BTC_USDT", // deal market
  "side": "sell", // order side
  "type": "stop market", // order type
  "timestamp": 1595792396.165973, // current timestamp
  "dealMoney": "0", // if order finished - amount in money currency that finished
  "dealStock": "0", // if order finished - amount in stock currency that finished
  "amount": "0.001", // amount
  "takerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "makerFee": "0.001", // maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
  "left": "0.001", // if order not finished - rest of amount that must be finished
  "dealFee": "0", // fee in money that you pay if order is finished
  "activation_price": "40000" // activation price
  "oto": { // OTO order data - if stopLoss or takeProfit is specified
    "otoId": 29457221, // ID of the OTO
    "stopLoss": "50000", // stop loss order price - if stopLoss is specified
    "takeProfit": "30000" // take profit order price - if takeProfit is specified
  }
}
Errors:

Error codes:

  • 31 - market is disabled for trading
  • 32 - incorrect amount (it is less than or equals zero or its precision is too big)
  • 33 - incorrect price (it is less than or equals zero or its precision is too big)
  • 36 - incorrect clientOrderId (invalid string or not unique id)

Collateral Account Summary

[POST] /api/v4/collateral-account/summary

This endpoint retrieves summary of collateral account

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Request BODY raw:

{
  "request": "{{request}}",
  "nonce": "{{nonce}}"
}

Response: Available statuses:

  • Status 200
  • Status 503 if service temporary unavailable
{
  "equity": "130970.8947456254113367", // total equity of collateral balance including lending funds in USDT
  "margin": "456.58349", // amount of funds in open position USDT
  "freeMargin": "129681.3285348840110099", // free funds for trading according to
  "unrealizedFunding": "0.0292207414003268", // funding that will be paid on next position stage change (order, liquidation, etc)
  "pnl": "-832.9535", // curren profit and loss in USDT
  "leverage": 10, // current leverage of account which affect amount of lending funds
  "marginFraction": "6.2446758120916304", // margin fraction
  "maintenanceMarginFraction": "1.2446758120916304" // maintenance margin fraction
}

Open Positions

[POST] /api/v4/collateral-account/positions/open

This endpoint returns all open positions

❗ Rate limit 12000 requests/10 sec.

Response is cached for: NONE

Parameters: