---
updatedAt: 2026-06-04T09:26:53.000Z
agentTools:
  projectIndex: https://docs.iofinnet.com/llms.txt
---

# Scan EVM or SVM transaction for security threats

Scans an EVM or SVM transaction for potential security threats using Blockaid.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Crypto API v1",
    "version": "1.0.0",
    "description": "# IOFinnet Crypto API\n\nProgrammatic access to multi-chain vault operations: address registration, balance queries,\nand transaction building/submission across EVM, SVM, UTXO, TVM, and XRP ecosystems.\n\n## Authentication\n\nAll endpoints require a Platform-issued bearer token in the `Authorization` header:\n\n    Authorization: Bearer <token>\n\n## Pagination\n\nMost listing endpoints use Relay-style cursor pagination. Use `first` + `after` to paginate\nforward and `last` + `before` to paginate backward. Cursors come from the `pageInfo` block\non the previous response and are opaque — do not construct them manually.\nSome endpoints (e.g. wallet transactions and transaction requests) use `limit` + `cursor`\nand return `hasMore` + `nextCursor` instead — check each endpoint contract.\n\n## Errors\n\nValidation failures (HTTP 400) return a `BadRequestErrorResponse` envelope listing every\nfailed field. All other error statuses (401/403/404/409/500/503) return\n`MessageErrorResponse` with a single human-readable `message`. Status code is the\nauthoritative signal; do not parse the message for logic.\n\n## Versioning\n\nThis document covers the v1 surface. All endpoints are mounted under `/v1/...`."
  },
  "servers": [
    {
      "url": "https://api.iofinnet.com",
      "description": "Production"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "transactions",
      "description": "Generic transaction operations: scan, submit, metadata."
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Platform access token. Send as `Authorization: Bearer <token>`. Tokens are issued via the IOFinnet platform auth flow."
      }
    },
    "schemas": {
      "BadRequestErrorResponse": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "message": {
                  "type": "string"
                },
                "path": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "options": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "code": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "message",
                "path"
              ]
            }
          }
        },
        "required": [
          "errors"
        ]
      },
      "MessageErrorResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Human-readable error message. Do not parse for logic — use the HTTP status."
          }
        },
        "required": [
          "message"
        ]
      },
      "EvmBlockaidScanResponse": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "The action Blockaid determined for the transaction",
                "example": "ALLOW"
              },
              "reason": {
                "type": "string",
                "description": "Reason for the action, if any",
                "example": "No threats detected"
              },
              "details": {
                "type": "object",
                "properties": {
                  "attackType": {
                    "type": "string",
                    "description": "Type of attack detected, if any",
                    "example": "Phishing"
                  },
                  "severity": {
                    "type": "string",
                    "description": "Severity of the detected issue",
                    "example": "HIGH"
                  },
                  "description": {
                    "type": "string",
                    "description": "Description of the detected issue",
                    "example": "Suspicious contract interaction"
                  }
                },
                "description": "Details about the scan result"
              }
            },
            "required": [
              "action"
            ]
          },
          "simulation": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string",
                "description": "Error message if simulation failed",
                "example": "Simulation ran out of gas"
              },
              "balanceChanges": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "address": {
                      "type": "string",
                      "description": "Address whose balance changed",
                      "example": "0x1234...abcd"
                    },
                    "before": {
                      "type": "string",
                      "description": "Balance before the transaction",
                      "example": "1000000000000000000"
                    },
                    "after": {
                      "type": "string",
                      "description": "Balance after the transaction",
                      "example": "900000000000000000"
                    }
                  },
                  "required": [
                    "address",
                    "before",
                    "after"
                  ]
                },
                "description": "List of balance changes for involved addresses"
              },
              "gasUsed": {
                "type": "string",
                "description": "Gas used in the simulation",
                "example": "21000"
              },
              "gasLimit": {
                "type": "string",
                "description": "Gas limit for the transaction",
                "example": "25000"
              },
              "gasPrice": {
                "type": "string",
                "description": "Gas price used in the simulation",
                "example": "1000000000"
              },
              "fee": {
                "type": "string",
                "description": "Transaction fee calculated in the simulation",
                "example": "21000000000000"
              }
            },
            "description": "Simulation result for EVM transaction"
          }
        },
        "required": [
          "result"
        ]
      },
      "SolanaBlockaidScanResponse": {
        "type": "object",
        "properties": {
          "encoding": {
            "type": "string",
            "description": "Encoding used for the response",
            "example": "base64"
          },
          "status": {
            "type": "string",
            "enum": [
              "SUCCESS",
              "ERROR"
            ],
            "description": "Status of the simulation/validation",
            "example": "SUCCESS"
          },
          "result": {
            "type": "object",
            "nullable": true,
            "properties": {
              "simulation": {
                "type": "object",
                "nullable": true,
                "properties": {
                  "logs": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Logs generated during simulation",
                    "example": [
                      "Program log: Instruction: Transfer",
                      "Success"
                    ]
                  },
                  "accounts": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "address": {
                          "type": "string",
                          "description": "Account address",
                          "example": "3N5k...9vQ"
                        },
                        "before": {
                          "type": "string",
                          "description": "Balance before simulation",
                          "example": "1000000"
                        },
                        "after": {
                          "type": "string",
                          "description": "Balance after simulation",
                          "example": "900000"
                        }
                      },
                      "required": [
                        "address",
                        "before",
                        "after"
                      ]
                    },
                    "description": "Account balance changes"
                  },
                  "error": {
                    "type": "string",
                    "description": "Error message if simulation failed",
                    "example": "Insufficient funds"
                  }
                },
                "description": "Transaction Simulation Result"
              },
              "validation": {
                "type": "object",
                "nullable": true,
                "properties": {
                  "isValid": {
                    "type": "boolean",
                    "description": "Whether the transaction is valid",
                    "example": true
                  },
                  "reason": {
                    "type": "string",
                    "description": "Reason for validation failure, if any",
                    "example": "Signature verification failed"
                  }
                },
                "required": [
                  "isValid"
                ],
                "description": "Transaction Validation Result"
              }
            },
            "required": [
              "simulation",
              "validation"
            ],
            "description": "Result of the request"
          },
          "error": {
            "type": "string",
            "nullable": true,
            "description": "Error message if the simulation or validation failed",
            "example": "Simulation failed due to ..."
          },
          "error_details": {
            "type": "object",
            "properties": {
              "api_error": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "description": "API error details"
              },
              "instruction_error": {
                "type": "object",
                "properties": {
                  "index": {
                    "type": "number"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "description": "Instruction error details"
              },
              "transaction_error": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "description": "Transaction error details"
              }
            },
            "description": "Error details"
          },
          "request_id": {
            "type": "string",
            "description": "Unique identifier of the request",
            "example": "req_1234567890abcdef"
          }
        },
        "required": [
          "encoding",
          "status",
          "result",
          "request_id"
        ]
      }
    }
  },
  "paths": {
    "/v1/transactions/ecosystem/{ecosystem}/chain/{chain}/scan-transaction": {
      "post": {
        "summary": "Scan EVM or SVM transaction for security threats",
        "description": "Scans an EVM or SVM transaction for potential security threats using Blockaid.",
        "tags": [
          "transactions"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "evm",
                "svm"
              ]
            },
            "required": true,
            "name": "ecosystem",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "abstract",
                "arbitrum",
                "arbitrum-nova",
                "astar",
                "avalanche-c",
                "base",
                "berachain",
                "blast",
                "bsc",
                "celo",
                "coqnet",
                "cronos",
                "degen",
                "dfk",
                "dfk-testnet",
                "eth",
                "eth-sepolia",
                "fantom",
                "flame",
                "flow-evm",
                "fluent-devnet",
                "fraxtal",
                "fuse",
                "gnosis",
                "ink",
                "lamina1",
                "lightlink",
                "linea",
                "lukso",
                "manta-pacific",
                "mantle",
                "matchain",
                "metal",
                "metis",
                "mint-sepolia",
                "mode",
                "monad-testnet",
                "moonriver",
                "morph",
                "morph-holesky-testnet",
                "optimism",
                "orderly-network",
                "perennial",
                "plume-devnet",
                "polygon",
                "polygon-zkevm",
                "pulsechain",
                "quai",
                "rari",
                "ronin",
                "scroll",
                "shimmer-evm",
                "sonic",
                "sophon-testnet",
                "superposition-testnet",
                "superseed-sepolia",
                "xai",
                "xdc",
                "zksync-era",
                "zora",
                "solana",
                "solana-testnet"
              ]
            },
            "required": true,
            "name": "chain",
            "in": "path"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "validation",
                        "simulation"
                      ]
                    },
                    "minItems": 1,
                    "default": [
                      "simulation",
                      "validation"
                    ],
                    "description": "The options to use for the scan.",
                    "example": [
                      "simulation",
                      "validation"
                    ]
                  },
                  "marshalledHex": {
                    "type": "string",
                    "minLength": 4,
                    "description": "Hex-encoded marshalled SDK transaction payload. The server will unmarshal and derive chain-specific Blockaid inputs.",
                    "example": "7b2273657269616c697a65645472616e73616374696f6e223a..."
                  },
                  "metadata": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "default": null
                      }
                    },
                    "default": {
                      "url": null
                    }
                  },
                  "overrides": {
                    "type": "object",
                    "nullable": true,
                    "properties": {
                      "evm": {
                        "type": "object",
                        "properties": {
                          "simulate_with_estimated_gas": {
                            "type": "boolean",
                            "default": false
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "default": {}
                  }
                },
                "required": [
                  "marshalledHex"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "EVM transaction scan completed",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EvmBlockaidScanResponse"
                    },
                    {
                      "$ref": "#/components/schemas/SolanaBlockaidScanResponse"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Validation failed. The `errors` array lists every failed field with the JSON `path` and `message`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error. Includes downstream chain RPC failures.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable. Returned by fallback paths when an upstream dependency is down or a request payload could not be parsed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}
```

# Sibling pages

* [Create transaction from hex](https://docs.iofinnet.com/reference/post_v1-vaults-vaultid-transactions-ecosystem-ecosystem-chain-chain-transaction-1.md)
* [Patch transaction metadata](https://docs.iofinnet.com/reference/patch_v1-vaults-vaultid-transactions-ecosystem-ecosystem-chain-chain-transaction-transactionhash-metadata-1.md)