Get Flex Plans
curl --request POST \
--url https://whitebit.com/api/v4/main-account/smart-flex/plans \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"limit": 50,
"offset": 0,
"ticker": "USDT",
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/main-account/smart-flex/plans"
payload = {
"limit": 50,
"offset": 0,
"ticker": "USDT",
"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({
limit: 50,
offset: 0,
ticker: 'USDT',
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/main-account/smart-flex/plans', 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/main-account/smart-flex/plans",
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([
'limit' => 50,
'offset' => 0,
'ticker' => 'USDT',
'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/main-account/smart-flex/plans"
payload := strings.NewReader("{\n \"limit\": 50,\n \"offset\": 0,\n \"ticker\": \"USDT\",\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/main-account/smart-flex/plans")
.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 \"limit\": 50,\n \"offset\": 0,\n \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/smart-flex/plans")
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 \"limit\": 50,\n \"offset\": 0,\n \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_body[
{
"id": "8f2e9d3c-1a4b-4c2d-9e5f-6a7b8c9d0e1f",
"ticker": "USDT",
"minInvestment": "10.0",
"maxInvestment": "100000.0",
"maxRate": "0.15"
},
{
"id": "7e1d8c2b-9a3b-3b1c-8d4e-5a6b7c8d9e0f",
"ticker": "BTC",
"minInvestment": "0.001",
"maxInvestment": "10.0",
"maxRate": "0.12"
}
]{
"code": 0,
"message": "Validation failed",
"errors": {
"ticker": [
"The selected ticker is invalid."
],
"limit": [
"The limit must be an integer.",
"The limit may not be greater than 100."
],
"offset": [
"The offset must be an integer.",
"The offset must be at least 0."
]
}
}{
"code": 0,
"message": "You don't have permission to use this endpoint. Please contact support for more details"
}Get Flex Plans
The endpoint returns flex investment plan configurations with active status, filtered by the authenticated user’s region and plan visibility. Results include public plans and private plans assigned to the account.
Available after September 22, 2025.
Rate limit: 1000 requests/10 sec.
The API does not cache the response.
Get Flex Plans
curl --request POST \
--url https://whitebit.com/api/v4/main-account/smart-flex/plans \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"limit": 50,
"offset": 0,
"ticker": "USDT",
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/main-account/smart-flex/plans"
payload = {
"limit": 50,
"offset": 0,
"ticker": "USDT",
"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({
limit: 50,
offset: 0,
ticker: 'USDT',
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/main-account/smart-flex/plans', 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/main-account/smart-flex/plans",
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([
'limit' => 50,
'offset' => 0,
'ticker' => 'USDT',
'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/main-account/smart-flex/plans"
payload := strings.NewReader("{\n \"limit\": 50,\n \"offset\": 0,\n \"ticker\": \"USDT\",\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/main-account/smart-flex/plans")
.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 \"limit\": 50,\n \"offset\": 0,\n \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/smart-flex/plans")
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 \"limit\": 50,\n \"offset\": 0,\n \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_body[
{
"id": "8f2e9d3c-1a4b-4c2d-9e5f-6a7b8c9d0e1f",
"ticker": "USDT",
"minInvestment": "10.0",
"maxInvestment": "100000.0",
"maxRate": "0.15"
},
{
"id": "7e1d8c2b-9a3b-3b1c-8d4e-5a6b7c8d9e0f",
"ticker": "BTC",
"minInvestment": "0.001",
"maxInvestment": "10.0",
"maxRate": "0.12"
}
]{
"code": 0,
"message": "Validation failed",
"errors": {
"ticker": [
"The selected ticker is invalid."
],
"limit": [
"The limit must be an integer.",
"The limit may not be greater than 100."
],
"offset": [
"The offset must be an integer.",
"The offset must be at least 0."
]
}
}{
"code": 0,
"message": "You don't have permission to use this endpoint. Please contact support for more details"
}These endpoints are available only for B2B partner services. Fill the form at https://whitebit.com/institutional-services/b2b to request access.
The
id field in each returned plan object is the planId value required by the flex investment creation endpoint (POST /api/v4/main-account/smart-flex/investments/invest). Only plans returned by this endpoint can be used to create new investments — plans with inactive or paused status are excluded automatically.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
application/json
Request signature
Example:
"{{request}}"
Unique request identifier
Example:
1594297865000
Pagination limit.
Required range:
x <= 100Example:
50
Pagination offset.
Required range:
x >= 0Example:
0
Was this page helpful?