POST
Advanced Wallets - Generate Wallet
Create a new advanced wallet. Calling this endpoint does the following:
- Generates user keychain in isolated AWM, then sends to KMS (encrypts private key, stores public key mapping).
- Generates backup keychain in isolated AWM, then sends to KMS (encrypts private key, stores public key mapping).
- Uploads the user and backup public keys to BitGo.
- Creates the BitGo key on the BitGo service.
- Creates the wallet on BitGo with the 3 keys.
Path Params
-
coinstring required
Body Params
object
-
labelstring requiredA human-readable label for the wallet This will be displayed in the BitGo dashboard and API responses -
multisigTypestring enum requiredThe 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 assetonchaintss -
enterprisestring requiredEnterprise 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 -
disableTransactionNotificationsbooleanFlag for disabling wallet transaction notifications When true, BitGo will not send email/SMS notifications for wallet transactions -
isDistributedCustodybooleanTrue, 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 -
walletVersionnumberSpecify 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
Responses
200
OK
Response Body
object
-
walletobject requiredwallet object
-
idstring requiredWallet ID -
usersarray of objects requiredusers object
-
userstring required -
permissionsarray of strings required
-
-
coinstring requiredName of the blockchain the wallet is on -
labelstring requiredName the user assigned to the wallet -
mnumber requiredNumber of signatures required for the wallet to send -
nnumber requiredNumber of signers on the wallet -
keysarray of strings required -
keySignaturesmap of objects requiredSignatures for the backup and BitGo public keys signed by the user keykeySignatures object
-
<key>object
-
-
enterprisestring required -
organizationstring required -
bitgoOrgstring required -
tagsarray of strings required -
disableTransactionNotificationsboolean requiredFlag for disabling wallet transaction notifications -
freezemap of objects requiredFreeze state (used to stop the wallet from spending)freeze object
-
<key>object
-
-
deletedboolean requiredFlag which indicates the wallet has been deleted -
approvalsRequirednumber requiredNumber of admin approvals required for an action to fire -
isColdboolean requiredFlag for identifying cold wallets -
coinSpecificmap of objects requiredCoin-specific datacoinSpecific object
-
<key>object
-
-
adminmap of objects requiredAdmin data (wallet policies)admin object
-
<key>object
-
-
allowBackupKeySigningboolean requiredFlag for allowing signing with backup key -
clientFlagsarray of strings required -
recoverableboolean requiredFlag indicating whether this wallet's user key is recoverable with the passphrase held by the user. -
startDatestring requiredTime when this wallet was created -
hasLargeNumberOfAddressesboolean requiredFlag 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). -
configmap of objects requiredCustom configuration options for this walletconfig object
-
<key>object
-
-
balanceStringstring requiredWallet balance as string -
confirmedBalanceStringstring requiredConfirmed wallet balance as string -
spendableBalanceStringstring requiredSpendable wallet balance as string -
receiveAddressobject requiredreceiveAddress object
-
idstring required -
addressstring required -
chainnumber required -
indexnumber required -
coinstring required -
walletstring required -
coinSpecificmap of objects requiredcoinSpecific object
-
<key>object
-
-
-
balancenumberWallet balance as number -
rbfBalancenumber -
rbfBalanceStringstring -
reservedBalanceStringstring -
lockedBalanceStringstring -
stakedBalanceStringstring -
unspentCountnumber -
pendingChainInitializationboolean -
pendingEcdsaTssInitializationboolean -
pendingApprovalsarray of objectspendingApprovals object
-
<key>object
-
-
multisigTypestring -
multisigTypeVersionstring -
typestring -
subTypestring -
creatorstring -
walletFullyCreatedboolean
-
-
userKeychainobject requireduserKeychain object
-
idstring requiredKeychain ID -
sourcestring requiredParty that created the key -
typestring requiredKeychain type (e.g. "independent" for onchain, "tss" for MPC) -
pubstringPublic part of a key pair (onchain wallets) -
ethAddressstringEthereum address corresponding to this keychain (onchain wallets) -
coinstringAsset ticker for this keychain (onchain wallets) -
commonKeychainstringCommon keychain string (TSS wallets)
-
-
backupKeychainobject requiredbackupKeychain object
- Same shape as
UserKeychainType.
- Same shape as
-
bitgoKeychainobject requiredbitgoKeychain object
-
idstring requiredKeychain ID -
sourcestring requiredParty that created the key -
typestring requiredKeychain type (e.g. "independent" for onchain, "tss" for MPC) -
isBitGoboolean requiredFlag for identifying keychain as created by BitGo -
isTrustboolean requiredFlag for identifying keychain as trust keychain -
hsmTypestring requiredHSM type used for the BitGo key -
pubstringPublic part of a key pair (onchain wallets) -
ethAddressstringEthereum address corresponding to this keychain (onchain wallets) -
commonKeychainstringCommon keychain string (TSS wallets) -
verifiedVssProofboolean or stringWhether VSS proof was verified (TSS wallets) -
keySharesarray of objectskeyShares object
-
<key>object
-
-
walletHSMGPGPublicKeySigsstringWallet HSM GPG public key signatures (TSS wallets)
-
-
responseTypestring required
400
Bad Request
Response Body
object
-
errorstring requiredThe error name -
detailsstring requiredError details
404
Not Found
Response Body
object
-
errorstring requiredThe error name -
detailsstring requiredError details
409
Conflict
Response Body
object
-
errorstring requiredThe error name -
detailsstring requiredError details
422
Unprocessable Entity
Response Body
object
-
errorstring requiredThe error name -
detailsstring requiredError details
500
Internal Server Error
Response Body
object
-
errorstring requiredThe error name -
detailsstring requiredError details
501
Not Implemented
Response Body
object
-
errorstring requiredThe error name -
detailsstring requiredError details