Utila Transactions API
The Transactions API from Utila — 11 operation(s) for transactions.
The Transactions API from Utila — 11 operation(s) for transactions.
openapi: 3.0.0
info:
title: Utila Address Book Transactions API
version: v2
servers:
- url: https://api.utila.io
security:
- bearerAuth: []
tags:
- name: Transactions
paths:
/v2/vaults/{vault_id}/transactions/{transaction_id}:
get:
summary: GetTransaction
description: Retrieves a transaction by resource name.
operationId: Transactions_GetTransaction
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2GetTransactionResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_id
in: path
required: true
schema:
type: string
- name: includeReferencedResources
description: Include referenced resources in the response.
in: query
required: false
schema:
type: boolean
- name: view
description: "The view of the transaction.\n\n - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields."
in: query
required: false
schema:
type: string
enum:
- BASIC
- FULL
tags:
- Transactions
/v2/vaults/{vault_id}/transactions:batchGet:
get:
summary: BatchGetTransactions
description: Retrieves multiple transactions by resource name.
operationId: Transactions_BatchGetTransactions
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2BatchGetTransactionsResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: names
description: 'The resource names of the transactions to retrieve.
Format: `vaults/{vault_id}/transactions/{transaction_id}`'
in: query
required: true
explode: true
schema:
type: array
items:
type: string
- name: includeReferencedResources
description: Include referenced resources in the response.
in: query
required: false
schema:
type: boolean
- name: view
description: "The view of the transaction.\n\n - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields."
in: query
required: false
schema:
type: string
enum:
- BASIC
- FULL
tags:
- Transactions
/v2/vaults/{vault_id}/transactions:
get:
summary: ListTransactions
description: Retrieve a list of all transactions in a vault.
operationId: Transactions_ListTransactions
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2ListTransactionsResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: filter
description: 'A filter string to filter the results.
More details about filtering can be found in the [Filtering Documentation Page](https://docs.utila.io/reference/filtering).
Supported fields and functions:
| Name | Description | Example |
|------|-------------|---------|
| `create_time` | Filter by creation time (`string` comparison). | `create_time > "2023-08-29T18:04:00Z"` |
| `state` | Filter by one or more states (`enum...`). | `state(AWAITING_APPROVAL,AWAITING_SIGNATURE)` |
| `spam` | Filter by spam status (`bool`). | `spam(false)` |
| `from_wallet` | Filter by one or more source wallets (`string...`). | `from_wallet("vaults/123456789012/wallets/5a8b8085ccd0")` |
| `to_wallet` | Filter by one or more destination wallets (`string...`). | `to_wallet("vaults/123456789012/wallets/5a8b8085ccd0")` |
| `pending_user_approval` | Filter by user for which the transaction is awaiting approval (`string`). | `pending_user_approval("users/name@example.com")` |
| `asset` | Filter by one or more assets (`string...`). Supports v2 asset aliases. | `asset("assets/erc20.ethereum-mainnet.0x6b175474e89094c44da98b954eedeac495271d0f")` |
| `external_id` | Filter by client-provided external ID (`string`). | `external_id("order-123")` |'
in: query
required: false
schema:
type: string
- name: orderBy
description: 'SQL-like ordering specifications.
Supports the field `create_time`.'
in: query
required: false
schema:
type: string
- name: pageSize
description: 'The maximum number of items to return. The service may return fewer than
this value.
If unspecified, at most 50 will be returned.'
in: query
required: false
schema:
type: integer
format: int32
- name: pageToken
description: 'A page token, received from the previous list call as `nextPageToken`.
Provide this to retrieve the subsequent page.
When paginating, all other parameters must match the call that provided
the page token.'
in: query
required: false
schema:
type: string
- name: skip
description: 'How many results to skip.
Note: may be used alongside token-based pagination (see `pageToken`),
although this won''t be needed for most use cases.'
in: query
required: false
schema:
type: integer
format: int32
- name: includeReferencedResources
description: Include referenced resources in the response.
in: query
required: false
schema:
type: boolean
- name: view
description: "The view of the transaction.\n\n - BASIC: The default view. Does not include certain fields such as blocking transactions.\n - FULL: Full view, include all fields."
in: query
required: false
schema:
type: string
enum:
- BASIC
- FULL
tags:
- Transactions
/v2/vaults/{vault_id}/transactions:initiate:
post:
summary: InitiateTransaction
description: Initiate a new transaction.
operationId: Transactions_InitiateTransaction
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2InitiateTransactionResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionsInitiateTransactionBody'
required: true
tags:
- Transactions
/v2/vaults/{vault_id}/transactionRequests/{transaction_request_id}:vote:
post:
summary: VoteOnTransactionRequest
description: Vote on a transaction request.
operationId: Transactions_VoteOnTransactionRequest
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2VoteOnTransactionRequestResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_request_id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionsVoteOnTransactionRequestBody'
required: true
tags:
- Transactions
/v2/vaults/{vault_id}/transactions:estimateFee:
post:
summary: EstimateTransactionFee
description: Estimate the fee for a transaction.
operationId: Transactions_EstimateTransactionFee
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2EstimateTransactionFeeResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionsEstimateTransactionFeeBody'
required: true
tags:
- Transactions
/v2/vaults/{vault_id}/transactions/{transaction_id}/simulations/latest:
get:
summary: GetLatestTransactionSimulation
operationId: Transactions_GetLatestTransactionSimulation
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2GetLatestTransactionSimulationResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_id
in: path
required: true
schema:
type: string
- name: includeReferencedResources
description: Include referenced resources in the response.
in: query
required: false
schema:
type: boolean
tags:
- Transactions
/v2/vaults/{vault_id}/transactions/{transaction_id}:cancel:
post:
summary: CancelTransaction
description: 'Cancels a transaction. Used to cancel a transaction before it is signed.
Only the transaction''s initiator or an admin can cancel a transaction.
If the transaction has already been signed, use
[ReplaceTransaction](#tag/Transactions/operation/Transactions_ReplaceTransaction) instead.'
operationId: Transactions_CancelTransaction
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2CancelTransactionResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_id
in: path
required: true
schema:
type: string
tags:
- Transactions
/v2/vaults/{vault_id}/transactions/{transaction_id}:replace:
post:
summary: ReplaceTransaction
description: 'Creates a new transaction that replaces an existing signed transaction in the system which has not been mined yet.
Only works for blockchains that support replacement of signed transactions, e.g.
- Ethereum - which has nonce management.
- BTC - which has RBF (Replace-By-Fee) and CPFP (Child-Pays-For-Parent) mechanisms.
Some blockchains do not support transaction replacement, e.g. TRON - which is based on
transaction expiration time - for these cases, the transaction will be either mined or
expired after the configured expiration time.
If the transaction has not been signed yet, and you wish to cancel it, use
[CancelTransaction](#tag/Transactions/operation/Transactions_CancelTransaction)
instead.'
operationId: Transactions_ReplaceTransaction
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2ReplaceTransactionResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionsReplaceTransactionBody'
required: true
tags:
- Transactions
/v2/vaults/{vault_id}/transactions/{transaction_id}:publish:
post:
summary: PublishTransaction
description: 'Manually publishes a signed transaction to the blockchain. This endpoint synchronously
broadcasts the transaction to the network and returns the updated transaction details.
The transaction must be fully signed before publishing.
**Note:** Currently only available for EVM-compatible blockchains. Support for additional
blockchains will be added in future releases.'
operationId: Transactions_PublishTransaction
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2PublishTransactionResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionsPublishTransactionBody'
required: true
tags:
- Transactions
/v2/vaults/{vault_id}/transactions/{transaction_id}/amlScreening:
get:
summary: GetTransactionAMLScreening
description: If the transaction was screened for AML, this endpoint will return the results. Relevant where screening is configured.
operationId: Transactions_GetTransactionAMLScreening
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2GetTransactionAMLScreeningResponse'
parameters:
- name: vault_id
in: path
required: true
schema:
type: string
- name: transaction_id
in: path
required: true
schema:
type: string
tags:
- Transactions
components:
schemas:
BatchAssetTransferBatchTransferDestination:
type: object
properties:
destination:
type: string
description: 'The destination of the transfer.
Can be one of the following:
1. A raw string address (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` or `bc1q3vfght7rln2c3733dl42navt8pslfya7talfns`)
2. A wallet: `vaults/{vault_id}/wallets/{wallet_id}`.
3. A specific wallet address: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`.'
amount:
type: string
description: 'The amount of the asset to transfer for this entry in asset units.
Example: `1.1`.'
note:
type: string
description: 'The note to attach to the transfer.
This note will be visible to all vault members.'
title: BatchTransferDestination
required:
- destination
- amount
v2DecodedAptosTransactionPayload:
type: object
properties:
entryFunction:
$ref: '#/components/schemas/v2DecodedAptosEntryFunction'
v2CantonTokenDetails:
type: object
properties:
instrumentId:
type: string
description: The instrument ID.
instrumentAdmin:
type: string
description: The instrument admin.
v2DecodedAptosEntryFunction:
type: object
properties:
function:
type: string
typeArguments:
type: array
items:
type: string
arguments:
type: array
items:
type: string
required:
- function
- typeArguments
- arguments
v2WalletTonDetails:
type: object
properties:
address:
type: string
description: The address of the wallet.
readOnly: true
v2EVMSignTypedDataV4:
type: object
properties:
fromAddress:
type: string
description: 'The address to sign the message with.
Can be one of the following:
1. A `0x`-prefixed hex string address, must be matched by a wallet address in the current vault (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)
2. A wallet resource name: `vaults/{vault_id}/wallets/{wallet_id}`
3. A specific wallet address resource name: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`'
message:
type: string
description: 'An EIP-712 json string.
See https://eips.ethereum.org/EIPS/eip-712 for more information.'
required:
- fromAddress
- message
AssetTransferStellarOptions:
type: object
properties:
memo:
description: 'Optional typed memo for Stellar native and token transfers.
When set, the type must be explicit (TEXT, ID, HASH, or RETURN).
See StellarTransaction.Memo for format and validation rules.
If not set for a Stellar transfer, no memo is attached.'
allOf:
- $ref: '#/components/schemas/apiv2StellarTransactionMemo'
title: Blockchain specific options for Stellar Asset Transfer
BTCTransactionUTXOOut:
type: object
properties:
address:
description: Output address.
allOf:
- $ref: '#/components/schemas/apiv2Address'
amount:
type: string
description: Amount in asset unit (BTC).
change:
type: boolean
description: True when this output is the change output.
changeUserSelected:
type: boolean
description: 'True when the change address was supplied by the user; false when auto-generated.
Only meaningful when `change` is true.'
TransactionTonTransaction:
type: object
properties:
sender:
description: Ths source address of the transaction.
allOf:
- $ref: '#/components/schemas/apiv2Address'
seqno:
type: string
format: int64
description: The sequence number of the transaction.
messages:
type: array
items:
$ref: '#/components/schemas/TransactionTonTransactionMessage'
title: The messages posted to the blockchain
memo:
type: string
description: The memo of the transaction.
validUntil:
type: string
format: int64
description: The time the transaction is valid until.
amount:
type: string
description: The native amount passed to the transaction.
v2TronResourceFee:
type: object
properties:
consumed:
type: string
description: The amount of the resource consumed.
burned:
type: string
description: The amount of TRX burned for this resource.
convertedBurned:
description: The converted (fiat) value of the TRX burned for this resource.
allOf:
- $ref: '#/components/schemas/v2ConvertedValue'
description: Resource-level fee breakdown for a Tron resource (bandwidth or energy).
v2TransactionTonProof:
type: object
properties:
address:
type: string
description: 'The address of the signer.
In Raw address format.
Example: `0:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef`.'
appDomain:
type: string
title: The domain of the app requested the proof
payload:
type: string
description: The payload to sign.
timestamp:
type: string
format: int64
description: The time at which the signature was created.
signature:
type: string
description: The signature of the payload.
v2AddressBookEntry:
type: object
properties:
name:
type: string
example: vaults/1b25635a5b3f/addressBookEntries/95257c5a522f
description: 'The resource name of the address book entry.
Format: `vaults/{vault_id}/addressBookEntries/{entry_id}`'
readOnly: true
address:
type: string
example: '0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6'
description: The blockchain address.
displayName:
type: string
example: My DeFi Wallet
description: A human-readable name for the address.
network:
type: string
example: networks/ethereum-mainnet
description: 'The resource name of the network this address belongs to.
Format: `networks/{network_id}`'
note:
type: string
example: This is my main trading wallet
description: Optional note attached to the address.
createTime:
type: string
format: date-time
example: '2023-01-15T10:30:00Z'
description: Output only. Creation time.
readOnly: true
tracked:
type: boolean
description: If true, assets of this address should be tracked by Utila.
associatedExternalWallet:
type: string
example: vaults/1b25635a5b3f/wallets/95257c5a522f
description: 'The wallet that is associated with this address.
Only set if `tracked` is true.
Format: `vaults/{vault_id}/wallets/{wallet_id}`'
readOnly: true
creator:
type: string
example: users/1b25635a5b3f/users/95257c5a522f
description: 'Output only. The user who issued the address book entry creation.
Format: `users/{user_id}`'
readOnly: true
signed:
type: boolean
description: 'Output only.
Whether the address book entry is cryptographically signed after going through the quorum approval process.'
readOnly: true
description: An address book entry.
required:
- address
- displayName
- network
v2CancelTransactionResponse:
type: object
DecodedCallArg:
type: object
properties:
name:
type: string
title: 'The name of the argument, for example: "dest"'
type:
type: string
title: 'The type of the argument, for example: "AccountId"'
value:
type: string
title: 'The value of the argument as a hex encoded byte array, for example: "0x1234"'
v2TransactionTronTransaction:
type: object
properties:
triggerSmartContract:
$ref: '#/components/schemas/v2TransactionTronTransactionTriggerSmartContract'
freezeBalanceV2:
$ref: '#/components/schemas/v2TransactionTronTransactionFreezeBalanceV2'
unfreezeBalanceV2:
$ref: '#/components/schemas/v2TransactionTronTransactionUnfreezeBalanceV2'
withdrawExpireUnfreeze:
$ref: '#/components/schemas/v2TransactionTronTransactionWithdrawExpireUnfreeze'
delegateResource:
$ref: '#/components/schemas/v2TransactionTronTransactionDelegateResource'
undelegateResource:
$ref: '#/components/schemas/v2TransactionTronTransactionUnDelegateResource'
cancelAllUnfreezeV2:
$ref: '#/components/schemas/v2TransactionTronTransactionCancelAllUnfreezeV2'
voteWitness:
$ref: '#/components/schemas/v2TransactionTronTransactionVoteWitness'
withdrawBalance:
$ref: '#/components/schemas/v2TransactionTronTransactionWithdrawBalance'
transferContract:
$ref: '#/components/schemas/TronTransactionTransferContract'
fee:
description: The fee details of the transaction.
allOf:
- $ref: '#/components/schemas/v2TronTransactionFee'
signature:
type: string
format: byte
description: "ECDSA signature (65 bytes) of the transaction.\n\nAvailable when the transaction has been signed.\n\nEncoded in standard TRON format:\n - Bytes [0-31]: R component (32 bytes, big-endian)\n - Bytes [32-63]: S component (32 bytes, big-endian)\n - Byte [64]: V component (recovery identifier)"
readOnly: true
apiv2Address:
type: object
properties:
value:
type: string
description: The actual address.
infoRef:
type: string
description: 'If it''s an address in the vault (e.g., a wallet address), a reference to address information will be listed here.
Address information can be fetched from `ReferencedAddressesInfo` map with the reference as the key.
Will be populated only if `includeReferencedResources` is set to `true`.'
apiUserStatusEnum:
type: string
enum:
- PENDING
- ACTIVE
WalletSolanaDetails:
type: object
properties:
address:
type: string
description: The address of the wallet.
readOnly: true
v2TransactionReplacementTypeEnum:
type: string
enum:
- CANCEL
- ACCELERATE
description: "The type of the replacement.\n\n - CANCEL: Cancel the transaction.\n - ACCELERATE: Accelerate the transaction."
v2BatchAssetTransfer:
type: object
properties:
asset:
type: string
example: assets/native.ethereum-mainnet
description: "The asset to transfer.\n\nCan be one of the following:\n1. A raw asset name `assets/{asset_id}` (example: `assets/e72ff35a5b15`)\n2. A native asset name `assets/native.{network_id}` (example: `assets/native.ethereum-mainnet`)\n3. An ERC20 asset name `assets/erc20.{network_id}.{contract}` (example: `assets/erc20.ethereum-mainnet.0x6b175474e89094c44da98b954eedeac495271d0f`)\n\nSupported Assets: The native currency of the network and ERC20 tokens.\n\n **Note: ERC20 asset transfers require an approval. See [GetLatestBatchContract](#tag/Blockchains/operation/Blockchains_GetLatestBatchContract) for more information.**\n\n\nSupported Networks: Ethereum and Polygon (Sepolia and Mumbai)"
source:
type: string
description: 'The source of the transfer.
Can be one of the following:
1. A raw string address, (example: `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`)
2. A wallet containing the asset: `vaults/{vault_id}/wallets/{wallet_id}`
3. A specific wallet address containing the asset: `vaults/{vault_id}/wallets/{wallet_id}/addresses/{address_id}`
For Bitcoin, only wallet source is supported (the second option).'
destinations:
type: array
items:
$ref: '#/components/schemas/BatchAssetTransferBatchTransferDestination'
description: The batch transfer destinations.
required:
- asset
- source
- destinations
v2TransactionTronTransactionTriggerSmartContract:
type: object
properties:
ownerAddress:
description: 'The source of the transaction.
A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)'
allOf:
- $ref: '#/components/schemas/apiv2Address'
contractAddress:
description: 'The smart contract address.
A base58 string address (example: `TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g`)'
allOf:
- $ref: '#/components/schemas/apiv2Address'
callValue:
type: string
format: int64
description: 'The amount of SUN passed into the contract (1 TRX = 1,000,000 SUN).
Example: `500000`.'
data:
type: string
description: 'Hex encoded transaction data. This field will be returned only in FULL view.
Example: `0xa9059cbb0000000000000000000000002ed5dd8a98aea00ae32517742ea5289761b2710e0000000000000000000000000000000000000000000000000000000ba43b7400`.'
v2Transaction:
type: object
properties:
name:
type: string
example: vaults/1b25635a5b3f/transactions/95257c5a522f
description: 'The resource name of the transaction.
Format: `vaults/{vault_id}/transactions/{transaction_id}`.'
readOnly: true
type:
readOnly: true
allOf:
- $ref: '#/components/schemas/v2TransactionTypeEnum'
subType:
readOnly: true
allOf:
- $ref: '#/components/schemas/v2TransactionSubTypeEnum'
state:
readOnly: true
allOf:
- $ref: '#/components/schemas/v2TransactionStateEnum'
direction:
readOnly: true
allOf:
- $ref: '#/components/schemas/v2TransactionDirectionEnum'
note:
type: string
description: 'A note to attach to the transaction.
This note is visible to all vault members.'
network:
type: string
example: networks/ethereum-mainnet
description: 'The blockchain network on which the transaction was sent.
Not available for connection transactions (e.g., Exchanges)
Format: `networks/{network_id}`'
hash:
type: string
description: For on-chain transactions, the hash of the transaction.
blockNumber:
type: string
description: For on-chain transactions, the block number of the transaction if it was mined.
signingSession:
type: string
example: vaults/2d2e40r3/signingSessions/132e40r3
description: Available when the transaction has been prepared for signing / signed.
request:
description: The request details of the transaction. Relevant only for transactions initiated through Utila.
allOf:
- $ref: '#/components/schemas/v2TransactionRequest'
amlDetails:
readOnly: true
allOf:
- $ref: '#/components/schemas/TransactionAMLDetails'
gasStationOrder:
type: string
title: The gas station order name
readOnly: true
transfers:
type: array
items:
$ref: '#/components/schemas/TransactionTransfer'
description: If there one or more transfers in the transaction, they will be listed here.
tokenAllowances:
type: array
items:
$ref: '#/components/schemas/TransactionTokenAllowance'
description: If there one or more token allowances in the transaction, they will be listed here.
designatedSigners:
type: array
example:
- users/name@example.com
items:
type: string
description: 'If the transaction is designated to be signed by a specific signer, this field should be set.
Format: `users/{email}` or `users/{id}`
Example: `["users/name@example.com"]` or `["users/a3e4f5"]`'
evmTransaction:
description: 'For EVM-Compatible transaction: Low level transaction details.'
allOf:
- $ref: '#/components/schemas/v2TransactionEVMTransaction'
evmMessage:
description: If this is an EVM message, the message will be listed here.
allOf:
- $ref: '#/components/schemas/TransactionEVMMessage'
evmAccountDelegation:
description: If this is an EVM authorization, the authorization will be listed here.
allOf:
- $ref: '#/components/schemas/v2TransactionEVMAccountDelegation'
tronTransaction:
description: If this is a TVM transaction, the transaction will be listed here.
allOf:
- $ref: '#/components/schemas/v2TransactionTronTransaction'
btcTransaction:
description: 'For BTC transaction: Low level transaction details.'
allOf:
- $ref: '#/components/schemas/TransactionBTCTransaction'
btcPsbt:
description: 'For BTC PSBT: Details of the PSBT transaction
# --- truncated at 32 KB (165 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/utila/refs/heads/main/openapi/utila-transactions-api-openapi.yml