You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* for building, signing, and sending transactions to multiple recipients.
113
113
*/
114
114
exportconstSendManyRequestBody={
115
-
/** Array of recipients with addresses and amounts */
115
+
/** A list of recipient addresses and amounts. Must be present but empty for CPFP transactions. */
116
116
recipients: optional(t.array(Recipient)),
117
117
118
-
/** The wallet passphrase to decrypt the user key */
118
+
/** Passphrase to decrypt the user key on the wallet. Required if External Signer is not used to sign the transactions. */
119
119
walletPassphrase: optional(t.string),
120
120
121
121
/** The extended private key (alternative to walletPassphrase) */
122
122
xprv: optional(t.string),
123
123
124
-
/** The private key (prv) in string form */
124
+
/** The un-encrypted user private key in string form. If the key is a JSON object it must be stringified. Required if `walletPassphrase` is not available or encrypted private key is not stored by BitGo. */
125
125
prv: optional(t.string),
126
126
127
-
/** Estimate fees to aim for first confirmation within this number of blocks */
127
+
/**
128
+
* (BTC only) The number of blocks required to confirm a transaction. You can use `numBlocks` to estimate the fee
129
+
* rate by targeting confirmation within a given number of blocks. If both `feeRate` and `numBlocks` are absent,
130
+
* the transaction defaults to 2 blocks for confirmation.
131
+
*
132
+
* Note: The `maxFeeRate` limits the fee rate generated by `numBlocks`.
133
+
*/
128
134
numBlocks: optional(t.number),
129
135
130
-
/** The desired fee rate for the transaction in base units per kilobyte (e.g., satoshis/kB) */
136
+
/**
137
+
* Custom fee rate (in base units) per kilobyte (or virtual kilobyte). For example, satoshis per kvByte.
138
+
*
139
+
* If the `feeRate` is less than the minimum required network fee, then the minimum fee applies. For example,
140
+
* 1000 sat/kvByte, a flat 1000 microAlgos, or a flat 10 drops of xrp. For XRP, the actual fee is usually
141
+
* 4.5 times the open ledger fee.
142
+
*
143
+
* Note: The `feeRate` overrides the `maxFeeRate` and `minFeeRate`.
144
+
*/
131
145
feeRate: optional(t.number),
132
146
133
-
/** Fee multiplier (multiplies the estimated fee by this factor) */
147
+
/**
148
+
* (UTXO only) Custom multiplier to the `feeRate`. The resulting fee rate is limited by the `maxFeeRate`.
149
+
* For replace-by-fee (RBF) transactions (that include `rbfTxIds`), the `feeMultiplier` must be greater than 1,
150
+
* since it's an absolute fee multiplier to the transaction being replaced.
151
+
*
152
+
* Note: The `maxFeeRate` limits the fee rate generated by `feeMultiplier`.
153
+
*/
134
154
feeMultiplier: optional(t.number),
135
155
136
-
/** The maximum limit for a fee rate in base units per kilobyte */
156
+
/**
157
+
* (BTC only) The maximum fee rate (in base units) per kilobyte (or virtual kilobyte). For example, satoshis per kvByte.
158
+
* The `maxFeeRate` limits the fee rate generated by both `feeMultiplier` and `numBlocks`.
159
+
*
160
+
* Note: The `feeRate` overrides the `maxFeeRate`.
161
+
*/
137
162
maxFeeRate: optional(t.number),
138
163
139
-
/** Minimum number of confirmations needed for an unspent to be included (defaults to 1) */
164
+
/** The unspent selection for the transaction will only consider unspents with at least this many confirmations to be used as inputs. Does not apply to change outputs unless used in combination with `enforceMinConfirmsForChange`. */
140
165
minConfirms: optional(t.number),
141
166
142
-
/** If true, minConfirms also applies to change outputs */
167
+
/** Defaults to false. When set to true, will enforce minConfirms for change outputs. */
143
168
enforceMinConfirmsForChange: optional(t.boolean),
144
169
145
-
/** Target number of unspents to maintain in the wallet */
170
+
/**
171
+
* Defaults to 1000. Specifies the minimum count of good-sized unspents to maintain in the wallet.
172
+
* Change splitting ceases when the wallet has `targetWalletUnspents` good-sized unspents.
173
+
*
174
+
* Note: Wallets that continuously send a high count of transactions will automatically split large change amounts
175
+
* into multiple good-sized change outputs while they have fewer than `targetWalletUnspents` good-sized unspents
176
+
* in their unspent pool. Breaking up large unspents helps to reduce the amount of unconfirmed funds in flight in
177
+
* future transactions, and helps to avoid long chains of unconfirmed transactions. This is especially useful for
178
+
* newly funded wallets or recently refilled send-only wallets.
179
+
*/
146
180
targetWalletUnspents: optional(t.number),
147
181
148
182
/** Message to attach to the transaction */
149
183
message: optional(t.string),
150
184
151
-
/** Minimum value of unspents to use (in base units) */
185
+
/** Ignore unspents smaller than this amount of base units (e.g. satoshis). For doge, only string is allowed. */
152
186
minValue: optional(t.union([t.number,t.string])),
153
187
154
-
/** Maximum value of unspents to use (in base units) */
188
+
/** Ignore unspents larger than this amount of base units (e.g. satoshis). For doge, only string is allowed. */
155
189
maxValue: optional(t.union([t.number,t.string])),
156
190
157
-
/** Custom sequence ID for the transaction */
191
+
/**
192
+
* A `sequenceId` is a unique and arbitrary wallet identifier applied to transfers and transactions at creation.
193
+
* It is optional but highly recommended. With a `sequenceId` you can easily reference transfers and transactions—
194
+
* for example, to safely retry sending. Because the system only confirms one send request per `sequenceId`
195
+
* (and fails all subsequent attempts), you can retry sending without the risk of double spending.
196
+
* The `sequenceId` is only visible to users on the wallet and is not shared publicly.
197
+
*/
158
198
sequenceId: optional(t.string),
159
199
160
-
/** Absolute max ledger the transaction should be accepted in (for XRP) */
200
+
/** (XRP only) Absolute max ledger the transaction should be accepted in, whereafter it will be rejected. */
161
201
lastLedgerSequence: optional(t.number),
162
202
163
-
/** Relative ledger height (in relation to the current ledger) that the transaction should be accepted in */
203
+
/** (XRP only) Relative ledger height (in relation to the current ledger) that the transaction should be accepted in, whereafter it will be rejected. */
164
204
ledgerSequenceDelta: optional(t.number),
165
205
166
-
/** Custom gas price to be used for sending the transaction (for account-based coins) */
206
+
/** Custom gas price to be used for sending the transaction. Only for ETH and ERC20 tokens. */
167
207
gasPrice: optional(t.number),
168
208
169
-
/** Set to true to disable automatic change splitting for purposes of unspent management */
209
+
/** Defaults to false. Set `true` to disable automatic change splitting. Also see: `targetWalletUnspents` */
170
210
noSplitChange: optional(t.boolean),
171
211
172
-
/** Array of specific unspent IDs to use in the transaction */
212
+
/** Used to explicitly specify the unspents to be used in the input set in the transaction. Each unspent should be in the form `prevTxId:nOutput`. */
173
213
unspents: optional(t.array(t.string)),
174
214
175
-
/** Comment to attach to the transaction */
215
+
/** Optional metadata (only persisted in BitGo) to be applied to the transaction. Use this to add transaction-specific information such as the transaction's purpose or another identifier that you want to reference later. The value is shown in the UI in the transfer listing page. (length ≤ 256) */
176
216
comment: optional(t.string),
177
217
178
-
/** One-time password for 2FA */
218
+
/** Two factor auth code to enable sending the transaction. Not necessary if using a long lived access token within the spending limit. */
179
219
otp: optional(t.string),
180
220
181
-
/** Specifies the destination of the change output */
221
+
/** Specifies a custom destination address for the transaction's change output(s) (length ≤ 500) */
182
222
changeAddress: optional(t.string),
183
223
184
224
/** If true, allows using an external change address */
185
225
allowExternalChangeAddress: optional(t.boolean),
186
226
187
-
/** Send this transaction using coin-specific instant sending method (if available) */
227
+
/** (DASH only) Specifies whether or not to use Dash's "InstantSend" feature when sending a transaction. */
188
228
instant: optional(t.boolean),
189
229
190
-
/** Memo to use in transaction (supported by Stellar, XRP, etc.) */
230
+
/** Extra transaction information for CSPR, EOS, HBAR, RUNE, STX, TON, XLM, and XRP. Required for XLM transactions. Note: For XRP this is the destination tag (DT). For CSPR this is the transfer ID. */
* For AVAX, possible types include: `addValidator`, `export`, and `import`.
255
+
* For XRP, possible types include: `payment` and `accountSet`. The default is `payment`.
256
+
* For STX, type is required.
257
+
*/
206
258
type: optional(t.string),
207
259
208
260
/** Custodian transaction ID (for institutional custody integrations) */
209
261
custodianTransactionId: optional(t.string),
210
262
211
-
/** If true, enables hop transactions for exchanges */
263
+
/** (ETH, AVAXC and POLYGON) Set to true if funds to destination need to come from single sig address. */
212
264
hop: optional(t.boolean),
213
265
214
-
/** Address type for the transaction (e.g., 'p2sh', 'p2wsh') */
266
+
/** @deprecated Use `changeAddressType` instead. The type of address to create for change. One of `p2sh`, `p2shP2wsh`, `p2wsh`, or `p2tr`. */
215
267
addressType: optional(t.string),
216
268
217
-
/** Change address type (e.g., 'p2sh', 'p2wsh') */
269
+
/** The address type for the change address. One of `p2sh`, `p2shP2wsh`, `p2wsh`, `p2tr` or `p2trMusig2`. */
218
270
changeAddressType: optional(t.string),
219
271
220
-
/** Transaction format (legacy or psbt) */
272
+
/** [UTXO only] Format of the returned transaction hex serialization. `legacy` for serialized transaction in custom bitcoinjs-lib format. `psbt` for BIP174 serialized transaction. Defaults to `legacy`. */
/** (DOT only) A nonce ID is a number used to protect private communications by preventing replay attacks. This is an advanced option where users can manually input a new nonce value in order to correct or fill in a missing nonce ID value. */
233
285
nonce: optional(t.string),
234
286
235
287
/** If true, only preview the transaction without sending */
/** Non-participation flag (for governance/staking protocols like Algorand) */
261
313
nonParticipation: optional(t.boolean),
262
314
263
-
/** Valid from block height */
315
+
/** Optional block this transaction is valid from. */
264
316
validFromBlock: optional(t.number),
265
317
266
-
/** Valid to block height */
318
+
/** Optional block this transaction is valid until. */
267
319
validToBlock: optional(t.number),
268
320
269
-
/** Reservation parameters for unspent management */
321
+
/** Optional parameter for UTXO coins to automatically reserve the unspents that are used in the build. Useful for Cold wallets. If using, must set `expireTime`. */
* Send coins or tokens to one or more recipients. You can use this endpoint to schedule outgoing transactions in bulk, lowering your aggregate amount of blockchain fees.
733
785
*
734
-
* This endpoint sends funds to multiple recipients by:
735
-
* 1. Building a transaction with the specified recipients and parameters
736
-
* 2. Signing the transaction with the user's key (decrypted with walletPassphrase or xprv)
737
-
* 3. Requesting a signature from BitGo's key
738
-
* 4. Sending the fully-signed transaction to the blockchain network
786
+
* Works with both multisignature and MPC wallets. Also supports external-signer mode.
739
787
*
740
-
* The v2 API supports:
741
-
* - Multiple recipients in a single transaction
742
-
* - Full control over transaction fees (feeRate, maxFeeRate, numBlocks)
* - Instant transactions (if supported by the coin)
745
-
* - TSS wallets with txRequest flow
746
-
* - Account-based and UTXO-based coins
747
-
* - Token transfers
748
-
* - Advanced features like memo fields, hop transactions, EIP-1559 fees
788
+
* Works with most BitGo-supported assets, but currently unavailable for: ALGO, ARBETH, AVAXC, CELO, CELO:CUSD, CSPR, DOT, EOS, HTETH:BGERCH, NEAR, OPETH, STX, TON, TRX, TRX:USDC, XLM, XRP, XTZ
0 commit comments