OFAC sanctions screening API for AI agents

Screen a person or entity name against the US OFAC SDN and Consolidated (non-SDN) sanctions lists with fuzzy matching, to check whether a counterparty is sanctioned. Scores compare whole names, so a surname alone is unreliable: it can fall far below the default threshold or still pass. Pass the full name, or lower minScore (e.g. 0.6) and review the candidates.

$0.01GET /v1/us/sanctionsMCP us_sanctionsComing soon

Coming soon. Until it launches, GET /v1/us/sanctions answers 503 coming_soon and the MCP tool returns an error. Nothing is charged.

What you get

  • Fuzzy matches against the OFAC SDN and Consolidated (non-SDN) lists, each with a score from 0 to 1
  • The matched entry: id, name, aliases, type, programs and list
  • When the index was last refreshed, and a stale flag if the daily refresh has been failing

Parameters

  • namestringrequiredquery

    Person or entity name; must contain letters or digits

    2–200 characters

  • typeindividual | entity | anyoptionalquery

    Restrict to individuals or entities

    default any

  • minScorenumberoptionalquery

    Minimum match score; lower it for surname-only names

    0 to 1 · default 0.8

Try it

With a key, every Run is paid from your credits and the balance updates after each call. Kept only in this browser tab; sent only to this site.

Person or entity name; must contain letters or digits. 2–200 characters.

Restrict to individuals or entities. Default any.

Minimum match score; lower it for surname-only names. 0 to 1, default 0.8.

Without a key it runs on your free tier (10 calls a day per IP). An agent pays $0.01 per successful call.

us_sanctions is coming soon. Until then its route answers 503 coming_soon and nothing is charged.

Equivalent curl
curl "https://402check.com/v1/us/sanctions?name=Yevgeniy+Prigozhin"

Example response

Example response
{
  "matches": [
    {
      "entry": {
        "id": "21171",
        "name": "PRIGOZHIN, Yevgeniy Viktorovich",
        "aliases": [],
        "type": "individual",
        "programs": [
          "UKRAINE-EO13661",
          "CYBER2",
          "ELECTION-EO13848",
          "RUSSIA-EO14024"
        ],
        "list": "SDN"
      },
      "score": 0.881,
      "matchedOn": "PRIGOZHIN, Yevgeniy Viktorovich"
    }
  ],
  "truncated": false,
  "indexUpdatedAt": "2026-10-27T03:00:41.512Z",
  "stale": false
}

Complete output against our OFAC test fixture.

HTTP

Request (free tier, no key)
curl "https://402check.com/v1/us/sanctions?name=Yevgeniy+Prigozhin"
Request with a credits key
curl -H "Authorization: Bearer rk_YOUR_KEY" "https://402check.com/v1/us/sanctions?name=Yevgeniy+Prigozhin"

MCP

tools/call request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "us_sanctions",
    "arguments": {
      "name": "Yevgeniy Prigozhin"
    }
  }
}

Endpoint https://402check.com/mcp. Setup for Cursor, Claude and other clients is in the docs.

Source and limits

Data from US Treasury OFAC sanctions lists.

  • US lists only: no EU, UK or UN lists
  • Scores compare whole names, so a surname alone is unreliable: it can fall far below the default threshold or still pass; pass the full name, or lower minScore (e.g. 0.6) and review the candidates
  • The index is rebuilt daily at 03:00 UTC; older than 7 days it answers 503 index_stale, not charged
  • A lookup aid, not legal or compliance advice

Questions

How much does a screening cost?

$0.01 per successful call. The first 10 calls a day per IP address are free.

Do I need an account?

No. Call it without credentials on the free tier, pay per call with x402 over HTTP, or send a prepaid rk_ key bought by card.

Which lists are covered?

The US OFAC SDN list and the Consolidated (non-SDN) list, refreshed daily.

Can I screen a surname alone?

It is unreliable: scores compare whole names, so a surname can fall far below the default threshold (Kim vs KIM, Jong Un scores 0.333) or still pass (Prigozhin scores 0.86). Pass the full name, or lower minScore (e.g. 0.6) and review the candidates.

Am I charged for a failed call?

No. Credits are deducted and x402 payments settled only on a 2xx response; errors such as invalid_query or upstream_error cost nothing.