curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id} \
--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}"
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}', 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}"
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))
}{
"id": "VW44KPQC4C62K6",
"iiban": "AA88 N84G AET3 RAOA",
"name": "My Vault 1",
"status": "created",
"created_at": "2026-01-15T12:34:56Z",
"attributes": [
"token_vesting"
],
"description": "Primary cold vault",
"deposit_lock_rekeying_only": false
}{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "Invalid request parameter."
},
"detail": "Invalid request parameter.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:PermissionDenied",
"status": 403,
"title": "Forbidden",
"data": {
"message": "Permission denied."
},
"detail": "The caller is not authorized to perform this action.",
"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": {},
"detail": "Downstream custody service is temporarily unreachable; retry with backoff.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}Get vault
Returns metadata for a single vault the authenticated user can access. Initiator and Reviewer API users must be a member of the vault.
Rate limit: 200 requests per 30 seconds per IP.
curl --request GET \
--url https://api.kraken.com/v0/insto/custody/vaults/{vault_id} \
--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}"
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}', 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}"
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))
}{
"id": "VW44KPQC4C62K6",
"iiban": "AA88 N84G AET3 RAOA",
"name": "My Vault 1",
"status": "created",
"created_at": "2026-01-15T12:34:56Z",
"attributes": [
"token_vesting"
],
"description": "Primary cold vault",
"deposit_lock_rekeying_only": false
}{
"type": "tag:kraken.com,2025:BadRequest",
"status": 400,
"title": "Bad Request",
"data": {
"message": "Invalid request parameter."
},
"detail": "Invalid request parameter.",
"instance": "https://debug.kraken.com/req/01HXYZABCDEF"
}{
"type": "tag:kraken.com,2025:PermissionDenied",
"status": 403,
"title": "Forbidden",
"data": {
"message": "Permission denied."
},
"detail": "The caller is not authorized to perform this action.",
"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": {},
"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"
Response
OK. Returns vault metadata for the requested vault.
Vault identifier, a V-prefixed 14-char base32 string with a final check character. This is the canonical ID used in vault-scoped endpoints (the {vault_id} path parameter).
"VW44KPQC4C62K6"
Vault IIBAN, 16-char alphanumeric in 4x4 groups. A funding account number for the same vault as id. It is not interchangeable with id in path parameters.
"AA88 N84G AET3 RAOA"
Human-readable vault name.
"My Vault 1"
Vault lifecycle status.
"created"
Vault creation time as an RFC 3339 UTC timestamp (Z offset required), e.g. 2026-01-15T12:34:56Z.
"2026-01-15T12:34:56Z"
Vault attribute labels (e.g. token_vesting).
["token_vesting"]
Optional vault description.
"Primary cold vault"
Whether the vault's deposits are restricted to rekeying only. Null when not set.
false
Was this page helpful?