/api/v2/{coin}/wallet
Add Wallet is for advanced API users. It lets you manually create and specify keys. The recommended (and simpler) method is Generate Wallet with the SDK or BitGo Express. You can also create wallets in the BitGo UI.
This API creates a new wallet for the user or enterprise. The keys to use with the new wallet (passed in the 'keys' parameter) must be registered with BitGo prior to using this API.
BitGo currently only supports 2-of-3 (e.g., m=2 and n=3) wallets. The third key, and only the third key, must be a BitGo key. The first key is by convention the user key, with its encrypted xprv stored on BitGo.
Ethereum and XRP wallets can only be created under an enterprise. Pass in the id of the enterprise to associate the wallet with. Your enterprise id can be seen by clicking on the "Manage Organization" link in the enterprise dropdown. Using the Add Wallet API, you can create a wallet using either the enterprise fee address (used by default for all wallets in the enterprise), or a unique fee address (created manually with the Keychains API). Pass the desired key as the third key ID in the 'keys' array. In either case, the fee address must be funded before creating the wallet.
You cannot generate a wallet by passing in a subtoken (i.e. ERC20 token) as the coin. Subtokens use the wallet of their parent coin and it is not possible to create a wallet specific to one token. For example, to create a wallet for an ERC20 token, create an Ethereum wallet. It can hold any ERC20 tokens as well as Ether.
BitGo Ethereum wallet is a smart-contract implementing multi-signature scheme. Because contracts itself can not initiate transactions, fee addresses are used for this purpose. Ethereum transactions initiated by a given address, are confirmed by the network in order of creation, so one lower fee transaction can potentially delay all subsequent transactions. To help lower network fee costs, two fee addresses are provided.
'feeAddress' is a main fee address usable for all operations. 'lowPriorityFeeAddress' is a secondary fee address that can be used to pay lower fee for Create Address operations without risking delaying subsequent higher-priority transactions initiated by main fee address.
coin
stringRequiredbtc
coinSpecific
object xlm
object txlm
object lnbtc
object tlnbtc
object enterprise
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
keys
array[string] 59cd72485007a239fb00282ed480da1f
keySignatures
object backup
string bitgo
string label
string required My Wallet
multisigType
string onchain
tss
blsdkg
address
string ivxzn3bdn4uo
m
integer 2
n
integer 3
tags
array[string] 59cd72485007a239fb00282ed480da1f
type
string cold
custodial
custodialPaired
hot
trading
distributedCustody
walletVersion
integer >= 0
<= 6
1
eip1559
object maxPriorityFeePerGas
string required maxFeePerGas
string required 1 2 3 4 5 6 7 8 9 10 11 12 13
bitgo .coin('teth') .wallets() .add({ label: 'My Wallet', m: 2, n: 3, keys: ['591a40dc422326ff248919e62a02b2be', '591a40dd422326ff248919e91caa8b6a', '591a40dc9fdde805252f0d87f76577f8'], }) .then(function (wallet) { // print the new wallet console.dir(wallet); });
admin
object policy
object allowBackupKeySigning
boolean approvalsRequired
integer required >= 1
1
balanceString
string 2000000
^-?\d+$
buildDefaults
object minFeeRate
integer >= 1000
12000
changeAddressType
string p2sh
p2shP2wsh
p2wsh
p2tr
p2trMusig2
default
p2wsh
txFormat
string legacy
psbt
psbt-lite
psbt
coin
string required btc
coinSpecific
One ofcreationFailure
array[string] b8a828b98dbf32d9fd1875cbace9640ceb8c82626716b4a64203fdc79bb46d26
pendingChainInitialization
boolean custodialWallet
object custodialWalletId
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
deleted
boolean required disableTransactionNotifications
boolean required enterprise
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
freeze
object time
string <dateTime>
expires
string <dateTime>
id
string required 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
isCold
boolean keys
array[string] 59cd72485007a239fb00282ed480da1f
label
string required My Wallet
m
integer 2
n
integer 3
nodeId
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
receiveAddress
object id
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
address
string <= 250 characters
2MvrwRYBAuRtPTiZ5MyKg42Ke55W3fZJfZS
chain
integer 0
1
10
11
20
21
30
31
40
41
1
index
integer coin
string lastNonce
integer -1
wallet
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
coinSpecific
object balance
object label
<= 250 characters
Bob's Hot Wallet Address
addressType
string p2sh
p2shP2wsh
p2wsh
p2tr
p2trMusig2
p2sh
recoverable
boolean tags
array[string] 59cd72485007a239fb00282ed480da1f
spendableBalanceString
string 2000000
^-?\d+$
unspentCount
number 100
startDate
string <date-time>
{}
type
string cold
custodial
custodialPaired
hot
trading
distributedCustody
users
array[object] {"user":"55e8a1a5df8380e0e30e20c6","permissions":["admin","view","spend"]}
user
string 59cd72485007a239fb00282ed480da1f
^[0-9a-f]{32}$
permissions
array[string] admin
view
spend
customChangeKeySignatures
object user
string backup
string bitgo
string multisigType
string onchain
tss
blsdkg
multisigTypeVersion
string MPCv2
error
string required requestId
string required context
object name
string required error
string required requestId
string required context
object name
string required