curl --request POST \
--url https://whitebit.com/api/v4/trade-account/order/history \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"market": "BTC_USDT",
"clientOrderId": "customId11",
"orderId": 4986126152,
"status": "FILLED",
"startDate": 1697000000,
"endDate": 1699000000,
"offset": 0,
"limit": 50,
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/trade-account/order/history"
payload = {
"market": "BTC_USDT",
"clientOrderId": "customId11",
"orderId": 4986126152,
"status": "FILLED",
"startDate": 1697000000,
"endDate": 1699000000,
"offset": 0,
"limit": 50,
"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({
market: 'BTC_USDT',
clientOrderId: 'customId11',
orderId: 4986126152,
status: 'FILLED',
startDate: 1697000000,
endDate: 1699000000,
offset: 0,
limit: 50,
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/trade-account/order/history', 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/trade-account/order/history",
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([
'market' => 'BTC_USDT',
'clientOrderId' => 'customId11',
'orderId' => 4986126152,
'status' => 'FILLED',
'startDate' => 1697000000,
'endDate' => 1699000000,
'offset' => 0,
'limit' => 50,
'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/trade-account/order/history"
payload := strings.NewReader("{\n \"market\": \"BTC_USDT\",\n \"clientOrderId\": \"customId11\",\n \"orderId\": 4986126152,\n \"status\": \"FILLED\",\n \"startDate\": 1697000000,\n \"endDate\": 1699000000,\n \"offset\": 0,\n \"limit\": 50,\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/trade-account/order/history")
.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 \"market\": \"BTC_USDT\",\n \"clientOrderId\": \"customId11\",\n \"orderId\": 4986126152,\n \"status\": \"FILLED\",\n \"startDate\": 1697000000,\n \"endDate\": 1699000000,\n \"offset\": 0,\n \"limit\": 50,\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/trade-account/order/history")
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 \"market\": \"BTC_USDT\",\n \"clientOrderId\": \"customId11\",\n \"orderId\": 4986126152,\n \"status\": \"FILLED\",\n \"startDate\": 1697000000,\n \"endDate\": 1699000000,\n \"offset\": 0,\n \"limit\": 50,\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_body{
"BTC_USDT": [
{
"amount": "0.0009",
"price": "40000",
"type": "limit",
"id": 4986126152,
"clientOrderId": "customId11",
"side": "sell",
"ctime": 1597486960.311311,
"ftime": 1597486960.311332,
"dealFee": "0.041258268",
"dealStock": "0.0009",
"dealMoney": "41.258268",
"postOnly": false,
"ioc": false,
"status": "CANCELED",
"feeAsset": "USDT",
"positionSide": "BOTH",
"rpi": false,
"reduceOnly": false
},
{
"amount": "0.05",
"price": "39000",
"type": "limit",
"id": 4986126890,
"clientOrderId": "",
"side": "buy",
"ctime": 1597486100.100011,
"ftime": 1597486700.400022,
"dealFee": "0",
"dealStock": "0",
"dealMoney": "0",
"postOnly": false,
"ioc": false,
"status": "MAINTENANCE",
"feeAsset": "USDT",
"positionSide": "BOTH",
"rpi": false,
"reduceOnly": false
}
]
}{
"code": 30,
"message": "Validation failed",
"errors": {
"orderHistory": [
"OrderHistory was not found."
]
}
}{
"code": 30,
"message": "Validation failed",
"errors": {}
}Query executed orders
The endpoint retrieves the history of executed and cancelled orders across spot, margin, and futures markets. The response groups orders by market name. Use the market parameter to filter by a single trading pair, or omit the parameter to retrieve orders across all markets. The endpoint supports pagination with limit (default 50, max 500) and offset parameters. Results are ordered by time, newest first.
Rate limit: 12000 requests/10 sec.
Requests with limit values above 100 return large payloads. Use high limits only when necessary and ensure the client application can handle large response sizes.
This endpoint supports pagination. Use limit (default: 50, max: 500) and offset (default: 0) to page through results. The response does not include a total field — detect the last page when fewer than limit records are returned (sum the records across all markets when no market filter is set). An empty response means you have paged past the end; receiving exactly limit records does not guarantee that another page exists.
Date filter window: the maximum span between startDate and endDate is 31 days, and the earliest reachable date is 6 months ago (00:00 UTC). Requests that exceed the 31-day window or fall below the 6-month floor are rejected with a validation error. endDate values greater than the current time are silently clamped to now.
For B2B accounts, canceled orders are not recorded in the history. To obtain canceled-order data, contact support or the assigned account manager.
curl --request POST \
--url https://whitebit.com/api/v4/trade-account/order/history \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"market": "BTC_USDT",
"clientOrderId": "customId11",
"orderId": 4986126152,
"status": "FILLED",
"startDate": 1697000000,
"endDate": 1699000000,
"offset": 0,
"limit": 50,
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/trade-account/order/history"
payload = {
"market": "BTC_USDT",
"clientOrderId": "customId11",
"orderId": 4986126152,
"status": "FILLED",
"startDate": 1697000000,
"endDate": 1699000000,
"offset": 0,
"limit": 50,
"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({
market: 'BTC_USDT',
clientOrderId: 'customId11',
orderId: 4986126152,
status: 'FILLED',
startDate: 1697000000,
endDate: 1699000000,
offset: 0,
limit: 50,
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/trade-account/order/history', 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/trade-account/order/history",
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([
'market' => 'BTC_USDT',
'clientOrderId' => 'customId11',
'orderId' => 4986126152,
'status' => 'FILLED',
'startDate' => 1697000000,
'endDate' => 1699000000,
'offset' => 0,
'limit' => 50,
'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/trade-account/order/history"
payload := strings.NewReader("{\n \"market\": \"BTC_USDT\",\n \"clientOrderId\": \"customId11\",\n \"orderId\": 4986126152,\n \"status\": \"FILLED\",\n \"startDate\": 1697000000,\n \"endDate\": 1699000000,\n \"offset\": 0,\n \"limit\": 50,\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/trade-account/order/history")
.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 \"market\": \"BTC_USDT\",\n \"clientOrderId\": \"customId11\",\n \"orderId\": 4986126152,\n \"status\": \"FILLED\",\n \"startDate\": 1697000000,\n \"endDate\": 1699000000,\n \"offset\": 0,\n \"limit\": 50,\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/trade-account/order/history")
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 \"market\": \"BTC_USDT\",\n \"clientOrderId\": \"customId11\",\n \"orderId\": 4986126152,\n \"status\": \"FILLED\",\n \"startDate\": 1697000000,\n \"endDate\": 1699000000,\n \"offset\": 0,\n \"limit\": 50,\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_body{
"BTC_USDT": [
{
"amount": "0.0009",
"price": "40000",
"type": "limit",
"id": 4986126152,
"clientOrderId": "customId11",
"side": "sell",
"ctime": 1597486960.311311,
"ftime": 1597486960.311332,
"dealFee": "0.041258268",
"dealStock": "0.0009",
"dealMoney": "41.258268",
"postOnly": false,
"ioc": false,
"status": "CANCELED",
"feeAsset": "USDT",
"positionSide": "BOTH",
"rpi": false,
"reduceOnly": false
},
{
"amount": "0.05",
"price": "39000",
"type": "limit",
"id": 4986126890,
"clientOrderId": "",
"side": "buy",
"ctime": 1597486100.100011,
"ftime": 1597486700.400022,
"dealFee": "0",
"dealStock": "0",
"dealMoney": "0",
"postOnly": false,
"ioc": false,
"status": "MAINTENANCE",
"feeAsset": "USDT",
"positionSide": "BOTH",
"rpi": false,
"reduceOnly": false
}
]
}{
"code": 30,
"message": "Validation failed",
"errors": {
"orderHistory": [
"OrderHistory was not found."
]
}
}{
"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
Trading pair to filter by. Format: BASE_QUOTE (e.g., BTC_USDT). Omit to retrieve orders across all markets.
"BTC_USDT"
Look up a specific order by the custom client identifier. When supplied, the endpoint switches to single-order lookup mode and the startDate, endDate, and status filters are ignored. Returns 422 with "OrderHistory was not found." if no order matches. Ignored when orderId is also provided.
"customId11"
Look up a specific order by the exchange-assigned identifier. When supplied, the endpoint switches to single-order lookup mode and the startDate, endDate, and status filters are ignored. Returns an empty result on no match (no 422). Takes precedence over clientOrderId when both are supplied.
4986126152
Filter list-mode results by order status. Ignored when orderId or clientOrderId is supplied. MAINTENANCE returns only the orders the platform canceled during planned market maintenance; those orders are not part of the CANCELED result set, which covers user and automatic cancellations.
ALL, FILLED, CANCELED, PARTIALLY_FILLED, MAINTENANCE "FILLED"
Start of the query window as a Unix timestamp in seconds. Default: now - 1 month. The earliest reachable date is 6 months ago (00:00 UTC) — requests with an older startDate are rejected with a validation error.
1697000000
End of the query window as a Unix timestamp in seconds. Default: now. Values greater than the current time are silently clamped to now. The maximum span between startDate and endDate is 31 days.
1699000000
Number of records to skip. Default: 0.
x >= 00
Maximum number of records to return. Default: 50. Minimum: 1. Maximum: 500.
1 <= x <= 50050
"{{request}}"
1594297865000
Response
Successful response - returns order history grouped by market. Empty response if order is not yours.
Object with market names as keys, each containing an array of orders
Show child attributes
Show child attributes
Was this page helpful?