curl --request POST \
--url https://api.kraken.com/0/private/BalanceEx \
--header 'API-Key: <api-key>' \
--header 'API-Sign: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"nonce": 123,
"rebase_multiplier": "rebased"
}
'import requests
url = "https://api.kraken.com/0/private/BalanceEx"
payload = {
"nonce": 123,
"rebase_multiplier": "rebased"
}
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'API-Key': '<api-key>',
'API-Sign': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({nonce: 123, rebase_multiplier: 'rebased'})
};
fetch('https://api.kraken.com/0/private/BalanceEx', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/0/private/BalanceEx"
payload := strings.NewReader("{\n \"nonce\": 123,\n \"rebase_multiplier\": \"rebased\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<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))
}{
"error": [],
"result": {
"ZUSD": {
"balance": 25435.21,
"hold_trade": 8249.76
},
"XXBT": {
"balance": 1.2435,
"hold_trade": 0.8423
}
}
}Get Extended Balance
Retrieve all extended account balances, including credits and held amounts. Balance available for trading is calculated as: available balance = balance + credit - credit_used - hold_trade
Note that held amounts only include spot non margin orders.
Note on Staking/Earn assets: We have begun to migrate assets from our legacy Staking system over to a new Earn system. As such, the following assets may appear in your balances and ledger. Please see our Support article for more details. Note that these assets are “read-only”, to interact with your balances in them please use the base asset (e.g. USDT to transact with your USDT and USDT.F balances).
Symbol Extensions:
.B: balances in new yield-bearing products, similar to.S(staked) and.M(opt-in rewards) balances.F: balances earning automatically in Kraken Rewards.T: tokenized assets.
API Key Permissions Required: Funds permissions - Query
curl --request POST \
--url https://api.kraken.com/0/private/BalanceEx \
--header 'API-Key: <api-key>' \
--header 'API-Sign: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"nonce": 123,
"rebase_multiplier": "rebased"
}
'import requests
url = "https://api.kraken.com/0/private/BalanceEx"
payload = {
"nonce": 123,
"rebase_multiplier": "rebased"
}
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'API-Key': '<api-key>',
'API-Sign': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({nonce: 123, rebase_multiplier: 'rebased'})
};
fetch('https://api.kraken.com/0/private/BalanceEx', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/0/private/BalanceEx"
payload := strings.NewReader("{\n \"nonce\": 123,\n \"rebase_multiplier\": \"rebased\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<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))
}{
"error": [],
"result": {
"ZUSD": {
"balance": 25435.21,
"hold_trade": 8249.76
},
"XXBT": {
"balance": 1.2435,
"hold_trade": 0.8423
}
}
}Authorizations
The "API-Key" header should contain your API key.
Authenticated requests should be signed with the "API-Sign" header, using a signature generated with your private key, nonce, encoded payload, and URI path.
Query Parameters
Public wallet account ID. Omit to use the authenticated user's default wallet. See List Wallet Accounts.
Body
Was this page helpful?