---
title: "Scan Transaction"
method: POST
path: "/v0/stellar/transaction/scan"
tags: ["Stellar"]
---

# Scan Transaction

`POST /v0/stellar/transaction/scan`

Gets a transaction and returns a full simulation indicating what will happen in the transaction together with a recommended action and some textual reasons of why the transaction was flagged that way.

## Request body

- StellarTransactionScanRequest
  - `chain` 'pubnet' | 'futurenet' | 'testnet', required
  - `options` StellarOptions[] — List of options to include in the response - `Options.validation`: Include Options.validation output in the response - `Options.simulation`: Include Options.simulation output in the response - `Options.gas_estimation`: Include Options.gas_estimation output in the response
  - `account_address` string, required
  - `transaction` string, required
  - `metadata` union, required — Metadata
    - StellarWalletRequestMetadata
      - `type` 'wallet', required — Metadata for wallet requests
      - `url` string, required — URL of the dApp originating the transaction
      - `non_dapp` boolean, nullable — Indicates that the transaction was not initiated by a dapp. Use false when the transaction is from a dapp.
    - StellarInAppRequestMetadata
      - `type` 'in_app' — Metadata for in-app requests
      - `non_dapp` boolean, nullable — Indicates that the transaction was not initiated by a dapp. Use false when the transaction is from a dapp.
  - `transaction_hints` TransactionHint[] — Customer-supplied hints about transaction intent that cannot be derived from on-chain simulation alone. Each element is a typed hint identified by its `type` field.
    - union — A single customer-supplied hint about transaction intent. The `type` field identifies which hint variant this is.
      - CrossChainBridgeHint — Customer-supplied context for a cross-chain bridge deposit where the protocol does not emit the destination on-chain.
        - `type` 'cross_chain_bridge', required — Hint type discriminator (`cross_chain_bridge`).
        - `destination_address` string — The intended recipient address on the destination chain. Required when the bridge protocol does not emit this on-chain (e.g. Relay, some Across deposit routes).
        - `destination_chain` union — The destination chain for the bridged assets.
          - 'arbitrum' | 'avalanche' | 'base' | 'base-sepolia' | 'lordchain' | 'lordchain-testnet' | 'metacade' | 'metacade-testnet' | 'bsc' | 'ethereum' | 'optimism' | 'polygon' | 'zksync' | 'zksync-sepolia' | 'zora' | 'linea' | 'blast' | 'scroll' | 'ethereum-sepolia' | 'degen' | 'avalanche-fuji' | 'gnosis' | 'worldchain' | 'soneium-minato' | 'ronin' | 'apechain' | 'berachain' | 'berachain-bartio' | 'ink' | 'ink-sepolia' | 'abstract' | 'abstract-testnet' | 'soneium' | 'unichain' | 'sei' | 'flow-evm' | 'hyperevm' | 'megaeth' | 'katana' | 'plume' | 'xlayer' | 'monad' | 'monad-testnet' | 'tempo' | 'tempo-testnet' | 'kite-ai' | 'kaia' | 'plasma' | 'mantle' | 'robinhood' | 'arc' | 'flare' — The chain name
          - string
        - `destination_asset` union — The asset the recipient will receive on the destination chain.
          - CrossChainBridgeNativeAsset
            - `type` 'NATIVE', required — Type of the asset (`NATIVE`)
            - `raw_value` string — Amount to be received in the asset's smallest unit (before decimal division), e.g. wei for ETH.
          - CrossChainBridgeFungibleAsset
            - `type` 'FUNGIBLE', required — Type of the asset (`FUNGIBLE`)
            - `address` string, required — Token contract address on the destination chain.
            - `raw_value` string — Amount to be received in the asset's smallest unit (before decimal division), e.g. base units for ERC-20 tokens.
          - CrossChainBridgeNonFungibleAsset
            - `type` 'NON_FUNGIBLE', required — Type of the asset (`NON_FUNGIBLE`)
            - `address` string, required — NFT collection contract address on the destination chain.
            - `token_id` string, required — Token ID of the specific NFT being bridged.
      - GenericTransactionHint — Fallback for unrecognized or future hint types. Accepts any hint with a `type` field.
        - `type` string, required — Hint type identifier for unrecognized or future hint types.

## Response `200`

Successful Response

