Skip to main content
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)
The same SQL queries that x402-api’s $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:
Do not gate a transfer on risk_level === "none" alone. Treat coverage.data_available: false as unknown, not as clean — decide in your own policy whether unknown means allow, review, or escalate to /v2/check-address, which runs the full 4-tier analysis including the address’s counterparties.
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

Authorizations

Authorization
string
header
required

Your aeg_… API key from the dashboard (Account → API tab).

Headers

Idempotency-Key
string | null

Body

application/json
address
string
required

On-chain wallet. EVM is lowercased internally; TRON/BTC/SOL preserved.

Required string length: 1 - 120
Examples:

"TScSLnUodZVsgoGchZspDoimDjDB9bwqVv"

"0x21a31ee1afc51d94c2efccaa2092ad1028285549"

network
string
required

Chain identifier. See /v2/networks for allowed values.

Required string length: 1 - 20
Examples:

"TRON"

"ETH"

Response

Successful Response

The response is of type Response Check Address Light Screen Post · object.