# List transactions

List the account signing history with sorting and pagination, including signed results and any send time recorded by VKS.

Endpoint: GET /transactions
Version: 1.0.0
Security: Auth

## Security:

  - `Auth` (unknown)
    apiKey in header X-Api-Key scopes: vks:access

## Query parameters:

  - `account_id` (string, required)
    Account whose signing history to return.

  - `page` (integer)
    Page number, starting at 1.

  - `limit` (integer)
    Maximum number of items per page. Defaults to 30; values above 100 return at most 100 items.

  - `sort` (string)
    Sort field and direction for transactions. Prefix with `-` for descending.

## Response 200:

  - `200` (unknown)
    The account's transactions.

## Response 200 fields (application/json):

  - `items` (array, required)

  - `items.transaction_id` (string, required)
    Unique identifier assigned to this signing request by VKS.

  - `items.account_id` (string, required)
    Account used to sign the transaction.

  - `items.state` (string, required)
    Status of the signing request.
    Enum: "draft", "awaiting_approvals", "signing", "signed", "rejected", "failed", "expired"

  - `items.chain_gid` (string, required)
    Blockchain identifier in CAIP-2 format, such as eip155:11155111 for Sepolia. The network must support the account address format.

  - `items.intent_hash` (string, required)
    Hash used to verify the transaction details presented for approval.

  - `items.quorum_signer_ids` (array, required)
    Signers selected to approve and sign this transaction.

  - `items.approvals` (array, required)
    Decisions received from the signers. Empty until the first decision arrives; the order is not significant.

  - `items.approvals.signer_id` (string, required)
    Unique identifier of the signer.

  - `items.approvals.decision` (string, required)
    Whether the signer approved or rejected the transaction.
    Enum: "accepted", "rejected"

  - `items.approvals.decided_at` (string, required)
    Time the signer made the decision.

  - `items.raw_tx` (any, required)
    Signed result, encoded in Base64. Ready to send when `result_form` is `transaction`; otherwise use it to create a sponsored transaction. Null until signing is complete.

  - `items.tx_hash` (any, required)
    Hash of the signed transaction, or of the signed action when result_form is ingredient. Null until signing is complete.

  - `items.result_form` (string, required)
    Whether the signed result is ready to send to the blockchain or must first be included in a transaction paid for by a sponsor.
    Enum: "transaction", "ingredient"

  - `items.failure_code` (string)
    Code indicating why the signing request failed. Absent if no failure occurred.

  - `items.created_at` (string, required)
    Time the signing request was created.

  - `items.expires_at` (string, required)
    Deadline for the signing request. Signed results remain available after this time.

  - `items.sent_at` (string | null, required)
    Time VKS received confirmation that a blockchain node accepted the transaction. Null when no such confirmation was received. Does not report transactions sent outside VKS or blockchain confirmations.

  - `items.parameters` (any, required)
    Transaction settings for the selected blockchain family.

  - `items.parameters.family` (string, required)
    Blockchain family for the transaction.
    Enum: "evm", "tron", "bitcoin"

  - `items.parameters.action` (any, required)
    Action to perform on the EVM network.

  - `items.parameters.action.kind` (string, required)
    Transfer the native currency.
    Enum: "transfer"

  - `items.parameters.action.payment` (any, required)
    Who pays the transaction fee and the settings for that payment.

  - `items.parameters.action.payment.mode` (string, required)
    The account pays the transaction fee.
    Enum: "self"

  - `items.parameters.action.payment.nonce` (string, required)
    Account transaction nonce to use for this transaction.

  - `items.parameters.action.payment.gas_limit` (string, required)
    Maximum amount of gas the transaction may use.

  - `items.parameters.action.payment.max_fee_per_gas` (string, required)
    Maximum total fee per unit of gas, in wei.

  - `items.parameters.action.payment.max_priority_fee_per_gas` (string, required)
    Maximum priority fee per unit of gas, in wei.

  - `items.parameters.action.payment.mode` (string, required)
    A sponsor pays the transaction fee.
    Enum: "sponsored"

  - `items.parameters.action.payment.sponsor` (string, required)
    Address of the account that will pay the transaction fee.

  - `items.parameters.action.payment.delegate_nonce` (string, required)
    Account delegate counter used for sponsored actions, separate from the account transaction nonce. Revoking and restoring the delegation does not reset this value.

  - `items.parameters.action.payment.authorization` (object)
    Authorization needed for the first sponsored action when the account has no delegate. Omit when a delegate is already set.

  - `items.parameters.action.payment.authorization.delegate` (string, required)
    Contract to authorize for sponsored actions. It must be supported by the signers.

  - `items.parameters.action.payment.authorization.account_nonce` (string, required)
    Current account nonce used to authorize the delegation.

  - `items.parameters.action.to` (string, required)
    Recipient address.

  - `items.parameters.action.amount` (string, required)
    Amount in wei.

  - `items.parameters.action.kind` (string, required)
    Transfer an ERC-20 token.
    Enum: "erc20_transfer"

  - `items.parameters.action.token` (string, required)
    The ERC-20 token contract's address.

  - `items.parameters.action.amount` (string, required)
    Amount in token base units; the spending allowance for approvals.

  - `items.parameters.action.kind` (string, required)
    Set an ERC-20 spending allowance.
    Enum: "erc20_approve"

  - `items.parameters.action.spender` (string, required)
    Address allowed to spend the token.

  - `items.parameters.action.kind` (string, required)
    Revoke the account delegation.
    Enum: "delegation"

  - `items.parameters.action.account_nonce` (string, required)
    Current account nonce used to authorize the delegation revocation.

  - `items.parameters.action.kind` (string, required)
    Pay the fee for another account action.
    Enum: "sponsor_envelope"

  - `items.parameters.action.ingredient` (string, required)
    Signed result from the sponsored action. Pass its raw_tx value unchanged.

  - `items.parameters.action.to` (string, required)
    Sponsored account address.

  - `items.parameters.action.kind` (string, required)
    Pay the fee for another account delegation revocation.
    Enum: "sponsor_delegation"

  - `items.parameters.action.ingredient` (string, required)
    Signed result from the delegation revocation. Pass its raw_tx value unchanged.

  - `items.parameters.ref_block_bytes` (string, required)
    Last two bytes of the reference block number. For block 70769822, use dc9e.

  - `items.parameters.ref_block_hash` (string, required)
    Reference block hash fragment: hex characters 16–31 of the block ID, counting from zero.

  - `items.parameters.timestamp_unix_ms` (integer, required)
    Transaction creation time, in Unix milliseconds.

  - `items.parameters.expiration_unix_ms` (integer, required)
    Transaction expiry time, in Unix milliseconds. Must be after timestamp_unix_ms and no more than 24 hours later. Signing must finish before this time.

  - `items.parameters.action` (any, required)
    Action to perform on Tron.

  - `items.parameters.action.kind` (string, required)
    Transfer TRX to the recipient.
    Enum: "transfer"

  - `items.parameters.action.amount` (string, required)
    Amount in sun.

  - `items.parameters.action.kind` (string, required)
    Transfer TRC-20 tokens to the recipient.
    Enum: "trc20_transfer"

  - `items.parameters.action.token` (string, required)
    TRC-20 token contract address.

  - `items.parameters.action.amount` (string, required)
    Token base units, from 1 to 115792089237316195423570985008687907853269984665640564039457584007913129639935. Values outside this numeric range are rejected.

  - `items.parameters.action.fee_limit` (string, required)
    Energy budget in sun, including resource equivalent, from 1 to 9223372036854775807. This does not guarantee zero TRX burn. Check the current network fee limit through RPC before requesting signing; the API validates the fee limit against the numeric range above.

  - `items.parameters.action.kind` (string, required)
    Create and activate the recipient account.
    Enum: "account_create"

  - `items.parameters.action.kind` (string, required)
    Stake TRX through Stake 2.0 to obtain the selected resource.
    Enum: "stake"

  - `items.parameters.action.resource` (string, required)
    Tron resource to stake or delegate.
    Enum: "bandwidth", "energy"

  - `items.parameters.action.amount` (string, required)
    Amount in sun, from 1 to 9223372036854775807.

  - `items.parameters.action.kind` (string, required)
    Unstake TRX from the selected resource through Stake 2.0. The resulting withdrawal is subject to the network waiting period.
    Enum: "unstake"

  - `items.parameters.action.kind` (string, required)
    Delegate resource capacity backed by the specified staked TRX amount to the recipient.
    Enum: "delegate_resource"

  - `items.parameters.action.amount` (string, required)
    Staked TRX amount in sun backing the resource capacity, not a count of resource units. From 1 to 9223372036854775807; the exact numeric bound is validated separately.

  - `items.parameters.action.kind` (string, required)
    Reclaim resource capacity backed by the specified staked TRX amount from the recipient.
    Enum: "undelegate_resource"

  - `items.parameters.action.kind` (string, required)
    Withdraw all matured unstaked TRX to the signing account. The network determines the withdrawable amount; no fixed amount or recipient is supplied.
    Enum: "withdraw_unstaked"

  - `items.parameters.action` (object, required)
    Bitcoin transaction settings. The fee is the total input value minus the transfer amount and change. Inputs must cover both outputs and a positive fee of at least 1 satoshi per virtual byte. Input order is preserved.

  - `items.parameters.action.kind` (string, required)
    Enum: "transfer"

  - `items.parameters.action.amount` (string, required)
    Transfer amount in satoshi.

  - `items.parameters.action.inputs` (array, required)
    Unspent outputs to use for the transaction. Each output must belong to the account and may appear only once.

  - `items.parameters.action.inputs.txid` (string, required)
    Identifier of the transaction containing the output to spend, as shown by a block explorer.

  - `items.parameters.action.inputs.vout` (integer, required)
    Index of the output to spend within that transaction.

  - `items.parameters.action.inputs.amount` (string, required)
    Value of the output to spend, in satoshi.

  - `items.parameters.action.inputs.script_pubkey` (string, required)
    Locking script of the output to spend. The output must belong to the account and use its SegWit address format.

  - `items.parameters.action.change` (string)
    Amount to return to the account address, in satoshi. Omit or set to zero when no change is needed.

  - `meta` (object, required)
    Pagination metadata returned on every list response. `page` and `limit` echo the values used to build this page (defaults are applied when the request omits them). `total` and `total_pages` reflect the full result set after any filters are applied.
    Example: {"limit":20,"page":1,"total":42,"total_pages":3}

  - `meta.limit` (integer, required)
    Page size used to build this response.

  - `meta.page` (integer, required)
    Index of the page returned, starting at 1.

  - `meta.total` (integer, required)
    Total number of items matching the request across all pages.

  - `meta.total_pages` (integer, required)
    Total number of pages available at the current `limit`.

## Response 400:

  - `400` (unknown)
    Some request values are missing or invalid. Check fields for details.

## Response 400 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

  - `fields` (array)
    List of invalid fields in the request.

  - `fields.name` (string, required)
    The name of the invalid field.
    Example: max_len

  - `fields.reason` (string, required)
    Why this field is invalid.
    Example: 32

## Response 401:

  - `401` (unknown)
    Authentication is required to make this request.

## Response 401 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 403:

  - `403` (unknown)
    You do not have permission to access VKS in this workspace.

## Response 403 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 404:

  - `404` (unknown)
    The requested resource could not be found.

## Response 404 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 503:

  - `503` (unknown)
    The service is temporarily unavailable. Try again later.

## Response 503 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response default:

  - `default` (unknown)
    Details of an error that prevented the request from completing.

## Response default fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 200 examples:

  - `Signing history with complete normalized intent parameters` (unknown)

## Response 400 examples:

  - `Invalid request` (unknown)

## Response 404 examples:

  - `Transaction not found` (unknown)

## Response default examples:

  - `Unexpected failure` (unknown)

