Verifex

Sanctions screening API that preserves evidence behind every decision.

Screen people and companies against configured sanctions and watchlist sources. The response exposes candidate, coverage, and evidence context so your policy can make a reviewable decision.

01
Source coverage
Reported for every screening result
02
Candidate set
Complete status is explicit
03
Evidence state
Durable, pending, unavailable, or historical

Screening truth is per result. A no-hit alone is not a clearance. Treat a result as clear only when Standard Screening is clearance-eligible, source coverage is complete, the candidate set is complete, and the result has zero matches. Otherwise the result remains unresolved and needs your policy or review.

A match result is not enough.

A response needs to show more than a risk label. Verifex returns the execution and evidence-availability context needed to review what happened without representing incomplete work as a clean result.

Confidence scores

Candidate evidence and decision fields support review. A score or similar name does not confirm identity by itself.

Source context

Responses distinguish sources screened, plan exclusions, and unavailable in-plan sources so partial coverage is visible.

Point-in-time evidence

Evidence persistence is explicit. A durable record can support review; pending or unavailable evidence cannot be claimed as complete proof.

Decision contract

A zero-match result is not enough on its own.

The API returns the conditions a caller must check before treating a screening result as clear. A retrieved candidate is not a confirmed identity, and an unavailable, partial, or capped result is not complete coverage.

screening_mode
An `exact_only` result may never be read as a clearance. The mode deliberately skips fuzzy, phonetic, transliteration and typo recovery, so “no exact candidate” is not evidence the party is unlisted.
clearance_eligible
When false, no combination of other fields makes the result clean. Treat it as unresolved regardless of `risk_level`.
coverage_status
Partial or unavailable coverage cannot clear. Absence of a hit in the sources that answered says nothing about the ones that did not.
candidate_set_complete
A truncated set cannot clear. No-hit inside a capped set is not no-hit — it is no-hit in the part that was examined.

From raw name to reviewable decision.

01

Input

Name, country, entity type, DOB

02

Normalize

Transliteration, tokenization, deduplication

03

Screen

Multi-algorithm matching across configured sources

04

Resolve

Entity disambiguation and alias consolidation

05

Adjudicate

Confidence scoring with structured rationale

06

Evidence

Point-in-time audit capsule with list versions

What the API delivers.

Global source coverage

OFAC, UN, UK, and other configured sanctions, PEP, watchlist, and debarment sources. Coverage depends on the active plan and environment.

Multi-script matching

Fuzzy, phonetic, and transliteration matching across Latin, Cyrillic, Arabic and Greek. Chinese, Japanese, Korean and Thai are not yet screenable. Those screens return review, never clear.

Entity resolution

Returns candidate-level identity evidence so reviewers can distinguish a retrieved record from a confirmed identity.

Decision context

Returns structured decision, coverage, candidate-completeness, and reason fields for review. A similarity score alone is not identity certainty.

Review boundaries

Separates potential matches, analyst-confirmed identities, and unresolved candidates. Analyst disposition does not become a machine decision.

Audit trail

Responses disclose evidence availability and preserve recorded provenance where durable evidence is available. An unavailable record is not presented as proof.

Published limits

Use the current API documentation for supported request limits. Verifex does not publish a latency SLA on this page without measured evidence.

Monitoring & webhooks

Watch and webhook availability depends on the active plan, configured sources, and execution state. No unmeasured delivery-time claim is implied.

Every decision leaves proof.

The response identifies the evidence state at send time. Where a durable record is available, it carries the recorded decision context for later review. It does not turn a pending or unavailable record into proof.

  • Query and the screening contract that ran
  • Sources screened, plan exclusions, and unavailable sources
  • Candidate-set completeness and truncation state
  • Decision and identity-evidence context where returned
  • Evidence persistence state and capsule reference when available
text
Illustrative response fragment, not a verbatim API payload:

{
  "query": {
    "name": "Example Entity",
    "type": "entity"
  },
  "matches": [],
  "total_matches": 0,
  "screening_mode": "standard",
  "clearance_eligible": true,
  "coverage_status": "complete",
  "candidate_set_complete": true,
  "candidates_truncated": false,
  "evidence_persistence": "pending"
}

Illustrative response shape. Consult the API reference for the current contract and every field.

Measured on our internal benchmark.

We publish a transparent benchmark test set covering true positives, false positives, transliterations, aliases, and false positive cases. No sales call required.

0 / 5,000
Severe false positives
95% CI ≤ 0.077%
97.33%
Exact-name recall
95% CI 94.83–98.64%
300 / 300
Sanctions positives actionable
real listed parties
0 / 150
PEP-only as sanctions-grade
never escalated

Measured August 12, 2026 on the deployed engine: 0 severe false positives across 5,000 adversarial negatives, 97.33% exact-name recall.. Self-administered benchmark. Results will vary on different datasets.

Official SDKs and REST API. Ready to integrate.

Start with the documented request and response contracts. Screening, permitted webhook subscriptions, and evidence retrieval each have their own explicit availability and safety conditions.

bash
curl -X POST https://api.verifex.dev/v1/screen \
  -H "Authorization: Bearer vfx_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Rosneft",
    "type": "entity",
    "country": "RU"
  }'
text
Illustrative response fragment, not a verbatim API payload:

{
  "matches": [...],
  "total_matches": 0,
  "screening_mode": "standard",
  "clearance_eligible": true,
  "coverage_status": "complete",
  "candidate_set_complete": true,
  "evidence_persistence": "pending"
}

Start screening with evidence.

Start with the current plan limits, then evaluate screening coverage and decision evidence against your own policy requirements.