REST APIWallet & TransactWallet

POST

Build a transaction from the wallet using provided options. Use only with multisignature wallets. For MPC wallets, use Create transaction request. If you want to build, sign, and send all in one call, use Send transaction.

Path Params

  • coin string required
    A cryptocurrency or token ticker symbol.
  • walletId string required
    The wallet ID.

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

Query Params

  • destinationTag string
    Required when sending to a BitGo wallet.

Body Params

ONE OF

  • type string

    Required for transactions from MPC wallets. "acceleration" speeds up transactions with a certain nonce by adjusting the gas setting. "accountSet" is for XRP AccountSet transactions. "consolidate" combines multiple UTXO inputs into fewer outputs. "enabletoken" is for SOL. "fanout" splits UTXO inputs into many smaller outputs (UTXO coins only). "stakingLock" and "stakingUnlock" are for Stacks delegations. "transfer" is for native-asset transfers. "trustline" is for Stellar trustline transactions. Possible types include: [acceleration, accountSet, consolidate, enabletoken, fanout, stakingLock, stakingUnlock, transfer, transfertoken, trustline]

    For AVAX, possible types include: addValidator, export, and import.

    For XRP, possible types include: payment and accountSet. The default is payment.

    For STX, type is required.

  • messages array of objects
    [UTXO only] An array of messages that you sign with the wallet keys using the BIP322 format. If passed, the recipients array must be empty.
    messages object
    • address string
      The address for which you're proving ownership. This address must belong to the wallet.
    • message string
      Message that is being signed.
  • numBlocks integer

    (BTC only) The number of blocks required to confirm a transaction. You can use numBlocks to estimate the fee rate by targeting confirmation within a given number of blocks. If both feeRate and numBlocks are absent, the transaction defaults to 2 blocks for confirmation.

    Note: The maxFeeRate limits the fee rate generated by numBlocks.

    >= 2 · <= 1000

  • feeRate string or integer

    Custom fee rate (in base units) per kilobyte (or virtual kilobyte). For example, satoshis per kvByte.

    If the feeRate is less than the minimum required network fee, then the minimum fee applies. For example, 1000 sat/kvByte, a flat 1000 microAlgos, or a flat 10 drops of xrp. For XRP, the actual fee is usually 4.5 times the open ledger fee.

    Note: The feeRate overrides the maxFeeRate and minFeeRate.

  • maxFeeRate string or integer

    (BTC only) The maximum fee rate (in base units) per kilobyte (or virtual kilobyte). For example, satoshis per kvByte. The maxFeeRate limits the fee rate generated by both feeMultiplier and numBlocks.

    Note: The feeRate overrides the maxFeeRate.

  • feeMultiplier string or number

    (UTXO only) Custom multiplier to the feeRate. The resulting fee rate is limited by the maxFeeRate. For replace-by-fee (RBF) transactions (that include rbfTxIds), the feeMultiplier must be greater than 1, since it's an absolute fee multiplier to the transaction being replaced.

    Note: The maxFeeRate limits the fee rate generated by feeMultiplier.

  • minConfirms integer
    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.
  • enforceMinConfirmsForChange boolean
    When set to true, will enforce minConfirms for change outputs. Defaults to false.

    Defaults to false

  • gasPrice string or integer
    Custom gas price to be used for sending the transaction. Only for ETH and ERC20 tokens.
  • eip1559 object
    eip1559 object
    • maxPriorityFeePerGas string or integer
      Max priority tip price for EIP1559 transactions. Only for ETH and ERC20 tokens.
    • maxFeePerGas string or integer
      Max total gasPrice for EIP1559 transactions. Only for ETH and ERC20 tokens.
  • gasLimit string or integer
    Custom gas limit to be used for sending the transaction. Only for ETH and ERC20 tokens.
  • targetWalletUnspents integer

    Specifies the minimum count of good-sized unspents to maintain in the wallet. Change splitting ceases when the wallet has targetWalletUnspents good-sized unspents.

    Note: Wallets that continuously send a high count of transactions will automatically split large change amounts into multiple good-sized change outputs while they have fewer than targetWalletUnspents good-sized unspents in their unspent pool. Breaking up large unspents helps to reduce the amount of unconfirmed funds in flight in future transactions, and helps to avoid long chains of unconfirmed transactions. This is especially useful for newly funded wallets or recently refilled send-only wallets.

    Defaults to 1000

  • minValue string or integer
    Ignore unspents smaller than this amount of base units (e.g. satoshis). For doge, only string is allowed.
  • maxValue string or integer
    Ignore unspents larger than this amount of base units (e.g. satoshis). For doge, only string is allowed.
  • sequenceId string
    A sequenceId is a unique and arbitrary wallet identifier applied to transfers and transactions at creation. It is optional but highly recommended. With a sequenceId you can easily reference transfers and transactions—for example, to safely retry sending. Because the system only confirms one send request per sequenceId (and fails all subsequent attempts), you can retry sending without the risk of double spending. The sequenceId is only visible to users on the wallet and is not shared publicly.
  • nonce string
    (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.
  • noSplitChange boolean

    Set true to disable automatic change splitting.

    Also see: targetWalletUnspents

    Defaults to false

  • unspents array of strings
    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.
  • changeAddress string
    Specifies a custom destination address for the transaction's change output(s)
  • txFormat string enum
    [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

    legacypsbtpsbt-lite
  • instant boolean
    (DASH only) Specifies whether or not to use Dash's "InstantSend" feature when sending a transaction.
  • memo object

    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 and for ALGO this is the message field.

    memo object
    • type string
    • value string
  • comment string
    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.

    up to 256 characters

  • destinationChain string
    (AVAXC and AVAXP only) Destination chain for an AVAX import/export transaction. One of [P, C].
  • sourceChain string
    (AVAXC and AVAXP only) Source chain for an AVAX import/export transaction. One of [P, C].
  • addressType string deprecated
    DEPRECATED - use changeAddressType. The type of address to create for change. One of p2sh, p2shP2wsh, p2wsh, or p2tr.
  • changeAddressType string or array of strings
    The address type for the change address. One of p2sh, p2shP2wsh, p2wsh, p2tr or p2trMusig2.

    ANY OF

    string enum
  • startTime string
    Unix timestamp in seconds.nanoseconds format, denoting the start of the validity window. Only for HBAR transactions.
  • consolidateId string
    (ALGO/TEZOS only) Consolidation ID of this consolidation transaction.
  • lastLedgerSequence integer
    (XRP only) Absolute max ledger the transaction should be accepted in, whereafter it will be rejected
  • ledgerSequenceDelta integer
    (XRP only) Relative ledger height (in relation to the current ledger) that the transaction should be accepted in, whereafter it will be rejected
  • rbfTxIds array of strings
    The list of transactions to accelerate using Replace-By-Fee (RBF) for UTXO coins (currently accelerating only one tx is supported).
  • isReplaceableByFee boolean
    It is used to mark an UTXO transaction eligible for Replace-By-Fee (RBF) later.
  • validFromBlock integer
    Optional block this transaction is valid from
  • validToBlock integer
    Optional block this transaction is valid until
  • trustlines array of objects
    List of trustlines to manage on the account. Available for Stellar.
    trustlines object
    • token string
      One of the supported coin types for Stellar tokens listed in Coin-specific-implementation
    • action object
      addremove
    • limit string
      String representation of the amount to limit in base units (stroops)
  • stakingOptions object
    Required object for staking. Only for CSPR and STX.

    ANY OF

    • amount string or integer
      Required for CSPR. String representation of the amount to stake or unstake in base units (motes).
    • validator string
      Required for CSPR. The validator address used to delegate or undelegate.
  • messageKey string
    Optional parameter that takes a hexadecimal value to set messagekey for an XRP accountSet transaction. Recipients field should be empty when messageKey is set.
  • reservation object
    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.
    reservation object
    • expireTime string date-time
      Required. The time that the unspent reservations should expire.
  • recipients array of objects required
    A list of recipient addresses and amounts. Must be present but empty for Child-Pays-For-Parent transactions and for ERC-7984 token enablement transactions (use enableTokens in that case — the server derives the delegation calldata and overrides this field internally).
    recipients object
    • amount string or integer
      String representation of the amount to send in base units (satoshis/litoshis/zatoshis/duffs). For doge, only string is allowed. Passing in 'max' will send the recipient the maximum amount available, minus fees and amounts for other recipients. Only a single recipient with a 'max' amount is allowed.
    • address string
      The address to send to
    • memo object

      ANY OF

      string
  • txFormat string enum
    [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

    legacypsbtpsbt-lite
  • enableTokens array of objects
    Tokens to enable decryption delegation for (ERC-7984 / Zama confidential tokens, ETH family only). When present, recipients must be an empty array — the server derives delegation calldata from this field and overrides recipients internally.
    enableTokens object
    • name string required
      Token coin name (e.g. "hteth:cusdt")
    • address string required
      Wallet address that will delegate decryption rights (the owner address — must be registered to this wallet)

Responses

200
OK

Response Body

object

  • keyDerivationPath string
400
Bad Request

Response Body

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