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

# Scan Transaction

`POST /v0/hedera/transaction/scan`

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

## Request body

- HederaTransactionRequestSchema
  - `chain` 'mainnet', required — The chain the transaction runs on.
  - `options` HederaOptions[] — Select which component will be included in the response. - `simulation` - Include the results of the transaction simulation in your response. - `validation` - Include a security validation of the transaction in your response.
  - `account_address` unknown, required
  - `transaction` string, required
  - `metadata` union, required — Additional information regarding the wallet involved in the transaction.
    - HederaWalletRequestMetadata
      - `type` 'wallet', required — Metadata for wallet requests
      - `url` string, required — URL of the dApp the transaction originated from.
      - `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.
      - `non_dapp` boolean, nullable — Indicates that the transaction was not initiated by a dapp. Use false when the transaction is from a dapp.
    - HederaInAppRequestMetadata
      - `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.
      - `non_dapp` boolean, nullable — Indicates that the transaction was not initiated by a dapp. Use false when the transaction is from a dapp.

## Response `200`

Successful Response

- HederaTransactionScanResponseSchema — Transaction scan response schema.
  - `simulation` union — Simulation result; Only present if simulation option is included in the request
    - HederaSimulationResponse
      - `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
      - `address_details` HederaAddressDetailsBaseSchema[] — 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` HederaAccountSummaryBaseSchemaType, required
        - `account_assets_diffs` union[] — Assets diffs of the requested account address
          - union
            - HederaAccountNativeAssetTransferDiffDetailsSchema
              - …
            - HederaAccountTokenTransferDiffDetailsSchema
              - …
            - NFTDetailsSchemaERC721DiffSchema
              - …
        - `account_exposures` HederaAddressAssetExposureSchemaType[], required — Exposures made by the requested account address
          - `asset` union, required
            - HederaNativeAssetDetailsSchema
              - …
            - HederaTokenDetailsSchema
              - …
            - HederaNFTDetailsSchema
              - …
          - `spenders` object — Mapping between the spender address and the exposure of the asset
        - `total_usd_diff` HederaTotalUsdDiffSchema, 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
      - `transaction_actions` union[], nullable
        - union
          - 'native_wrap' | 'native_transfer' | 'token_transfer' | 'swap' | 'mint' | 'stake' | 'approval' | 'proxy_upgrade' | 'ownership_change' | 'set_code_account'
          - string
    - HederaSimulationErrorSchema
      - `status` 'Error', required
      - `error` string, required — Error message
      - `error_details` union — Error details if the simulation failed.
        - HederaGenericErrorDetails
          - `code` string, required — The error code
          - `category` string, required
        - HederaUnsupportedTransactionTypeErrorDetails
          - `category` 'INVALID_INPUT', required
          - `code` 'UNSUPPORTED_TRANSACTION_TYPE', required
          - `transaction_type` string, required — The unsupported transaction type
  - `validation` union — Validation result; Only present if validation option is included in the request
    - object
      - `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` HederaValidationResponse[], required
        - `type` 'Benign' | 'Warning' | 'Malicious' | 'Info', required
        - `feature_id` string, required — The ID of the feature associated with this transaction.
        - `description` string, required — Textual description of the feature.
        - `address` string, nullable, required — Address the feature relates to.
    - object
      - `status` 'Error', required
      - `error` string, required — Error message

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