curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses \
--header 'api-key: <api-key>' \
--header 'api-nonce: <api-key>' \
--header 'api-sign: <api-key>'import requests
url = "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses"
headers = {
"api-key": "<api-key>",
"api-sign": "<api-key>",
"api-nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'api-key': '<api-key>', 'api-sign': '<api-key>', 'api-nonce': '<api-key>'}
};
fetch('https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("api-sign", "<api-key>")
req.Header.Add("api-nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}[
{
"asset": "BTC",
"asset_class": "currency",
"address_name": "My BTC Wallet",
"address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
"tag": "destination-tag-42",
"description": "Primary cold storage wallet",
"beneficiary": {
"recipient": "other",
"type": "business",
"name": "Blue Moon",
"last_name": "Smith",
"vasp_name": "Self-custody",
"country": "US",
"province": "California",
"address_1": "123 Main St",
"address_2": "Apt 4B",
"city": "New York",
"postal_code": "10001"
}
}
]{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "asset_class is required when asset is supplied"
},
"detail": "asset supplied without asset_class",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:PermissionDenied",
"status": 403,
"title": "Permission Denied",
"data": {
"message": "Caller lacks read access to vault VABCDEF234567A"
},
"detail": "The caller does not have access to the requested vault.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/ReadUpstream",
"status": 500,
"title": "Internal Server Error",
"data": "<unknown>",
"detail": "Failed to read response from upstream custody service.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/Connect",
"status": 503,
"title": "Service Unavailable",
"data": "<unknown>",
"detail": "Downstream custody service is temporarily unreachable; retry with backoff.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}List whitelist addresses
Returns the whitelisted withdrawal addresses for a vault, optionally filtered by asset.
Rate limit: 200 requests per 30 seconds per IP.
curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses \
--header 'api-key: <api-key>' \
--header 'api-nonce: <api-key>' \
--header 'api-sign: <api-key>'import requests
url = "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses"
headers = {
"api-key": "<api-key>",
"api-sign": "<api-key>",
"api-nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'api-key': '<api-key>', 'api-sign': '<api-key>', 'api-nonce': '<api-key>'}
};
fetch('https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/whitelist/addresses"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("api-sign", "<api-key>")
req.Header.Add("api-nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}[
{
"asset": "BTC",
"asset_class": "currency",
"address_name": "My BTC Wallet",
"address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
"tag": "destination-tag-42",
"description": "Primary cold storage wallet",
"beneficiary": {
"recipient": "other",
"type": "business",
"name": "Blue Moon",
"last_name": "Smith",
"vasp_name": "Self-custody",
"country": "US",
"province": "California",
"address_1": "123 Main St",
"address_2": "Apt 4B",
"city": "New York",
"postal_code": "10001"
}
}
]{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "asset_class is required when asset is supplied"
},
"detail": "asset supplied without asset_class",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:PermissionDenied",
"status": 403,
"title": "Permission Denied",
"data": {
"message": "Caller lacks read access to vault VABCDEF234567A"
},
"detail": "The caller does not have access to the requested vault.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/ReadUpstream",
"status": 500,
"title": "Internal Server Error",
"data": "<unknown>",
"detail": "Failed to read response from upstream custody service.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:gateway/Connect",
"status": 503,
"title": "Service Unavailable",
"data": "<unknown>",
"detail": "Downstream custody service is temporarily unreachable; retry with backoff.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}Authorizations
Path Parameters
Vault identifier, a V-prefixed 14-char base32 string with a final check character.
"VABCDEF234567A"
Query Parameters
Filter results to a single asset code (e.g. BTC). Requires asset_class when supplied.
"BTC"
Asset class filter. Required when asset is supplied. Currently only currency is supported.
"currency"
Response
Whitelisted withdrawal addresses for the vault.
Asset code of the whitelisted address (e.g. BTC, ETH, USD).
"BTC"
Asset class. Currently always currency.
"currency"
Human-readable label assigned to the address at whitelisting time.
"My BTC Wallet"
Destination blockchain address. Omitted for entries that only carry beneficiary information.
"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
Destination tag, memo, or other secondary identifier required by chains that use one. Examples: XRP destination tag, EOS memo.
"destination-tag-42"
Free-text description provided when the address was whitelisted.
"Primary cold storage wallet"
Beneficiary details captured for the address. Omitted when no beneficiary information was provided.
Show child attributes
Show child attributes
Was this page helpful?