ExpressAdvanced Wallets

POST

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 Params

  • coin string required

Body Params

object

  • label string required
    A human-readable label for the wallet This will be displayed in the BitGo dashboard and API responses
  • multisigType string enum 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
    onchaintss
  • 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

    matches ^[0-9a-f]{32}$

  • disableTransactionNotifications boolean
    Flag for disabling wallet transaction notifications When true, BitGo will not send email/SMS notifications for wallet transactions
  • 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
  • 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

    >= 0 · <= 3

Responses

200
OK

Response Body

object

  • wallet object required
    wallet object
    • id string required
      Wallet ID

      matches ^[0-9a-f]{32}$

    • users array of objects required
      users object
      • user string required
      • permissions array of strings required
    • coin string required
      Name of the blockchain the wallet is on
    • label string required
      Name the user assigned to the wallet
    • m number required
      Number of signatures required for the wallet to send
    • n number required
      Number of signers on the wallet
    • keys array of strings required
    • keySignatures map of objects required
      Signatures for the backup and BitGo public keys signed by the user key
      keySignatures object
      • <key> object
    • enterprise string required
    • organization string required
    • bitgoOrg string required
    • tags array of strings required
    • disableTransactionNotifications boolean required
      Flag for disabling wallet transaction notifications
    • freeze map of objects required
      Freeze state (used to stop the wallet from spending)
      freeze object
      • <key> object
    • deleted boolean required
      Flag which indicates the wallet has been deleted
    • approvalsRequired number required
      Number of admin approvals required for an action to fire
    • isCold boolean required
      Flag for identifying cold wallets
    • coinSpecific map of objects required
      Coin-specific data
      coinSpecific object
      • <key> object
    • admin map of objects required
      Admin data (wallet policies)
      admin object
      • <key> object
    • allowBackupKeySigning boolean required
      Flag for allowing signing with backup key
    • clientFlags array of strings 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 map of objects required
      Custom configuration options for this wallet
      config object
      • <key> object
    • balanceString string required
      Wallet balance as string
    • confirmedBalanceString string required
      Confirmed wallet balance as string
    • spendableBalanceString string required
      Spendable wallet balance as string
    • receiveAddress object required
      receiveAddress object
      • id string required
      • address string required
      • chain number required
      • index number required
      • coin string required
      • wallet string required
      • coinSpecific map of objects required
        coinSpecific object
        • <key> object
    • balance number
      Wallet balance as number
    • rbfBalance number
    • rbfBalanceString string
    • reservedBalanceString string
    • lockedBalanceString string
    • stakedBalanceString string
    • unspentCount number
    • pendingChainInitialization boolean
    • pendingEcdsaTssInitialization boolean
    • pendingApprovals array of objects
      pendingApprovals object
      • <key> object
    • multisigType string
    • multisigTypeVersion string
    • type string
    • subType string
    • creator string
    • walletFullyCreated boolean
  • userKeychain object required
    userKeychain object
    • id string required
      Keychain ID

      matches ^[0-9a-f]{32}$

    • source string required
      Party that created the key
    • type string required
      Keychain type (e.g. "independent" for onchain, "tss" for MPC)
    • pub string
      Public part of a key pair (onchain wallets)
    • ethAddress string
      Ethereum address corresponding to this keychain (onchain wallets)
    • coin string
      Asset ticker for this keychain (onchain wallets)
    • commonKeychain string
      Common keychain string (TSS wallets)
  • backupKeychain object required
    backupKeychain object
    • Same shape as UserKeychainType.
  • bitgoKeychain object required
    bitgoKeychain object
    • id string required
      Keychain ID

      matches ^[0-9a-f]{32}$

    • source string required
      Party that created the key
    • type string required
      Keychain type (e.g. "independent" for onchain, "tss" for MPC)
    • isBitGo boolean required
      Flag for identifying keychain as created by BitGo
    • isTrust boolean required
      Flag for identifying keychain as trust keychain
    • hsmType string required
      HSM type used for the BitGo key
    • 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)
    • verifiedVssProof boolean or string
      Whether VSS proof was verified (TSS wallets)
    • keyShares array of objects
      keyShares object
      • <key> object
    • walletHSMGPGPublicKeySigs string
      Wallet HSM GPG public key signatures (TSS wallets)
  • responseType string required
400
Bad Request

Response Body

object

  • error string required
    The error name
  • details string required
    Error details
404
Not Found

Response Body

object

  • error string required
    The error name
  • details string required
    Error details
409
Conflict

Response Body

object

  • error string required
    The error name
  • details string required
    Error details
422
Unprocessable Entity

Response Body

object

  • error string required
    The error name
  • details string required
    Error details
500
Internal Server Error

Response Body

object

  • error string required
    The error name
  • details string required
    Error details
501
Not Implemented

Response Body

object

  • error string required
    The error name
  • details string required
    Error details