Screening

Screen names against loaded sanctions lists using fuzzy and exact matching.

POST /api/v1/screen

Screen a name against all loaded sanctions lists.

Request

POST /api/v1/screen HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
  "name": "Vladimir Putin",
  "entityType": "INDIVIDUAL",
  "sources": ["OFAC_SDN"],
  "threshold": 0.80
}

Request Body Fields

Field

Type

Required

Description

name

string

✅ Yes

Name to screen against sanctions lists

entityType

string

No

Filter by entity type: INDIVIDUAL, ENTITY, VESSEL, AIRCRAFT

sources

string[]

No

Filter by list sources: OFAC_SDN, EU_CONSOLIDATED, UN_CONSOLIDATED, UK_HMT

threshold

number

No

Minimum match score (0.0–1.0). Defaults to server-configured value (0.80)

Response

{
  "query": "Vladimir Putin",
  "totalMatches": 2,
  "screenedAt": "2026-03-18T12:00:00Z",
  "results": [
    {
      "entity": {
        "id": "36735",
        "entityType": "INDIVIDUAL",
        "listSource": "OFAC_SDN",
        "primaryName": "PUTIN, Vladimir Vladimirovich",
        "aliases": ["Vladimir PUTIN", "Владимир Путин"],
        "nationalities": ["Russia"],
        "programs": ["RUSSIA-EO14024"],
        "remarks": "President of the Russian Federation",
        "lastUpdated": "2024-01-15T00:00:00Z"
      },
      "score": 0.9412,
      "matchedField": "alias[0]",
      "matchAlgorithm": "JARO_WINKLER"
    }
  ]
}

Response Fields

Field

Type

Description

query

string

The original query name

totalMatches

integer

Number of matches returned

screenedAt

ISO 8601

Timestamp of the screening

results[]

array

Match results sorted by score descending

results[].score

number

Match confidence score (0.0–1.0)

results[].matchedField

string

Which field matched (primaryName or alias[N])

results[].matchAlgorithm

string

Algorithm used: EXACT or JARO_WINKLER

Examples

curl -X POST http://localhost:8080/api/v1/screen \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "threshold": 0.85}'
import requests

response = requests.post(
    "http://localhost:8080/api/v1/screen",
    json={"name": "John Doe", "threshold": 0.85},
)
results = response.json()
HttpClient client = HttpClient.newHttpClient();
String body = """
    {"name": "John Doe", "threshold": 0.85}
    """;
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("http://localhost:8080/api/v1/screen"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(body))
        .build();
HttpResponse<String> response =
        client.send(request, HttpResponse.BodyHandlers.ofString());

Status Codes

Code

Description

200

Screening completed successfully

400

Invalid request (e.g., blank name, threshold out of range)