Cheap labels + consensus risk (Tier 0+1+2)
V2 Public API
POST /v2/screen
Cheap labels + consensus risk in one call — server-side mirror of x402 /screen, billed via subscription quota.
POST
Cheap labels + consensus risk (Tier 0+1+2)
Auth: Required · Cost: $0.10 per call (USD ledger) · Provider: Aegis only (Tier 0+1+2 — no graph traversal, no external providers)
$0.10 GET /screen/{chain}/{address} runs, billed
against your USD balance instead of via on-chain USDC.
Designed for high-volume B2B integrations: a wallet running a
pre-send screen on every user-typed address will use this endpoint,
not /v2/check-address. Same
compute as x402’s /screen, but settled off-chain against your USD
balance instead of an on-chain USDC transfer — no per-call settlement
gas to amortise.
Request
There is no
provider field — light always runs Aegis (Tier
0+1+2). If you need provider_b / provider_a or full 4-tier (with 1-hop +
BFS), use POST /v2/check-address.
Optional headers:
Response 200
coverage — read this before risk_level
risk_level: "none" means we found no risk signal, which is not the
same as “this address is clean”. For an address nobody has ever
enriched, a Tier 0+1+2 screen has nothing to say, and the honest verdict
shape for that is none / 0.
coverage.data_available is the field that tells the two apart:
graph_analysed is always false here by design — this endpoint never
looks at who the address transacts with. An address that screens none
can still come back high from /v2/check-address because its
counterparties are what carry the risk. That is not a contradiction
between two products; it is two different questions.
Quota is charged whether or not we had data — the customer paid for the
lookup, not for a guarantee of a hit.
Source naming
labels[].source / source_name identify the class of source, not
always the vendor. Commercial KYT feeds we license are returned under
neutral provider_x aliases; sanctions registries, block explorers,
community feeds and our own curator entries are named directly, because
their identity is the evidence.
label is a counterparty name or null. It is deliberately null
whenever the underlying claim carries a risk annotation rather than an
identity — you will never receive a vendor’s internal verdict string in
that field.
verdict object
Reading the category evidence
risk_categories tells you what we concluded. risk_category_detail[]
tells you how well-supported each part of that conclusion is, which is
where source disagreement becomes visible. Real example — a licensed
exchange with 13 sources:
The row-level verdict is
low/20, driven by sanctions_exposure — but
the identity is corroborated eight ways by high-trust sources, while the
risk flag rests on a single mid-trust one. Both facts matter to whoever
is deciding, and only the first one is visible from risk_level alone.
A single-source, mid-trust risk category next to a many-source, high-trust
identity is a normal shape, not a bug — vendors flag exposure the registry
doesn’t. When you need to decide “how much of this verdict do I trust”,
read
source_count and max_trust_weight, not confidence alone.Errors
Same envelope as POST /v2/check-address. Notable codes:Pricing vs x402 /screen
This endpoint and x402 /screen return the same
data — same SQL queries, same labels[] shape, same risk fields.
They differ only in the commercial rail:
If you’re a wallet putting this behind a “send to address” prompt
for thousands of end-users, V2 is the right channel — same data,
no on-chain settlement step on each call. Talk to sales for volume
pricing.
See also
- V2 introduction
- POST /v2/check-address — full Aegis 4-tier verdict
- GET /screen// — the x402 counterpart of this endpoint
Authorizations
Your aeg_… API key from the dashboard (Account → API tab).
Headers
Body
application/json
On-chain wallet. EVM is lowercased internally; TRON/BTC/SOL preserved.
Required string length:
1 - 120Examples:
"TScSLnUodZVsgoGchZspDoimDjDB9bwqVv"
"0x21a31ee1afc51d94c2efccaa2092ad1028285549"
Chain identifier. See /v2/networks for allowed values.
Required string length:
1 - 20Examples:
"TRON"
"ETH"
Response
Successful Response
The response is of type Response Check Address Light Screen Post · object.

