Skip to main content
GET
Audit a contract

Authorizations

X-Auth-Key
string
header
required

Your secret API key. Create one from your dashboard.

Query Parameters

chain
enum<string>
required

Chain the contract is deployed on, as a case-insensitive symbol. See Supported Chains.

Available options:
ETH,
OP,
ARB,
BASE,
BSC,
AVAX,
APE,
BLAST,
LINEA,
MANTLE,
POLYGON,
ZKEVM,
SCROLL,
SONIC,
ZKSYNC,
ABSTRACT,
MONAD,
PLASMA,
MEGAETH,
HYPE,
ROBINHOOD,
ARC,
STABLE
address
string
required

The contract address to audit.

Pattern: ^0x[a-fA-F0-9]{40}$
allow_decompile
enum<string>
default:true

Closed-source contracts are audited on decompiled bytecode (the most expensive tier). Set false to opt out: closed-source contracts then answer { "audit": null, "reason": "decompile_disabled" } instead of being decompiled, and cached decompiled verdicts are not served. Sent as the string "true"/"false" in the query.

Available options:
true,
false
async
enum<string>
default:false

Async mode. false (default): the request holds until the audit is done, classic synchronous behavior. true: if no cached audit exists, the audit is started in the background and the response is { status }; poll the SAME URL every 1-2s until it flips to { audit } (typically 10-30s for a first-time audit). There is no job id: an audit is idempotent per (chain, address), so the token address is the job handle. Billing is identical in both modes; progress responses are never billed. With subscribe=true you do not even poll: the finished verdict is pushed to you (over your SSE stream or webhook) the moment it lands (see SSE & Webhooks).

Available options:
true,
false
subscribe
enum<string>
default:false

Subscribe this (chain, address) to push updates as part of this call. Once subscribed, any later verdict change (safe↔unsafe flip, owner change, a gate or honeypot flipping, or a closed-source token re-audited on its now-verified source) is pushed to you over a live SSE stream or a webhook, instead of you polling. Combined with async=true, the finished audit result is itself pushed when ready, so you fire the call and just consume the events. Subscribing works with or without a delivery transport configured; with neither, pull the changes from GET /api/events (see SSE & Webhooks). Charges the one-time subscribe fee for a genuinely-new token; idempotent for an already-subscribed one.

Available options:
true,
false

Response

The audit verdict, wrapped in an audit object.

The response shape.

audit
object
required

The audit result.

billing
object

Echo of what this call was billed, present only for authenticated API-key callers (never for anonymous/browser traffic). type is the bill category (e.g. cached, fresh_no_decompile, fresh_with_decompile, refresh) or null when the call is free; credits is the amount metered.