Advanced Wallets - Generate Wallet

post/api/v1/{coin}/advancedwallet/generate

Create a new advanced wallet. Calling this endpoint does the following:

  1. Generates user keychain in isolated AWM, then sends to KMS (encrypts private key, stores public key mapping).
  2. Generates backup keychain in isolated AWM, then sends to KMS (encrypts private key, stores public key mapping).
  3. Uploads the user and backup public keys to BitGo.
  4. Creates the BitGo key on the BitGo service.
  5. Creates the wallet on BitGo with the 3 keys.

Path Parameters

  • coinstringRequired

Request Body

label string required
A human-readable label for the wallet This will be displayed in the BitGo dashboard and API responses
Example: My Wallet
multisigType string required
The type of multisig wallet to create - onchain: Traditional multisig wallets using on-chain scripts - tss: Threshold Signature Scheme wallets using MPC protocols If absent, BitGo uses the default wallet type for the asset
Allowed values: onchain tss
Example: tss
enterprise string required
Enterprise ID - Required for Ethereum wallets Ethereum wallets can only be created under an enterprise Each enterprise has a fee address which will be used to pay for transaction fees Your enterprise ID can be seen by clicking on the "Manage Organization" link on the enterprise dropdown
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
disableTransactionNotifications boolean
Flag for disabling wallet transaction notifications When true, BitGo will not send email/SMS notifications for wallet transactions
Example: false
isDistributedCustody boolean
True, if the wallet type is a distributed-custodial If passed, you must also pass the 'enterprise' parameter Distributed custody allows multiple parties to share control of the wallet
Example: false
walletVersion number
Specify the wallet creation contract version used when creating an Ethereum wallet contract - 0: Old wallet creation (legacy) - 1: New wallet creation, only deployed upon receiving funds - 2: Same functionality as v1 but with NFT support - 3: MPC wallets
Minimum: >= 0
Maximum: <= 3
Example: 1

200 Response

wallet object required
id string required
Wallet ID
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
users array[object] required
Ids of users with access to the wallet
coin string required
Name of the blockchain the wallet is on
Example: tbtc4
label string required
Name the user assigned to the wallet
Example: My TBTC4 Wallet
m number required
Number of signatures required for the wallet to send
Example: 2
n number required
Number of signers on the wallet
Example: 3
keys array[string] required
Ids of wallet keys
Example: ["59cd72485007a239fb00282ed480da1f"]
keySignatures dictionary<string, any> required
Signatures for the backup and BitGo public keys signed by the user key
enterprise string required
organization string required
bitgoOrg string required
tags array[string] required
Tags set on the wallet
Example: ["59cd72485007a239fb00282ed480da1f"]
disableTransactionNotifications boolean required
Flag for disabling wallet transaction notifications
Example: false
freeze dictionary<string, any> required
Freeze state (used to stop the wallet from spending)
Example: {}
deleted boolean required
Flag which indicates the wallet has been deleted
Example: false
approvalsRequired number required
Number of admin approvals required for an action to fire
Example: 1
isCold boolean required
Flag for identifying cold wallets
Example: false
coinSpecific dictionary<string, any> required
Coin-specific data
admin dictionary<string, any> required
Admin data (wallet policies)
Example: {}
allowBackupKeySigning boolean required
Flag for allowing signing with backup key
Example: false
clientFlags array[string] required
recoverable boolean required
Flag indicating whether this wallet's user key is recoverable with the passphrase held by the user.
startDate string required
Time when this wallet was created
hasLargeNumberOfAddresses boolean required
Flag indicating that this wallet is large (more than 100,000 addresses). If this is set, some APIs may omit properties which are expensive to calculate for wallets with many addresses (for example, the total address counts returned by the List Addresses API).
config dictionary<string, any> required
Custom configuration options for this wallet
balanceString string required
Wallet balance as string
Example: 0
confirmedBalanceString string required
Confirmed wallet balance as string
Example: 0
spendableBalanceString string required
Spendable wallet balance as string
Example: 0
receiveAddress object required
balance number
Wallet balance as number
Example: 0
rbfBalance number
rbfBalanceString string
reservedBalanceString string
lockedBalanceString string
stakedBalanceString string
unspentCount number
pendingChainInitialization boolean
pendingEcdsaTssInitialization boolean
pendingApprovals array[object]
multisigType string
multisigTypeVersion string
type string
subType string
creator string
walletFullyCreated boolean
userKeychain object required
id string required
Keychain ID
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
source string required
Party that created the key
Example: user
type string required
Keychain type (e.g. "independent" for onchain, "tss" for MPC)
pub string
Public part of a key pair (onchain wallets)
Example: xpub661MyMwAqRbcGMVhmc7wqQRYMtcX9LAvSj1pjB213y5TsrkV2uuzJjWnjBrT1FUeNWGPjaVm5p7o6jdNcQJrV1cy3a1R8NQ9m7LuYKA8RpH
ethAddress string
Ethereum address corresponding to this keychain (onchain wallets)
Example: 0xf5b7cca8621691f9dde304cb7128b6bb3d409363
coin string
Asset ticker for this keychain (onchain wallets)
commonKeychain string
Common keychain string (TSS wallets)
backupKeychain object required
id string required
Keychain ID
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
source string required
Party that created the key
Example: user
type string required
Keychain type (e.g. "independent" for onchain, "tss" for MPC)
pub string
Public part of a key pair (onchain wallets)
Example: xpub661MyMwAqRbcGMVhmc7wqQRYMtcX9LAvSj1pjB213y5TsrkV2uuzJjWnjBrT1FUeNWGPjaVm5p7o6jdNcQJrV1cy3a1R8NQ9m7LuYKA8RpH
ethAddress string
Ethereum address corresponding to this keychain (onchain wallets)
Example: 0xf5b7cca8621691f9dde304cb7128b6bb3d409363
coin string
Asset ticker for this keychain (onchain wallets)
commonKeychain string
Common keychain string (TSS wallets)
bitgoKeychain object required
id string required
Keychain ID
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
source string required
Party that created the key
Example: bitgo
type string required
Keychain type (e.g. "independent" for onchain, "tss" for MPC)
isBitGo boolean required
Flag for identifying keychain as created by BitGo
Example: true
isTrust boolean required
Flag for identifying keychain as trust keychain
Example: false
hsmType string required
HSM type used for the BitGo key
Example: institutional
pub string
Public part of a key pair (onchain wallets)
ethAddress string
Ethereum address corresponding to this keychain (onchain wallets)
commonKeychain string
Common keychain string (TSS wallets)
verifiedVssProofOne of
Whether VSS proof was verified (TSS wallets)
keyShares array[object]
TSS key share metadata (TSS wallets)
walletHSMGPGPublicKeySigs string
Wallet HSM GPG public key signatures (TSS wallets)
responseType string required

400 Response

error string required
The error name
details string required
Error details

404 Response

error string required
The error name
details string required
Error details

409 Response

error string required
The error name
details string required
Error details

422 Response

error string required
The error name
details string required
Error details

500 Response

error string required
The error name
details string required
Error details

501 Response

error string required
The error name
details string required
Error details