Add wallet-policy rule

post/api/v2/{coin}/wallet/{walletId}/policy/rule

Adds a rule to a wallet’s policy. A wallet policy’s rules control the conditions under which BitGo will use its single key to sign a transaction. An email notification will be sent to all wallet users when a policy is updated. This email is NOT sent for the first time policy is added.

Path Parameters

  • coinstringRequired
    A cryptocurrency or token ticker symbol.
    Example: btc
  • walletIdstringRequired
    Example: 59cd72485007a239fb00282ed480da1f
    Pattern: ^[0-9a-f]{32}$

Request Body

coin string
If set, the rule will only apply to the given coin or ERC20 token in an Ethereum wallet. It is generally recommended to not set a coin for policy rules of the following types: 'advancedWhitelist', 'allTx', 'coinAddressWhitelist', 'coinAddressBlacklist', 'webhook'.
Example: zrx
id string required
The id of the rule, must be unique among rules in the policy
type string required
What causes this rule to trigger
Allowed values: advancedWhitelist allTx allTxNoFiat coinAddressWhitelist coinAddressBlacklist velocityLimit webhook
conditionAny of
Parameters for the type
add object required
action object required
What happens when this rule is triggered
type string required
Allowed values: deny getApproval getGroupApproval getFinalApproval getCustodianApproval getIdVerification noop
approvalsRequired integer
Minimum: >= 1
Example: 1
userIds array[string]
For a final approver action, who can approve
Example: 59cd72485007a239fb00282ed480da1f

200 Response

admin object
policy object
allowBackupKeySigning boolean
approvalsRequired integer required
Minimum: >= 1
Example: 1
balanceString string
Total balance in base units (e.g. Satoshis)
Example: 2000000
Match pattern: ^-?\d+$
buildDefaults object
minFeeRate integer
(UTXO only) Wallet-level minimum fee rate that must be greater than or equal to the default of 1000 satoshis/kvByte. Per transaction, you can override 'minFeeRate' with the 'feeRate' parameter.
Minimum: >= 1000
Example: 12000
changeAddressType string
(UTXO only) The default script type to use for change for this wallet. Per transaction, you override the default with the 'changeAddressType' parameter. If 'default' is provided, it will clear the 'changeAddressType' default on the wallet. Note that each UTXO coin has different address types available. For example, Only BTC supports 'p2tr'.
Allowed values: p2sh p2shP2wsh p2wsh p2tr p2trMusig2 default
Example: p2wsh
txFormat string
(UTXO only) The default transaction format to use for this wallet. Per transaction, you can override the default with the 'txFormat' parameter.
Allowed values: legacy psbt
Example: psbt
coin string required
A cryptocurrency or token ticker symbol.
Example: btc
coinSpecificOne of
creationFailure array[string]
The on-chain transaction id
Example: b8a828b98dbf32d9fd1875cbace9640ceb8c82626716b4a64203fdc79bb46d26
pendingChainInitialization boolean
Whether the wallet needs to be initialized on the chain
custodialWallet object
The associated custodial wallet object
custodialWalletId string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
deleted boolean required
disableTransactionNotifications boolean required
enterprise string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
freeze object
time string <dateTime>
expires string <dateTime>
id string required
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
isCold boolean
keys array[string]
Example: 59cd72485007a239fb00282ed480da1f
label string required
Example: My Wallet
m integer
Number of signatures required. This value must be 2 for hot wallets, 1 for **ofc** wallets, and not specified for custodial wallets.
Example: 2
n integer
Number of keys provided. This value must be 3 for hot wallets, 1 for **ofc** wallets, and not specified for custodial wallets.
Example: 3
nodeId string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
receiveAddress object
id string
platform public id for an address
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
address string
Max length: <= 250 characters
Example: 2MvrwRYBAuRtPTiZ5MyKg42Ke55W3fZJfZS
chain integer
Allowed values: 0 1 10 11 20 21 30 31 40 41
Example: 1
index integer
coin string
lastNonce integer
Default: -1
wallet string
The wallet which contains this address
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
coinSpecific object
Properties which are specific to certain coin types
balance object
Balance of the address. In case of Eth and Celo, if returnBalancesForToken is passed with includeBalances, then it will return token balance in the address object. This field will be present only when 'includeBalances' query param is passed as true.
label
string or null
A human-readable label for the address.
Max length: <= 250 characters
Example: Bob's Hot Wallet Address
addressType string
Allowed values: p2sh p2shP2wsh p2wsh p2tr p2trMusig2
Example: p2sh
recoverable boolean
tags array[string]
Example: 59cd72485007a239fb00282ed480da1f
spendableBalanceString string
Spendable balance in base units (e.g. Satoshis)
Example: 2000000
Match pattern: ^-?\d+$
unspentCount number
Number of unspent outputs present in the wallet
Example: 100
startDate string <date-time>
Wallet creation time
Example: 2018-05-05T19:46:22.019Z
type string
The type describes who owns the keys to the wallet and how they are stored. 'cold' wallets are wallets where the private key of the user key is stored exclusively outside of BitGo's system. 'custodial' means that this wallet is a cold wallet where BitGo owns the keys. Only customers of the BitGo Trust can create this kind of wallet. 'custodialPaired' means that this is a hot wallet that is owned by the customer but it will be linked to a cold (custodial) wallet where BitGo owns the keys. This option is only available to customers of BitGo Inc. BitGo stores an encrypted private key for the user key of 'hot' wallets. 'trading' wallets are trading accounts where the coin is 'ofc'. 'distributedCustody' means You manage one key and another key agent manages the second key. BitGo manages the third key
Allowed values: cold custodial custodialPaired hot trading distributedCustody
users array[object]
Example: {"user":"55e8a1a5df8380e0e30e20c6","permissions":["admin","view","spend"]}
user string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
permissions array[string]
Allowed values: admin view spend
customChangeKeySignatures object
Signatures for the keys which will be used to derive custom change addresses. **Note:** These signatures may only be set once for each wallet and are not modifiable after being set.
user string
backup string
bitgo string
multisigType string
Allowed values: onchain tss blsdkg
multisigTypeVersion string
Allowed value: MPCv2

202 Response

id string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
coin string
A cryptocurrency or token ticker symbol.
Example: btc
wallet string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
enterprise string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
organization string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
creator string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
createDate string <date-time>
infoAny of
transactionRequest object
type string
Allowed value: transactionRequest
stateAny of
Allowed values: pending awaitingSignature pendingFinalApproval pendingCustodianApproval pendingVideoApproval pendingIdVerification
scope string
What kind of entity the Pending Approval is tied to
Allowed values: enterprise wallet
userIds array[string]
All the Users who should see this Pending Approval
Example: 59cd72485007a239fb00282ed480da1f
approvalsRequired integer
Minimum: >= 1
Example: 1
walletLabel string
resolvers array[object]
user string required
date string required
resolutionType string required
Allowed values: approved awaitingSignature pending pendingBitGoAdminApproval pendingCryptographicApproval pendingCustodianApproval pendingFinalApproval pendingIdVerification pendingVideoApproval processing rejected
signatures array[string] required
videoApprover string
videoLink string
videoException string
addressLabels array[object]
Address labels of recipients in this Pending Approval
address string required
Max length: <= 250 characters
Example: 2MvrwRYBAuRtPTiZ5MyKg42Ke55W3fZJfZS
label
string or null
required
A human-readable label for the address.
Max length: <= 250 characters
Example: Bob's Hot Wallet Address
walletLabel string
Example: My Wallet

400 Response

One of
error string required
Human-readable error message
requestId string required
Client request id
context object
Properties that apply to a specific error name
name string required
Error code