---
title: "Scan Bulk of Post-Transactions"
method: POST
path: "/v0/evm/post-transaction-bulk/scan"
tags: ["EVM"]
---

# Scan Bulk of Post-Transactions

`POST /v0/evm/post-transaction-bulk/scan`

Scan transactions that were already executed on chain, returns validation with features indicating address poisoning entites and malicious operators.

## Request body

- PostTransactionBulkRequest
  - `chain` union, required
    - '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 — The chain ID as hex or decimal string
  - `options` RoutersEvmModelsValidationOptions[] — List of one or both of options for the desired output. "simulation" - include simulation output in your response. "validation" - include security validation of the transaction in your response. Default is ["validation"]
  - `metadata` ScanRequestMetadata, required
    - `domain` string — The full URL of the DApp or website that initiated the request, for cross-reference. Must use the https or http scheme and contain a valid hostname. Cannot contain JSON, braces, or other embedded data structures.
    - `non_dapp` boolean — Set to true when the request was not initiated by a dapp. Dapp requests should provide the `domain` field.
    - `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.
  - `block` union — The relative block for the block validation. Can be "latest" or a block number.
    - integer
    - string
  - `state_override` object — Override the state of the chain. This is useful for testing purposes.
  - `simulate_with_estimated_gas` boolean — Simulate transactions using gas estimation result. This requires "gas_estimation" option to be enabled.
  - `data` string[], required — Transaction hashes to scan

## Response `200`

Successful Response

- RoutersEvmResponseTransactionScanResponse[]
  - `validation` union
    - RoutersEvmResponseTransactionValidation
      - `status` 'Success', required — A string indicating if the simulation was successful or not.
      - `result_type` 'Benign' | 'Warning' | 'Malicious', required — Result type returned when validation succeeds.
      - `description` string — A textual description that can be presented to the user about what this transaction is doing.
      - `reason` string — A textual description about the reasons the transaction was flagged with result_type.
      - `classification` string — A textual classification that can be presented to the user explaining the reason.
      - `features` RoutersEvmResponseTransactionScanFeature[], required — A list of features about this transaction explaining the validation.
        - `type` 'Malicious' | 'Warning' | 'Benign' | 'Info', required — Security result of a transaction scan feature.
        - `feature_id` string, required — Feature name
        - `description` string, required — Textual description
        - `address` string — Address the feature refers to
        - `metadata` object — Metadata related to the feature
    - RoutersEvmResponseTransactionValidationError
      - `status` 'Success', required — A string indicating if the simulation was successful or not.
      - `result_type` 'Error', required — A string indicating if the transaction is safe to sign or not.
      - `description` '', required — A textual description that can be presented to the user about what this transaction is doing.
      - `reason` '', required — A textual description about the reasons the transaction was flagged with result_type.
      - `classification` '', required — A textual classification that can be presented to the user explaining the reason.
      - `features` RoutersEvmResponseTransactionScanFeature[], required — A list of features about this transaction explaining the validation.
        - `type` 'Malicious' | 'Warning' | 'Benign' | 'Info', required — Security result of a transaction scan feature.
        - `feature_id` string, required — Feature name
        - `description` string, required — Textual description
        - `address` string — Address the feature refers to
        - `metadata` object — Metadata related to the feature
      - `error` string, required — An error message if the validation failed.
  - `simulation` union
    - RoutersEvmResponseTransactionSimulation
      - `status` 'Success', required — A string indicating if the simulation was successful or not.
      - `assets_diffs` object, required — dictionary describes the assets differences as a result of this transaction for every involved address
      - `transaction_actions` union[], required — Describes the nature of the transaction and what happened as part of it
        - union
          - 'mint' | 'stake' | 'swap' | 'native_transfer' | 'token_transfer' | 'approval' | 'set_code_account' | 'proxy_upgrade' | 'ownership_change' | 'bridge' — Type of action performed in the transaction.
          - string
      - `total_usd_diff` object, required — dictionary represents the usd value each address gained / lost during this transaction
      - `exposures` object, required — dictionary describes the exposure differences as a result of this transaction for every involved address (as a result of any approval / setApproval / permit function)
      - `total_usd_exposure` object, required — a dictionary representing the usd value each address is exposed to, split by spenders
      - `address_details` object, required — a dictionary including additional information about each relevant address in the transaction.
      - `account_summary` RoutersEvmResponseAccountSummary, required
        - `assets_diffs` union[], required — All assets diffs related to the account address
          - union
            - RoutersEvmResponseERC20AddressAssetBalanceChangeDiff
              - …
            - RoutersEvmResponseERC721AddressAssetBalanceChangeDiff
              - …
            - RoutersEvmResponseERC1155AddressAssetBalanceChangeDiff
              - …
            - RoutersEvmResponseNativeAddressAssetBalanceChangeDiff
              - …
        - `traces` union[], required — All assets traces related to the account address
          - union
            - RoutersEvmResponseERC20AssetTrace
              - …
            - RoutersEvmResponseERC721AssetTrace
              - …
            - RoutersEvmResponseERC1155AssetTrace
              - …
            - RoutersEvmResponseNativeAssetTrace
              - …
            - RoutersEvmResponseERC20ExposureTrace
              - …
            - RoutersEvmResponseERC721ExposureTrace
              - …
            - RoutersEvmResponseERC1155ExposureTrace
              - …
            - RoutersEvmResponseBridgeAssetTrace — Trace of a cross-chain bridge asset transfer, showing source and destination asset movements
              - …
        - `total_usd_diff` RoutersEvmResponseUSDDiff, required
          - `in` string, required
          - `out` string, required
          - `total` string, required
        - `exposures` union[], required — All assets exposures related to the account address
          - union
            - RoutersEvmResponseERC20AddressExposure
              - …
            - RoutersEvmResponseERC721AddressExposure
              - …
            - RoutersEvmResponseERC1155AddressExposure
              - …
        - `total_usd_exposure` object, required — Total usd exposure related to the account address
      - `params` RoutersEvmResponseJsonRPCParams
        - `from` string — The address the transaction is sent from.
        - `to` string — The address the transaction is directed to.
        - `value` string — The value to be sent.
        - `data` string — The data to be sent.
        - `gas` string — The gas to be sent.
        - `gas_price` string — The gas price to be sent.
        - `block_tag` string — The block tag to be sent.
        - `chain` string — The chain to be sent.
        - `calldata` RoutersEvmResponseCallData
          - `function_selector` string, required — The function selector of the function called in the transaction
          - `function_signature` string — The function signature of the function called in the transaction
          - `function_declaration` string — The function declaration of the function called in the transaction
        - `user_operation_calldata` RoutersEvmResponseCallData
          - `function_selector` string, required — The function selector of the function called in the transaction
          - `function_signature` string — The function signature of the function called in the transaction
          - `function_declaration` string — The function declaration of the function called in the transaction
      - `contract_management` object — Describes the state differences as a result of this transaction for every involved address
      - `session_key` object, required — Session keys created in this transaction per address
      - `missing_balances` RoutersEvmResponseMissingBalance[] — Missing balances in the transaction
        - `asset` union, required — The asset that is missing balance
          - RoutersEvmTokenDetailsERC20TokenDetails
            - `name` string — string represents the name of the asset
            - `symbol` string — asset's symbol name
            - `address` string, required — address of the token
            - `logo_url` string — url of the token logo
            - `type` 'ERC20', required — asset type.
            - `decimals` integer, required — asset's decimals
          - RoutersEvmTokenDetailsNativeAssetDetails
            - `type` 'NATIVE', required — asset type.
            - `name` string — string represents the name of the asset
            - `symbol` string — asset's symbol name
            - `chain_name` string, required
            - `chain_id` integer, required
            - `decimals` integer, required
            - `logo_url` string, required
        - `required_balance` RoutersEvmResponseBalance, required
          - `raw_value` string, required — The raw value of the balance in hex string format
          - `value` string — The value of the balance in decimal string format
        - `current_balance` RoutersEvmResponseBalance, required
          - `raw_value` string, required — The raw value of the balance in hex string format
          - `value` string — The value of the balance in decimal string format
        - `missing_balance` RoutersEvmResponseBalance, required
          - `raw_value` string, required — The raw value of the balance in hex string format
          - `value` string — The value of the balance in decimal string format
      - `simulation_run_count` integer — The number of times the simulation ran until success
      - `cross_chain_asset_diffs` RoutersEvmResponseCrossChainAssetDiffs[], nullable — Cross-chain asset diffs per address, showing asset movements across different chains (e.g. bridge transactions)
        - `address` string, required — The address for which cross-chain asset diffs are reported
        - `obj` RoutersEvmResponseCrossChainAssetDiffObject[], required — List of cross-chain asset diffs for this address
          - `chain` string, required — The chain identifier where the asset exists
          - `asset_type` string, required — The type of the asset (e.g. ERC20, NATIVE, FUNGIBLE)
          - `asset` union, required — Details of the asset involved in the diff
            - RoutersEvmTokenDetailsERC20TokenDetails
              - …
            - RoutersEvmTokenDetailsERC721TokenDetails
              - …
            - RoutersEvmTokenDetailsERC1155TokenDetails
              - …
            - RoutersEvmTokenDetailsNONERCTokenDetails
              - …
            - RoutersEvmTokenDetailsNativeAssetDetails
              - …
          - `in` RoutersEvmResponseERC20Diff[], required — Asset value changes received on this chain
            - `usd_price` string — usd equal of the asset that was transferred from this address
            - `summary` string — user friendly description of the asset transfer
            - `value` string — value after divided by decimals, that was transferred from this address
            - `raw_value` string, required — value before divided by decimal, that was transferred from this address
          - `out` RoutersEvmResponseERC20Diff[], required — Asset value changes sent from this chain
            - `usd_price` string — usd equal of the asset that was transferred from this address
            - `summary` string — user friendly description of the asset transfer
            - `value` string — value after divided by decimals, that was transferred from this address
            - `raw_value` string, required — value before divided by decimal, that was transferred from this address
    - RoutersEvmResponseTransactionSimulationError
      - `status` 'Error', required — A string indicating if the simulation was successful or not.
      - `error` string, required — An error message if the simulation failed.
      - `error_details` union — Error details if the simulation failed.
        - RoutersEvmResponseGeneralInsufficientFundsErrorDetails
          - `code` 'GENERAL_INSUFFICIENT_FUNDS', required — The type of the model
          - `category` 'REVERT'
          - `account_address` string, required — The address of the account
          - `current_balance` string — The current balance of the account
          - `required_balance` string — The required balance of the account
          - `asset` union, required — The asset that the account does not have enough balance for
            - RoutersEvmResponseNativeAsset
              - …
            - RoutersEvmResponseERC20Asset
              - …
            - RoutersEvmResponseERC721Asset
              - …
            - RoutersEvmResponseERC1155Asset
              - …
        - RoutersEvmResponseGeneralInvalidAddressErrorDetails
          - `code` 'GENERAL_INVALID_ADDRESS', required — The type of the model
          - `category` 'INVALID_INPUT'
          - `address` string, required — The address that is invalid
        - RoutersEvmResponseGenericErrorDetails
          - `code` string, required — The error code
          - `category` string, required
        - RoutersEvmResponseUnsupportedEIP712MessageErrorDetails
          - `code` 'UNSUPPORTED_EIP712_MESSAGE', required — The type of the model
          - `category` 'INVALID_INPUT'
          - `domain_name` string, required — The domain name that is unsupported
          - `message_type` string, required — The message type that is unsupported
      - `description` string, required — A string explaining why the transaction failed
  - `events` RoutersEvmModelsTransactionScanEvent[]
    - `emitter_address` string, required
    - `emitter_name` string
    - `name` string
    - `params` RoutersEvmModelsTransactionScanLogParamInfo[]
      - `type` string, required
      - `value` union, required
        - string
        - object
        - unknown[]
          - unknown
      - `internalType` string
      - `name` string
    - `topics` string[], required
    - `data` string, required
  - `gas_estimation` union
    - RoutersEvmModelsTransactionScanGasEstimation
      - `status` 'Success', required
      - `used` string, required
      - `estimate` string, required
    - RoutersEvmModelsTransactionScanGasEstimationError
      - `status` 'Error', required
      - `error` string, required
  - `user_operation_gas_estimation` union
    - RoutersEvmModelsUserOperationV6GasEstimation
      - `status` 'Success', required
      - `pre_verification_gas_estimate` string, required
      - `verification_gas_estimate` string, required
      - `call_gas_estimate` string, required
    - RoutersEvmModelsUserOperationV7GasEstimation
      - `status` 'Success', required
      - `pre_verification_gas_estimate` string, required
      - `verification_gas_estimate` string, required
      - `call_gas_estimate` string, required
      - `paymaster_verification_gas_estimate` string, required
    - RoutersEvmModelsTransactionScanGasEstimationError
      - `status` 'Error', required
      - `error` string, required
  - `features` object
  - `block` string, required
  - `chain` string, required
  - `account_address` string

## 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)
