Skip to main content
GET
/
contracts
/
{contractAddress}
Get a real-time analysis for a given contract address
curl --request GET \
  --url https://api.webacy.com/contracts/{contractAddress} \
  --header 'x-api-key: <api-key>'
{
  "score": 3,
  "tags": {
    "centralized_risk_high": {
      "key": "centralized_risk_high",
      "name": "Centralized Risk High",
      "description": "This contract may have logic that lead us to think it is is a drainer.",
      "tags": {
        "centralized_risk_high": true
      }
    }
  },
  "categories": {
    "contract_possible_drainer": {
      "key": "contract_possible_drainer",
      "name": "Centralized Risk High",
      "description": "Our detectors have found that this smart contract has exploitable logic that can be used to drain funds. This is a serious risk and you should avoid interacting with this contract.",
      "tags": {
        "centralized_risk_high": true
      }
    }
  },
  "analysis": {
    "address_characteristics": {
      "key": "address_characteristics",
      "name": "Wallet Characteristics",
      "description": "This address may have risk factors related to address age, number of transactions, or balance.",
      "tags": {
        "insufficient_wallet_age": true
      }
    }
  },
  "source_code_analysis": {
    "analysis": {
      "contract_address": "0x1234567890123456789012345678901234567890",
      "chain": "eth",
      "analysis_date": "2023-11-15T10:30:00Z",
      "status": "completed",
      "findings": [
        {
          "risk": "reentrancy",
          "details": {},
          "function_signatures": [
            {
              "function_name": "withdraw",
              "function_signature": "function withdraw(uint256 amount) external"
            }
          ],
          "statements": [
            {
              "statement_type": "call",
              "statement_text": "msg.sender.call{value: amount}(\"\")"
            }
          ]
        }
      ],
      "urls": [
        {
          "url": "https://example.com/analysis-report"
        }
      ]
    }
  },
  "similar_contracts": [
    {}
  ],
  "analysis_status": "STARTED",
  "analysis_type": "STATIC",
  "deployer": {
    "address": "0xaBA7161A7fb69c88e16ED9f455CE62B791EE4D03",
    "risk": {
      "count": 1,
      "medium": 1,
      "high": 0,
      "overallRisk": 25.99,
      "issues": [
        {
          "score": 3,
          "tags": [
            {
              "name": "Insufficient Wallet Age",
              "description": "The age of this wallet or address is new.",
              "type": "noHistoryRisk",
              "severity": 3,
              "key": "insufficient_wallet_age"
            }
          ],
          "categories": {
            "address_characteristics": {
              "key": "address_characteristics",
              "name": "Wallet Characteristics",
              "description": "This address may have risk factors related to address age, number of transactions, or balance.",
              "tags": {
                "insufficient_wallet_age": true
              }
            }
          }
        }
      ],
      "details": {},
      "context": [
        {
          "name": "Paid Information",
          "description": "The project has paid to display additional project info on platforms like DexScreener",
          "type": "tokenRisk",
          "key": "paid-info"
        }
      ],
      "isContract": false,
      "addressType": "CONTRACT",
      "tokenStandard": "ERC20"
    },
    "deployed_contracts": [
      {}
    ]
  }
}

Authorizations

x-api-key
string
header
required

Path Parameters

contractAddress
string
required

contract address

Query Parameters

chain
enum<string>

Selected chain. This includes 'eth', 'base', 'bsc', 'pol', 'opt' and 'arb'. EVM-compatible blockchain networks for contract analysis

Available options:
eth,
base,
bsc,
pol,
opt,
arb
fromBytecode
boolean

Does full bytecode analysis on unverified contracts. The full scan can take up to several minutes. To retrieve the final results, either refresh this endpoint, or supply a callback URL for which results will be posted every 5 seconds.

refreshCache
boolean

Re-analyze contract address and retrieve fresh data.

callback
string

Returns asynchronous response from bytecode analysis. This callback will be called every 5 seconds with any new data found until the full analysis has been completed. If an analysis is already completed, the callback will not be called.

deployer_risk
boolean

Analyze the deployer address for risks and include a flag if the deployer is risky

hide_trust_flags
boolean

Boolean to determine whether to hide trust-related flags from the response

Response

Success

score
integer

Overall risk score for the contract

Example:

3

tags
object[]

List of tags associated with the contract

Example:
{
  "centralized_risk_high": {
    "key": "centralized_risk_high",
    "name": "Centralized Risk High",
    "description": "This contract may have logic that lead us to think it is is a drainer.",
    "tags": { "centralized_risk_high": true }
  }
}
categories
object[]

List of categories associated with the contract

Example:
{
  "contract_possible_drainer": {
    "key": "contract_possible_drainer",
    "name": "Centralized Risk High",
    "description": "Our detectors have found that this smart contract has exploitable logic that can be used to drain funds. This is a serious risk and you should avoid interacting with this contract.",
    "tags": { "centralized_risk_high": true }
  }
}
analysis
object

List of analyses associated with the contract

Example:
{
  "address_characteristics": {
    "key": "address_characteristics",
    "name": "Wallet Characteristics",
    "description": "This address may have risk factors related to address age, number of transactions, or balance.",
    "tags": { "insufficient_wallet_age": true }
  }
}
metadata
object

Token metadata information including name, symbol, links, and other details

source_code_analysis
object

Source code analysis result if available. May be an analysis payload, an error, or an informational message.

similar_contracts
object[]

List of similar/related contracts discovered during checksum comparison

analysis_status
string

Static analysis job status

Example:

"STARTED"

analysis_type
string

Type of analysis performed

Example:

"STATIC"

deployer
object

Information about the contract deployer and its risk assessment (only returned when deployer_risk=true)