curl --request POST \
--url https://whitebit.com/api/v4/main-account/smart/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 '
{
"ticker": "USDT",
"request": "{{request}}",
"nonce": "{{nonce}}"
}
'import requests
url = "https://whitebit.com/api/v4/main-account/smart/plans"
payload = {
"ticker": "USDT",
"request": "{{request}}",
"nonce": "{{nonce}}"
}
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({ticker: 'USDT', request: '{{request}}', nonce: '{{nonce}}'})
};
fetch('https://whitebit.com/api/v4/main-account/smart/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/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([
'ticker' => 'USDT',
'request' => '{{request}}',
'nonce' => '{{nonce}}'
]),
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/plans"
payload := strings.NewReader("{\n \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": \"{{nonce}}\"\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/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 \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": \"{{nonce}}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/smart/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 \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": \"{{nonce}}\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "8e667b4a-0b71-4988-8af5-9474dbfaeb51",
"ticker": "USDT",
"status": 1,
"percent": "10",
"duration": 14400,
"interestTicker": "USDT",
"interestRatio": "1",
"minInvestment": "100",
"maxInvestment": "10000",
"maxPossibleInvestment": "3000"
}
]{
"code": 0,
"message": "Validation failed",
"errors": {
"ticker": [
"The selected ticker is invalid."
]
}
}Get a list of available fixed-term Smart investment plans with available terms and interest rates via the V4 API.
curl --request POST \
--url https://whitebit.com/api/v4/main-account/smart/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 '
{
"ticker": "USDT",
"request": "{{request}}",
"nonce": "{{nonce}}"
}
'import requests
url = "https://whitebit.com/api/v4/main-account/smart/plans"
payload = {
"ticker": "USDT",
"request": "{{request}}",
"nonce": "{{nonce}}"
}
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({ticker: 'USDT', request: '{{request}}', nonce: '{{nonce}}'})
};
fetch('https://whitebit.com/api/v4/main-account/smart/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/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([
'ticker' => 'USDT',
'request' => '{{request}}',
'nonce' => '{{nonce}}'
]),
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/plans"
payload := strings.NewReader("{\n \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": \"{{nonce}}\"\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/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 \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": \"{{nonce}}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/smart/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 \"ticker\": \"USDT\",\n \"request\": \"{{request}}\",\n \"nonce\": \"{{nonce}}\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "8e667b4a-0b71-4988-8af5-9474dbfaeb51",
"ticker": "USDT",
"status": 1,
"percent": "10",
"duration": 14400,
"interestTicker": "USDT",
"interestRatio": "1",
"minInvestment": "100",
"maxInvestment": "10000",
"maxPossibleInvestment": "3000"
}
]{
"code": 0,
"message": "Validation failed",
"errors": {
"ticker": [
"The selected ticker is invalid."
]
}
}id field in each returned plan object is the planId value required by the investment creation endpoint (POST /api/v4/main-account/smart/investment). Only plans returned by this endpoint can be used to create new investments — plans with inactive status or disabled API access 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
Request signature
"{{request}}"
Unique request identifier
"{{nonce}}"
Invest plan source currency's ticker. Example: BTC
"USDT"
Response
Successful response
Invest plan identifier
"1"
Source currency ticker
"BTC"
Status (1 - active, 2 - no coins left, 3 - inactive, 4 - pause)
1
Interest percent
"0.01"
Investment duration (in minutes)
40320
Target currency ticker
"BTC"
Target currency to source currency ratio
"1"
Minimum investment amount
"100"
Maximum investment amount
"10000"
Maximum investment amount due to current invest plan state
"3000"
Was this page helpful?