docs / sanctions

Sanctions Screening API

Sanctions Screening API

base /sanctions/v14 endpoints
post/sanctions/v1/screen2 credits

Screen ONE name against the official sanctions lists → status (match | possible_match | no_match) + ranked matches with score, matched aliases, programs, DOB/place-of-birth, IDs, and the audit trail (which sources + thresholds were used). Add type/country/dob descriptors to cut false positives.

ParameterAllowed / rangeDescription
namerequiredThe person/entity/vessel name to screen. Matching is fuzzy + transliteration-aware (Cyrillic/Arabic/diacritics are folded to ASCII, so Алишер/محمد/Müller match their Latin spellings) and alias-aware (every a.k.a. on a record is screened). Name-only screening is false-positive-heavy — add dob/country/type to narrow.
typeoptionalperson · entity · vessel · aircraftOptional entity type. When set, ONLY same-type list records are compared (a person query never matches a vessel record) — the single biggest precision lever. Omit to screen across all types.
countryoptionalOptional country/nationality descriptor. A match on the record's country / nationality / place-of-birth adds 'country' to matched_fields and boosts the score. A mismatch does NOT exclude (lists are sparsely populated) — it is simply not corroborated.
doboptionalOptional date of birth (full date or just the year). A year match against the record's DOB(s) adds 'dob' to matched_fields and boosts the score. Persons only; ignored for entities/vessels.
threshold = 0.85optional0.62–1Minimum match score (0-1) to surface a candidate. Default 0.85. Lower → higher recall (more false positives); raise toward 0.95 for high-precision exact screening. Scores >= 0.95 are reported as status 'match', between threshold and that as 'possible_match'.
limit = 20optional1–100Max matches to return per name (1-100, default 20), highest score first.
sourcesoptionalOptional comma-separated list of source ids to restrict screening to: ofac_sdn, ofac_consolidated, uk_ofsi. Omit to screen ALL reachable sources (recommended).
Try in playground →
post/sanctions/v1/batch2 credits

Screen up to 100 names in one call (in-memory → cheap). Each item is a string or {name,type?,country?,dob?,threshold?}; per-item options override call defaults.

ParameterAllowed / rangeDescription
namesrequiredUp to 100 names to screen in one call. Each item is a string OR an object {name, type?, country?, dob?, threshold?}. Per-item options override the call-level defaults. Screening is in-memory so a batch is cheap.
typeoptionalperson · entity · vessel · aircraftOptional entity type. When set, ONLY same-type list records are compared (a person query never matches a vessel record) — the single biggest precision lever. Omit to screen across all types.
countryoptionalOptional country/nationality descriptor. A match on the record's country / nationality / place-of-birth adds 'country' to matched_fields and boosts the score. A mismatch does NOT exclude (lists are sparsely populated) — it is simply not corroborated.
threshold = 0.85optional0.62–1Minimum match score (0-1) to surface a candidate. Default 0.85. Lower → higher recall (more false positives); raise toward 0.95 for high-precision exact screening. Scores >= 0.95 are reported as status 'match', between threshold and that as 'possible_match'.
limit = 20optional1–100Max matches to return per name (1-100, default 20), highest score first.
sourcesoptionalOptional comma-separated list of source ids to restrict screening to: ofac_sdn, ofac_consolidated, uk_ofsi. Omit to screen ALL reachable sources (recommended).
Try in playground →
post/sanctions/v1/entity1 credit

Fetch ONE full normalized list record by its uid ('<source>:<list_ref>', from a screen match) — every field on the designation.

ParameterAllowed / rangeDescription
uidrequiredThe match uid from a screen result ('<source>:<list_ref>', e.g. ofac_sdn:9639) → the full normalized list record.
Try in playground →
post/sanctions/v1/sources_status1 credit

List freshness + reachability of every sanctions source (the trust signal): which lists were screened, how many records, the source's own published date, and whether the last.gov fetch succeeded.

ParameterAllowed / rangeDescription
refresh = falseoptionalForce a re-fetch of all sources before reporting (bypasses the cache; slower).
Try in playground →