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

# Scan Transaction

`POST /v0/sui/transaction/scan`

Get a risk recommendation with plain-language reasons for a Sui transaction.

## Request body

- SuiSuiRequestSchema
  - `chain` 'mainnet', required
  - `options` SuiOptions[] — 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 gas estimation output in the response
  - `account_address` string, required
  - `transaction` string, required
  - `metadata` union, required — Metadata
    - SuiWalletRequestMetadata
      - `type` 'wallet', required — Metadata for wallet requests
      - `url` string, required — URL of the dApp originating the transaction
      - `account` RoutersChainAgnosticModelsRequestAccount
        - `account_id` string, required — Unique identifier for the account.
        - `account_creation_timestamp` string, date-time — Timestamp when the account was created.
        - `user_age` integer — Age of the user in years
        - `user_country_code` string — ISO country code of the user's location.
        - `account_addresses` string[] — List of all account addresses in different chains based on the CAIPs standard (https://github.com/ChainAgnostic/CAIPs). Ethereum mainnet example: eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb
      - `connection` RoutersChainAgnosticModelsRequestConnection
        - `user_agent` string — User agent string from the client's browser or application.
        - `ip_address` string, ipvanyaddress, required — IP address of the customer making the request. Both IPv4 and IPv6 addresses are supported.
        - `origin` string, uri — The full URL of the website that the request was directed to.
        - `walletconnect_name` string — WalletConnect session name, when the request originates from a WalletConnect session.
        - `walletconnect_description` string — WalletConnect session description, when the request originates from a WalletConnect session.
    - SuiInAppRequestMetadata
      - `type` 'in_app' — Metadata for in-app requests
      - `account` RoutersChainAgnosticModelsRequestAccount
        - `account_id` string, required — Unique identifier for the account.
        - `account_creation_timestamp` string, date-time — Timestamp when the account was created.
        - `user_age` integer — Age of the user in years
        - `user_country_code` string — ISO country code of the user's location.
        - `account_addresses` string[] — List of all account addresses in different chains based on the CAIPs standard (https://github.com/ChainAgnostic/CAIPs). Ethereum mainnet example: eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb
      - `connection` RoutersChainAgnosticModelsRequestConnection
        - `user_agent` string — User agent string from the client's browser or application.
        - `ip_address` string, ipvanyaddress, required — IP address of the customer making the request. Both IPv4 and IPv6 addresses are supported.
        - `origin` string, uri — The full URL of the website that the request was directed to.
        - `walletconnect_name` string — WalletConnect session name, when the request originates from a WalletConnect session.
        - `walletconnect_description` string — WalletConnect session description, when the request originates from a WalletConnect session.
  - `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

- SuiTransactionScanResponse
  - `simulation` union — Simulation result; Only present if simulation option is included in the request
    - SuiSimulationResult
      - `status` 'Success', required
      - `assets_diffs` object — Mapping between the address of an account to the assets diff during the transaction
      - `address_details` SuiAddressDetailsBaseSchemaSuiAddress[] — Details of addresses involved in the transaction
        - `account_address` string, required — Encoded public key of the account
        - `description` string, nullable — Description of the account
      - `account_summary` SuiAccountSummary, required
        - `account_assets_diffs` union[] — Assets diffs of the requested account address
          - union
            - SuiNativeAssetDiff
              - …
            - SuiNFTAssetDiff
              - …
            - SuiCoinsAssetDiff
              - …
        - `total_usd_diff` SuiTotalUsdDiffSchema, required
          - `in` number, required — Total incoming USD transfers
          - `out` number, required — Total outgoing USD transfers
          - `total` number — Total USD transfers
    - SuiSimulationErrorSchema
      - `status` 'Error', required
      - `error` string, required — Error message
  - `validation` union
    - SuiValidationResult
      - `status` 'Success', required
      - `result_type` 'Benign' | 'Warning' | 'Malicious' | 'Error', 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` SuiValidationFeature[], required
        - `type` 'Benign' | 'Warning' | 'Malicious' | 'Info', required
        - `feature_id` string, required
        - `description` string, required — Textual description
        - `address` string, required — Address the feature refers to
    - SuiValidationErrorSchema
      - `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.
    - SuiGasEstimationSchema
      - `status` 'Success', required — Gas estimation succeeded.
      - `computation_cost` string, required — Cost of the computation performed by the transaction, in MIST.
      - `storage_cost` string, required — Cost of the storage the transaction consumes, in MIST.
      - `storage_rebate` string, required — Rebate for storage freed by the transaction, in MIST.
      - `non_refundable_storage_fee` string, required — Portion of the storage fee that is not refundable, in MIST.
      - `used` string, required — Net fee charged (computation_cost + storage_cost - storage_rebate), in MIST.
    - SuiGasEstimationErrorSchema
      - `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/versions/17c41f337b2e/schema)
