curl --request POST \
--url https://whitebit.com/api/v4/order/cancel/bulk \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"orders": [
{
"market": "BTC_USDT",
"orderId": 4326248250
},
{
"market": "ETH_USDT",
"clientOrderId": "my-client-id"
}
],
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/order/cancel/bulk"
payload = {
"orders": [
{
"market": "BTC_USDT",
"orderId": 4326248250
},
{
"market": "ETH_USDT",
"clientOrderId": "my-client-id"
}
],
"request": "{{request}}",
"nonce": 1594297865000
}
headers = {
"X-TXC-APIKEY": "<api-key>",
"X-TXC-PAYLOAD": "<api-key>",
"X-TXC-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-TXC-APIKEY': '<api-key>',
'X-TXC-PAYLOAD': '<api-key>',
'X-TXC-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
orders: [
{market: 'BTC_USDT', orderId: 4326248250},
{market: 'ETH_USDT', clientOrderId: 'my-client-id'}
],
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/order/cancel/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://whitebit.com/api/v4/order/cancel/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'orders' => [
[
'market' => 'BTC_USDT',
'orderId' => 4326248250
],
[
'market' => 'ETH_USDT',
'clientOrderId' => 'my-client-id'
]
],
'request' => '{{request}}',
'nonce' => 1594297865000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-TXC-APIKEY: <api-key>",
"X-TXC-PAYLOAD: <api-key>",
"X-TXC-SIGNATURE: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://whitebit.com/api/v4/order/cancel/bulk"
payload := strings.NewReader("{\n \"orders\": [\n {\n \"market\": \"BTC_USDT\",\n \"orderId\": 4326248250\n },\n {\n \"market\": \"ETH_USDT\",\n \"clientOrderId\": \"my-client-id\"\n }\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-TXC-APIKEY", "<api-key>")
req.Header.Add("X-TXC-PAYLOAD", "<api-key>")
req.Header.Add("X-TXC-SIGNATURE", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://whitebit.com/api/v4/order/cancel/bulk")
.header("X-TXC-APIKEY", "<api-key>")
.header("X-TXC-PAYLOAD", "<api-key>")
.header("X-TXC-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"orders\": [\n {\n \"market\": \"BTC_USDT\",\n \"orderId\": 4326248250\n },\n {\n \"market\": \"ETH_USDT\",\n \"clientOrderId\": \"my-client-id\"\n }\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/order/cancel/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-TXC-APIKEY"] = '<api-key>'
request["X-TXC-PAYLOAD"] = '<api-key>'
request["X-TXC-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orders\": [\n {\n \"market\": \"BTC_USDT\",\n \"orderId\": 4326248250\n },\n {\n \"market\": \"ETH_USDT\",\n \"clientOrderId\": \"my-client-id\"\n }\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_body[
{
"result": {
"orderId": 4326248250,
"clientOrderId": "my-client-id",
"market": "BTC_USDT",
"timestamp": 1595792396.165973,
"mtime": 1595792412.443301
},
"error": {
"code": 30,
"message": "Validation failed",
"errors": {}
}
}
]{
"code": 30,
"message": "Validation failed",
"errors": {}
}{
"code": 30,
"message": "Validation failed",
"errors": {}
}Cancel bulk orders
The endpoint cancels up to 100 orders in a single request. Each item identifies a target order by market plus exactly one of orderId or clientOrderId. The response is an array whose items match the input order one-to-one — response[i] corresponds to request.orders[i].
Rate limit: 10000 requests/10 sec.
Limit: From 1 to 100 orders per request.
- Provide exactly one of
orderIdorclientOrderIdper item. Sending both, or neither, returns a per-item validation error. - The endpoint always processes every item independently. There is no
stopOnFail-style switch. - When the caller is not authenticated, the API returns the standard authorization error and skips per-item validation.
timestamp and mtime on a successful item: a canceled item’s result may echo the order’s timestamp (creation time) and mtime (the last time the matching engine modified the order — the moment of cancellation, since a cancellation is an order’s final modification). Both are best-effort echoes: either may be omitted, so do not rely on either field’s presence. For a cancel response that always includes mtime, use the single Cancel order endpoint instead.
curl --request POST \
--url https://whitebit.com/api/v4/order/cancel/bulk \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"orders": [
{
"market": "BTC_USDT",
"orderId": 4326248250
},
{
"market": "ETH_USDT",
"clientOrderId": "my-client-id"
}
],
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/order/cancel/bulk"
payload = {
"orders": [
{
"market": "BTC_USDT",
"orderId": 4326248250
},
{
"market": "ETH_USDT",
"clientOrderId": "my-client-id"
}
],
"request": "{{request}}",
"nonce": 1594297865000
}
headers = {
"X-TXC-APIKEY": "<api-key>",
"X-TXC-PAYLOAD": "<api-key>",
"X-TXC-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-TXC-APIKEY': '<api-key>',
'X-TXC-PAYLOAD': '<api-key>',
'X-TXC-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
orders: [
{market: 'BTC_USDT', orderId: 4326248250},
{market: 'ETH_USDT', clientOrderId: 'my-client-id'}
],
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/order/cancel/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://whitebit.com/api/v4/order/cancel/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'orders' => [
[
'market' => 'BTC_USDT',
'orderId' => 4326248250
],
[
'market' => 'ETH_USDT',
'clientOrderId' => 'my-client-id'
]
],
'request' => '{{request}}',
'nonce' => 1594297865000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-TXC-APIKEY: <api-key>",
"X-TXC-PAYLOAD: <api-key>",
"X-TXC-SIGNATURE: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://whitebit.com/api/v4/order/cancel/bulk"
payload := strings.NewReader("{\n \"orders\": [\n {\n \"market\": \"BTC_USDT\",\n \"orderId\": 4326248250\n },\n {\n \"market\": \"ETH_USDT\",\n \"clientOrderId\": \"my-client-id\"\n }\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-TXC-APIKEY", "<api-key>")
req.Header.Add("X-TXC-PAYLOAD", "<api-key>")
req.Header.Add("X-TXC-SIGNATURE", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://whitebit.com/api/v4/order/cancel/bulk")
.header("X-TXC-APIKEY", "<api-key>")
.header("X-TXC-PAYLOAD", "<api-key>")
.header("X-TXC-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"orders\": [\n {\n \"market\": \"BTC_USDT\",\n \"orderId\": 4326248250\n },\n {\n \"market\": \"ETH_USDT\",\n \"clientOrderId\": \"my-client-id\"\n }\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/order/cancel/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-TXC-APIKEY"] = '<api-key>'
request["X-TXC-PAYLOAD"] = '<api-key>'
request["X-TXC-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orders\": [\n {\n \"market\": \"BTC_USDT\",\n \"orderId\": 4326248250\n },\n {\n \"market\": \"ETH_USDT\",\n \"clientOrderId\": \"my-client-id\"\n }\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_body[
{
"result": {
"orderId": 4326248250,
"clientOrderId": "my-client-id",
"market": "BTC_USDT",
"timestamp": 1595792396.165973,
"mtime": 1595792412.443301
},
"error": {
"code": 30,
"message": "Validation failed",
"errors": {}
}
}
]{
"code": 30,
"message": "Validation failed",
"errors": {}
}{
"code": 30,
"message": "Validation failed",
"errors": {}
}Authorizations
The public WhiteBIT API key.
Base64-encoded JSON request body.
HMAC-SHA512 signature of the payload, hex-encoded. Computed as hex(HMAC-SHA512(payload, api_secret)).
Body
Response
Bulk cancel result. The response is an array — response[i] corresponds to request.orders[i]. Each item contains either a result (cancellation succeeded) or an error (cancellation failed for that item). Partial failures within the array are normal; the request itself returns HTTP 200.
Per-item error codes: 30 (validation failure), 404 (order not found), 500 (trade service unavailable). A failed item carries an error object following the standard error shape, for example:
{ "result": null, "error": { "code": 30, "message": "Validation failed", "errors": { "market": ["validation.required"] } } }
Acknowledgement that a single item was canceled. The endpoint echoes the identifiers from the request item and, when available, the order's timestamp and mtime. Full order state is not returned. Use the single Cancel order endpoint when post-cancel order state is required.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?