Screen a name
curl --request GET \
--url https://api.compliapi.com/api/v1/screen/name \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.compliapi.com/api/v1/screen/name"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.compliapi.com/api/v1/screen/name', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.compliapi.com/api/v1/screen/name",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.compliapi.com/api/v1/screen/name"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.compliapi.com/api/v1/screen/name")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compliapi.com/api/v1/screen/name")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyScreening
Screen a name
Fuzzy-screen a person, company, vessel or aircraft name against sanctions-list names and aliases
GET
/
screen
/
name
Screen a name
curl --request GET \
--url https://api.compliapi.com/api/v1/screen/name \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.compliapi.com/api/v1/screen/name"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.compliapi.com/api/v1/screen/name', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.compliapi.com/api/v1/screen/name",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.compliapi.com/api/v1/screen/name"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.compliapi.com/api/v1/screen/name")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compliapi.com/api/v1/screen/name")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyScreens a name against the primary names and aliases of every party on the sanctions lists with name coverage — the US OFAC SDN and OFAC Consolidated (non-SDN) lists, the EU consolidated financial sanctions list, the UK Sanctions List, the Swiss SECO list, the UN Security Council Consolidated List, Canada’s Consolidated Autonomous Sanctions List, Australia’s DFAT Consolidated List, the French Trésor register and the Japan MOF list — covering individuals, entities, vessels and aircraft. The same person listed by several authorities appears once per list, so a hit on six lists returns six matches. Use it when onboarding a customer or vendor, before paying a counterparty, or anywhere you hold a name rather than an identifier.
Matching is fuzzy and explainable:
A name match is a lead for review, not a determination: common names produce partial matches with unrelated parties. Pass
- Order-, case-, accent- and punctuation-insensitive —
Putin Vladimir,PUTIN, Vladimirandvladimir putinare the same name. - Typo-tolerant per word —
Vladimr Putinstill scores 96 againstVladimir PUTIN. Words of three letters or fewer (al,bin,kim) must match exactly. - Partial names — a query whose words all appear in a longer listed name (or the reverse) matches at a capped score of at most 90, decaying as the longer name grows. A single short word on its own never matches.
- Aliases and other scripts — every alias (a.k.a., f.k.a., n.k.a.) is screened, including the Cyrillic, Arabic and Japanese spellings and transliteration variants the lists publish. Aliases a list itself flags as weak or low quality (OFAC’s and DFAT’s weak aliases, the UN’s and the UK’s “low quality”, SECO’s
low, Trésor’s alias faible, Japan’s 確定に十分でない別名) are not matched, but are returned inmetadata.weak_aliases. - No transliteration — a Latin-script query does not match a name the list publishes only in Cyrillic or Japanese; most lists publish Latin spellings too.
string
required
Name to screen (2–200 characters).
string
Only match listed parties of this type:
individual, entity, vessel or aircraft.string
YYYY, YYYY-MM or YYYY-MM-DD. Listed parties whose published birth dates all disagree are excluded and counted in excluded; parties with no published birth date are kept. Listings with several alternative birth dates match if any one agrees, and circa dates allow two years either side.string
ISO 3166 code or English country name. Compared against the party’s listed nationalities, citizenships, address countries and vessel flag (in English, French or Japanese, as each list publishes them). It ranks matches and explains them in
reasons, but never excludes a match — listed countries are too incomplete to rule a party out.string
A passport, national ID or registration number you hold for the subject. It is compared, ignoring formatting, with the identity documents each candidate party lists: a party that lists the number ranks first, ahead of higher name scores, with the reason in
reasons. A different number is noted but never excludes a match — people hold several documents and renew passports. Many listings carry no document at all (“No listed document to compare”).number
Minimum name score to report, 50–100 (default 85).
string
Your own reference for the subject — a customer, invoice or wallet id, up to 200 characters. Echoed as
ref in the response and recorded on the call’s audit trail.integer
Maximum matches to return (1–25, default 10).
string
Comma-separated list slugs to screen against. Defaults to every enabled list with name coverage.
lists_checked names only the lists that actually hold names at the time of the call; lists without name coverage (the crime and risk lists, FBI Lazarus, Israel NBCTF) are dropped, and a filter naming only such lists is a 400.Response
Same verdicts as the screening envelope —sanctioned is true only for a sanctions-list match, flagged for any match — plus threshold, excluded, and scored matches:
| Field | Description |
|---|---|
value | The listed name that matched — the primary name or an alias |
score | Name similarity, 0–100. match is exact at 100, otherwise partial |
name | The party’s primary name |
name_type | Which name matched: primary, aka, fka or nka |
party_type | individual, entity, vessel or aircraft |
reasons | Plain-language explanation of the score and of any birth_date/country comparison |
list_versions (top level) | The version of each list checked — see list versions |
metadata | Published facts, as each list publishes them: dates_of_birth (ISO dates, circa YYYY or YYYY to YYYY; OFAC’s own 19 Apr 1947 form), nationalities, citizenships, countries (country names in the list’s language — the French register writes RUSSIE), places_of_birth, vessel, weak_aliases, programmes, … |
Example response
{
"value": "Bank Melli",
"flagged": true,
"sanctioned": true,
"lists_checked": ["ofac", "ofac_consolidated", "fr_tresor", "jp_mof_sanctions", "eu_fsf", "uk_fcdo_sanctions", "ch_seco", "un_sc", "ca_sanctions", "au_dfat"],
"threshold": 85,
"excluded": 0,
"matches": [
{
"list": "ofac",
"list_name": "US OFAC SDN",
"list_type": "sanctions",
"match": "partial",
"value": "BANK MELLI IRAN",
"score": 90.0,
"name": "BANK MELLI IRAN",
"name_type": "primary",
"party_type": "entity",
"reasons": ["Name is similar to the listed primary name (score 90)"],
"source_url": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=25578",
"metadata": {
"sdn_name": "BANK MELLI IRAN",
"programs": "IFSR, IRAN, SDGT",
"party_type": "entity",
"countries": ["Iran", "France", "United Arab Emirates"],
"weak_aliases": ["BMI"]
}
}
]
}
birth_date and country to separate namesakes, and treat the final decision as part of your compliance process. Each call is one request against your quota and is written to your organization’s audit trail.