Merkle proof of a verdict at the last published epoch
The audit path, and the companion to the verdict. It answers "what did avee commit to at epoch N", never "is this token blocked now" — for that, read the verdict, or isBlocked on the oracle contract. Verify the returned path with AveeTrustOracle.verifyLeaf(epoch, token, verdict, proof).
No key, for the same reason the verdict needs none: a commitment nobody can check is not a commitment. A token absent from the published epoch is 404 — it was not committed to, which is a different fact from being committed to as unblocked.
Path Parameters
chain slug (ton) or numeric chain id (950000)
1 <= length <= 32chain-native address; EVM addresses are case-insensitive
1 <= length <= 128Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/chains/string/tokens/string/proof"{ "token_address": "string", "chain": "hyperliquid", "chain_id": 0, "epoch": 0, "root": "string", "proof": [ "string" ], "status": "string"}Signed token verdict, submittable to the trust oracle GET
What the avee trust oracle holds for one token, signed (EIP-712) so it can be submitted to `AveeTrustOracle.submitAttestation` or carried in a Uniswap v4 `hookData`. No key, no payment: a verdict nobody can read is a verdict nobody can act on. Read `status` and the signature together. `ok` means the oracle holds no block — it is **not** a clearance, and it never means the token was examined and found clean. A token nobody has evaluated answers `200` with `status: "unknown"` and no signature block at all, because a signed zero would be a claim nobody made. Chains with no oracle answer the same way, with `oracle_address` absent. `verdict_at` is when the verdict was reached; `signed_at` is when this response was signed and is the value the signature covers. An attestation can only tighten a verdict on chain: it may raise a status or set one where none exists, never lower one the relayer wrote.
Everything needed to decide about a token, in one call GET
One document instead of six calls: the signed verdict, the trust score with the signals that made it, both liquidity figures with lock and burn, the 24-hour market on the deepest pool, holder concentration, the deployer's history and the flags. Fields arrive in a fixed order — `verdict` is early enough to decide on before the body finishes — and empty blocks are omitted rather than sent as null, because a null invites a reader to treat "not measured" as a measured zero. A real token's brief is under two kilobytes. Poll it with `If-None-Match`: an unchanged token answers `304` and costs neither payment nor context. A keyless caller past its budget can pay per call with x402, as on every priced operation; a caller with an API key is never challenged. The embedded verdict is the verdict endpoint's object unchanged, so a chain with no oracle carries `status: "unknown"` and no signature here too.