Create a Vault
Step-by-step guide to creating a vault and setting up wallets via the Tholos API.
This guide walks through the process of creating a vault, from the keygen ceremony to verifying your wallets.
Overview
Section titled “Overview”Creating a vault is a multi-step process:
- Initiate vault creation — choose a vault type (Standard or Flex), name, and initial members
- Key generation ceremony — all vault members participate in the MPC keygen protocol to generate distributed key shares
- Vault activation — the vault becomes active once the keygen ceremony completes
- Wallet registration — wallets are automatically created for supported blockchains
Vault types
Section titled “Vault types”Choose the vault type that fits your use case:
| Standard | Flex | |
|---|---|---|
| Signing model | All signers participate | Threshold approval + server signs |
| Policies | Not available | Spending limits, whitelists, cooldowns |
| Operational speed | Slower (all signers online) | Faster (async approval) |
| Best for | High-value cold storage | Day-to-day operations |
After creation
Section titled “After creation”Once the vault is active, you can interact with it via the API:
List wallets
Section titled “List wallets”curl https://api.tholos.app/vault/{vaultId}/wallets \ -H "Authorization: Bearer $THOLOS_API_TOKEN"Returns all wallets with their blockchain addresses. Each vault gets one wallet per supported blockchain.
Check balances
Section titled “Check balances”curl https://api.tholos.app/vault/{vaultId}/balances \ -H "Authorization: Bearer $THOLOS_API_TOKEN"Set up contacts
Section titled “Set up contacts”Add trusted addresses to the vault’s contact book for safer transactions:
curl -X POST https://api.tholos.app/vault/{vaultId}/contacts \ -H "Authorization: Bearer $THOLOS_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Operations Wallet", "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18", "chain": "ethereum" }'await fetch("https://api.tholos.app/vault/123/contacts", { method: "POST", headers: { Authorization: `Bearer ${process.env.THOLOS_API_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ name: "Operations Wallet", address: "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18", chain: "ethereum", }),});Set up policies (Flex vaults only)
Section titled “Set up policies (Flex vaults only)”If you created a Flex vault, set up governance policies:
curl -X POST https://api.tholos.app/vault/{vaultId}/policies \ -H "Authorization: Bearer $THOLOS_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Daily spending limit", "conditions": [...], "authorizedSigners": [1, 2, 3] }'See the Manage Policies guide for details.
Next steps
Section titled “Next steps”- Send a Transaction — initiate your first transaction
- Manage Policies — set up governance rules
- Vaults concept — learn more about vault internals