Vault
21 min
vault endpoints are organization scoped use them to discover accessible vaults, create a vault, complete its approval flow, and read token level balances lifecycle a create call can return before wallets are generated treat walletsgenerated as the readiness signal; do not infer readiness from http 201 alone list vaults get /api/external/vaults/?limit={limit}\&cursor={cursor}&{filters} query parameters parameter type required description limit number no requested page size sdk default 20 cursor string | null no first page null/empty subsequent pages the preceding nextcursor filters record\<string, string> no resource filters, for example vaultname request example { "query" { "limit" 20, "cursor" null, "vaultname" "treasury" } } response interface vaultlistresponse { results vault\[]; nextcursor? string | null; hasnext? boolean; } json example { "results" \[ { "id" "vault 123", "orgid" "org 456", "suborgid" "sub org 123", "vaultname" "treasury vault", "vaulttype" "default", "wallets" \[ { "id" "wallet 123", "blockchain" "ethereum", "address" "0x1234567890abcdef1234567890abcdef12345678", "publickey" "0x04abcdef" } ], "walletsgenerated" true, "createdat" "2026 08 04t10 30 00z", "updatedat" "2026 08 04t10 35 00z", "isdeleted" false } ], "nextcursor" "eyjpzci6inzhdwx0xzeymyj9", "hasnext" true } javascript sdk getvaults( params? record\<string, string>, limit? number, cursor? string | null, ) promise\<vaultlistresponse> const firstpage = await apiclient getvaults( { vaultname "treasury" }, 20, null, ); retrieve a vault get /api/external/vaults/{vaultid}/ path parameter parameter type required description vaultid string yes id returned by a vault list or create response request example { "path" { "vaultid" "vault 123" } } response vault , including wallets, and optional suborgid { "id" "vault 123", "orgid" "org 456", "suborgid" "sub org 123", "vaultname" "treasury vault", "vaulttype" "default", "wallets" \[ { "id" "wallet 123", "blockchain" "ethereum", "address" "0x1234567890abcdef1234567890abcdef12345678", "publickey" "0x04abcdef" } ], "walletsgenerated" true, "createdat" "2026 08 04t10 30 00z", "updatedat" "2026 08 04t10 35 00z", "isdeleted" false } javascript sdk getvaultbyid(vaultid string) promise\<vault> create a vault post /api/external/vaults/ rest request body { "vaultname" "treasury vault", "suborgid" "sub org 123", "chains" \["ethereum", "polygon"], "testnetvault" false, "vaultgroupids" \["vault group 123"] } field type required description vaultname string yes human readable vault name blank names are rejected suborgid string no sub organization that owns the vault chains string\[] no requested wallet chains use identifiers from asset and chain testnetvault boolean no creates a testnet vault when supported default false vaultgroupids string\[] no organization scoped vault groups to attach response { "id" "vault 123", "orgid" "org 456", "suborgid" "sub org 123", "vaultname" "treasury vault", "vaulttype" "default", "wallets" \[], "walletsgenerated" false, "createdat" "2026 08 04t10 30 00z", "updatedat" "2026 08 04t10 30 00z", "isdeleted" false } javascript sdk interface createvaultrequest { vaultname string; suborgid? string; chains? string\[]; testnetvault? boolean; vaultgroupids? string\[]; } createvault(request createvaultrequest) promise\<vault> approval flow vault creation can produce a pending change request the sdk exposes both explicit and combined flows const vault = await apiclient createvault(request); const approvedvault = await apiclient createvaultapproval(vault); // convenience helper create, then approve const approved = await apiclient createvaultwithapproval(request); after approval, retrieve the vault until walletsgenerated === true before using its wallet addresses approval does not make wallet generation synchronous get detailed balances get /api/external/vaults/{vaultid}/detailed balances/ request example { "path" { "vaultid" "vault 123" }, "query" {} } the current endpoint requires only the vault path parameter the sdk can forward optional query parameters for compatible deployments response returns token level balances with optional market and token metadata interface detailedbalance { symbol string; balance string; name? string; chain? string; tokenaddress? string; balanceinusd? string; price? string; } type detailedbalanceresponse = detailedbalance\[]; json example \[ { "symbol" "usdc", "balance" "125 50", "name" "usd coin", "chain" "ethereum", "tokenaddress" "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" } ] javascript sdk getdetailedbalances( vaultid string, params? record\<string, string>, ) promise\<detailedbalanceresponse> getdetailedbalances( vaultid string, params? record\<string, string>, ) promise\<detailedbalanceresponse>