Skip to main content
Setting up an Org-Controlled MPC wallet is four API calls plus one key ceremony. This page walks the whole chain once, states what each step produces, and names the automatic behaviors โ€” the parts that are easy to miss when assembling the flow from individual API reference pages.

1. Create a vault

Use Create vault:
This produces a vault whose root_pubkeys is empty โ€” the vault has no keys yet and cannot hold wallets until key generation completes.

2. Create the key share holder group

Use Create key share holder group:
  • Cobo is prepended automatically as the first holder; list only your own holders. participants counts all holders including Cobo.
  • The threshold must be at least 2 โ€” a single-party group is rejected.
  • Holder type is one of Cobo, Mobile, API (exact case; API is an acronym). Mobile means a phone running Cobo Guard, and every signature will need that phone; API means a TSS Node you run โ€” see Run a co-signer on your development machine for a local one.
  • Creating the group is the nodeโ€™s registration: a TSS Node listed here stops being refused by the relay (โ€œnot bound to any appโ€) the moment the group exists. The group starts in status: New.

3. Run the key generation ceremony

Use Create TSS request:
All holders must be online (the holder group listing shows online per holder). Poll the request until it finishes:
Typical duration with both parties online is about 20 seconds. On success the vault carries two root_pubkeys (SECP256K1 and ED25519) and the group becomes Valid.

4. What happens automatically after key generation

  • A default wallet is created under the vault โ€” you do not need to create the first wallet yourself.
  • The default wallet comes with mainnet addresses (ETH, BTC, SOL) already generated. Testnet addresses are not created automatically.
  • Test-token airdrops apply only to the first vault of an organization. A second vaultโ€™s default wallet starts empty โ€” fund it yourself; waiting for an airdrop there waits forever.

5. Addresses

Create additional addresses on the walletโ€™s address-creation operation, for example a Sepolia address:
Address derivation is server-side from the vaultโ€™s root public key: receiving works even while your co-signer is offline. Signing (withdrawals, message signing) requires the signer holders to be online.

Failure modes worth knowing