curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawals/info \
--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}/withdrawals/info"
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}/withdrawals/info', 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}/withdrawals/info"
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))
}[
{
"method_id": "11111111-1111-1111-1111-111111111111",
"type": "crypto",
"type_name": "Crypto",
"asset": "BTC",
"asset_class": "currency",
"name": "Bitcoin",
"name_display": "Bitcoin",
"fee_amount": "0.00010000",
"fee_asset": "BTC",
"fee_asset_class": "currency",
"fee_percentage": "0.00",
"min_amount": "0.00100000",
"max_amount": "100.00000000",
"sort_weight": 1,
"validate": {},
"validate_meta": {},
"temp_disabled_public": false,
"needs_activation": false,
"beneficiary": {
"threshold": "1000.00",
"confirmation_required": false
},
"needs_deposit": false,
"deposited": 0,
"test": false,
"withdrawal_network_info": {
"network": "Bitcoin",
"explorer": "https://www.blockchain.com/btc/tx/{tx_id}"
},
"rates": [
{
"quote_name": "USD",
"rate": "65000.00"
}
]
}
]{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "asset_class is required when asset is supplied"
},
"detail": "asset_class is required when asset is supplied",
"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:AssetNotFound",
"status": 404,
"title": "Asset Not Found",
"data": {
"message": "Asset BTC (currency) is not available for this user."
},
"detail": "No asset found for BTC with class currency.",
"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"
}Get withdrawal info
Returns withdrawal methods, fees, limits, and network metadata for a specific asset in a vault. Each entry carries the method identifier, fee structure, minimum and maximum amounts, and validation rules needed to display a withdrawal screen.
Rate limit: 200 requests per 30 seconds per IP.
curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id}/withdrawals/info \
--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}/withdrawals/info"
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}/withdrawals/info', 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}/withdrawals/info"
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))
}[
{
"method_id": "11111111-1111-1111-1111-111111111111",
"type": "crypto",
"type_name": "Crypto",
"asset": "BTC",
"asset_class": "currency",
"name": "Bitcoin",
"name_display": "Bitcoin",
"fee_amount": "0.00010000",
"fee_asset": "BTC",
"fee_asset_class": "currency",
"fee_percentage": "0.00",
"min_amount": "0.00100000",
"max_amount": "100.00000000",
"sort_weight": 1,
"validate": {},
"validate_meta": {},
"temp_disabled_public": false,
"needs_activation": false,
"beneficiary": {
"threshold": "1000.00",
"confirmation_required": false
},
"needs_deposit": false,
"deposited": 0,
"test": false,
"withdrawal_network_info": {
"network": "Bitcoin",
"explorer": "https://www.blockchain.com/btc/tx/{tx_id}"
},
"rates": [
{
"quote_name": "USD",
"rate": "65000.00"
}
]
}
]{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "asset_class is required when asset is supplied"
},
"detail": "asset_class is required when asset is supplied",
"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:AssetNotFound",
"status": 404,
"title": "Asset Not Found",
"data": {
"message": "Asset BTC (currency) is not available for this user."
},
"detail": "No asset found for BTC with class currency.",
"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
Asset code to look up withdrawal methods for (e.g. BTC, USD). Required because this endpoint resolves the funding details for a single asset; the list-methods endpoint instead treats asset as an optional filter. Must be supplied together with asset_class.
"BTC"
Asset class for the supplied asset. Currently currency is the only supported value.
"currency"
Response
Withdrawal methods and limits available for the requested asset in the vault.
Funding method identifier (matches method_id on the deposit-info contract).
"11111111-1111-1111-1111-111111111111"
Withdrawal method type code.
"crypto"
Human-readable withdrawal method type name.
"Crypto"
Asset code (e.g. BTC, USD).
"BTC"
Asset class. Currently always currency.
"currency"
Internal funding method name.
"Bitcoin"
Display name shown to end users.
"Bitcoin"
Withdrawal fee amount, fixed-precision decimal as string.
"0.00010000"
Asset code the fee is charged in.
"BTC"
Asset class of the fee asset.
"currency"
Percentage-based fee component, when applicable.
"0.00"
Minimum withdrawal amount, fixed-precision decimal as string.
"0.00100000"
Maximum withdrawal amount, fixed-precision decimal as string.
"100.00000000"
Relative sort order for display.
1
Address validation rules for this method, when available.
{}
Supplemental validation metadata for this method, when available.
{}
Whether this method is temporarily disabled for public use.
false
Whether the method requires activation before use.
false
Beneficiary confirmation requirements for this method, when applicable.
Show child attributes
Show child attributes
Whether a prior deposit is required before withdrawals are allowed.
false
Whether the activation deposit has already been made. Paired with needs_deposit.
0
Whether this method is a test-only entry.
false
Network metadata for the underlying chain, when available.
Show child attributes
Show child attributes
Indicative exchange rates quoted against other assets.
Show child attributes
Show child attributes
Was this page helpful?