This guide is for the hosted API. It needs an sc_ key and nothing else — no clone, no local server. If you have not made a call yet, start with Your first API call. The other guides in this section describe running the engine yourself, which is a different product position.
Screening one address is four requests. The order matters, because each answers a different question and the cheap one can end the enquiry.

The workflow

1

Sanctions first

GET /api/v1/wallet/{address}/ofac. A direct hit ends the screening; nothing else you learn changes the answer.
2

Then identity

GET /api/v1/wallet/{address}/score. Who is this, what cluster is it in, what is published about it.
3

Then exchange attribution

GET /api/v1/wallet/{address}/cex. Which venue, by direct label or through a labelled cluster member.
4

Then cross-chain movement

GET /api/v1/wallet/{address}/bridges. The most expensive claim on the API to get wrong, and the one with the narrowest coverage.

The flag that matters on each route

Every route can answer ok with nothing in it. That is two different situations wearing the same shape: we looked and found nothing, and we could not look. Each route carries the flag that separates them, and reading the flag is the whole job. Two flags on /ofac rather than one, because they fail differently. proximity_checked is false when no walk happened at all — no real history to walk, or the engine did not answer. proximity.is_screen is the engine’s own verdict on whether the walk it did perform may be described as a screen. A walk over a history it considers unusable runs to completion and still is not one.
The expensive mistake. A client that renders “no sanctions match” from a payload whose proximity_checked is false has told someone something false in the most consequential register this API has. The direct match ran; the walk did not. Those are different claims.
hops_examined, nodes_examined, frontier_exhausted, node_budget_hit, path and provenance all live inside data.proximity, next to the finding they describe. Only proximity_checked is lifted to the top of data, because it is the one a caller must not miss.

When a route declines

state is the first field to read, before the HTTP status. Three of the four values are refusals to answer, and each is a different fact about the world:
  • insufficient_evidence — we looked and hold nothing citable. reason says what was checked.
  • not_deployed — the upstream that would have answered did not. Nothing was checked, and the answer carries no information about the address.
  • not_supported — the question does not apply to this address kind. A Solana address on /bridges lands here, because bridge tracing is EVM.
Treat not_deployed as a retry, not as a result. Treat not_supported as a gap in coverage, and see Chain coverage for which capability reaches which chain.

Caveats travel with the claim

Where an answer is qualified, the qualification is inside data, next to the finding it limits, rather than in a wrapper around it. That is deliberate: an agent hands the object to a model, and the model restates the conclusion without whatever surrounded it. If you are reformatting these payloads for a human, carry caveat through to wherever the conclusion lands.

What this does not tell you

  • It is not a verdict. The API reports what is held and how it was established. Whether that clears your own threshold is your judgment.
  • A clean screen is a statement about our evidence, not about the address.
  • Proximity is EVM. A Solana address gets the direct list match and an explicit note that the hop analysis was not done.
  • An address leaving the SDN list is not exoneration. A delisting is a change in the published list, not a finding about conduct, and this API does not report it as one.

Then

Scienter analyses public blockchain records. A finding states what those records show and how confident we are; it is evidence, not proof of anyone’s identity, intent or wrongdoing, and an attribution we cite is the cited source’s. An empty result means not analysed, never safe. Nothing here is legal, tax or investment advice, or a recommendation to transact with any address or asset — see Disclaimers for the full text.