Skip to main content
The /screen/* endpoints check all enabled source lists at once. Each match names the list that produced it, so one call replaces separate per-list lookups. All of them accept an optional ?lists= filter — a comma-separated set of list slugs from /screen/lists (unknown slugs return 400):
They also accept an optional ?ref= — your own reference for the subject (a customer, invoice or wallet id, up to 200 characters). It is echoed as ref in the response and recorded on every audit row the call writes, so an entry in your audit trail can be matched back to your record:

The response envelope

sanctioned is true only when a government sanctions list matched; flagged is true for any match, including crime-intelligence and risk-exposure lists (a Tornado Cash association hit is list_type: "risk" and never sets sanctioned):
No match returns { "value": "...", "flagged": false, "sanctioned": false, "lists_checked": [...], "list_versions": {...}, "matches": [] }.

List versions

Every response also carries list_versions: for each list in lists_checked, the version of the data the result was checked against — keep it with the result as evidence of exactly what was screened.
  • updated_at — when CompliAPI last successfully refreshed the list from its publisher.
  • publication_id — for ofac and ofac_consolidated, the US Treasury publication the data reflects (OFAC’s own sequential publication number); null for lists whose publishers don’t number releases.
  • checked_at — for the OFAC lists, when CompliAPI last confirmed there was no newer Treasury publication (every 15 minutes).
A list that has not been ingested yet — for example in the hours after a new list is added — is checked but has no version entry. Versions can lag a refresh by up to a minute. One request costs one credit regardless of how many lists match. Every match is written to your audit trail attributed to its list.