- StellarTransactionScanResponse
  - `simulation` union — Simulation result; Only present if simulation option is included in the request
    - StellarSimulationResult
      - `status` 'Success', required
      - `assets_diffs` object — Mapping between the address of an account to the assets diff during the transaction
      - `exposures` object — Mapping between the address of an account to the exposure of the assets during the transaction
      - `assets_ownership_diff` object, required — Ownership diffs of the account addresses
      - `address_details` StellarAddressDetailsBaseSchema[] — Details of addresses involved in the transaction
        - `account_address` unknown, required
        - `description` string, nullable — Description of the account
      - `account_summary` StellarAccountSummary, required
        - `account_assets_diffs` union[] — Assets diffs of the requested account address
          - union
            - StellarLegacyAssetDiff
              - …
            - StellarNativeAssetDiff
              - …
            - StellarContractAssetDiff
              - …
        - `account_exposures` union[], required — Exposures made by the requested account address
          - union
            - StellarLegacyAssetExposure
              - …
            - StellarNativeAssetExposure
              - …
        - `account_ownerships_diff` StellarAccountSetOptionsOwnershipDiffSchema[], required — Ownership diffs of the requested account address
          - `type` 'SET_OPTIONS'
          - `pre_signers` string[], required — List of public keys that can sign on behalf of the account pre-transaction
          - `post_signers` string[], required — List of public keys that can sign on behalf of the account post-transaction
        - `total_usd_diff` StellarTotalUsdDiffSchema, required
          - `in` number, required — Total incoming USD transfers
          - `out` number, required — Total outgoing USD transfers
          - `total` number — Total USD transfers
        - `total_usd_exposure` object — Total USD exposure for each of the spender addresses during the transaction
    - StellarSimulationErrorSchema
      - `status` 'Error', required
      - `error` string, required — Error message
  - `validation` union
    - StellarValidationResult
      - `status` 'Success', required
      - `result_type` 'Benign' | 'Warning' | 'Malicious', required
      - `description` string, required — A textual description about the validation result
      - `reason` string, required — A textual description about the reasons the transaction was flagged with result_type
      - `classification` string, required — A textual classification that can be presented to the user explaining the reason.
      - `features` StellarValidationFeature[], required
        - `type` 'Benign' | 'Warning' | 'Malicious' | 'Info', required
        - `feature_id` string, required
        - `description` string, required — Textual description
        - `address` string, required — Address the feature refers to
    - StellarValidationErrorSchema
      - `status` 'Error', required
      - `error` string, required — Error message
  - `gas_estimation` union — Gas estimation for the transaction; only present when the gas_estimation option is requested. Classic and Soroban transactions each return their respective variant.
    - StellarClassicGasEstimationSchema
      - `status` 'Success', required — Gas estimation succeeded.
      - `base_fee` string, required — The network's minimum fee per operation, in stroops (currently 100).
      - `operation_count` string, required — Number of operations in the transaction.
      - `used` string, required — Fee charged, in stroops. On-chain: the real fee taken. Pre-sign: the network-minimum estimate (base_fee times operation_count, plus one operation for a fee-bump). Surge pricing can make the real on-chain charge higher.
    - StellarSorobanGasEstimationSchema
      - `status` 'Success', required — Gas estimation succeeded.
      - `inclusion_fee` string, required — The inclusion (priority) fee - paid to get the transaction into a ledger, separate from resource costs. In stroops.
      - `resource_fee` string, required — The fee for the contract invocation's resource usage - CPU, ledger reads/writes, and bandwidth. In stroops.
      - `resources` StellarSorobanResourcesSchema, required
        - `cpu_instructions` string, required — Number of CPU instructions the invocation consumes.
        - `read_bytes` string, required — Bytes read from the ledger.
        - `write_bytes` string, required — Bytes written to the ledger.
      - `used` string, required — Fee charged, in stroops. On-chain: the real fee taken. Pre-sign: the estimated total (inclusion_fee + resource_fee).
    - StellarGasEstimationErrorSchema
      - `status` 'Error', required — Gas estimation failed.
      - `error` string, required — Reason gas estimation could not be produced (e.g. the simulation failed).

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/blockaid-official/apis/blockaid-api.md) · [All operations](https://skmtc.net/blockaid-official/apis/blockaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/blockaid-official/blockaid-api/revisions/17c41f337b2e/schema)
