Stratum
API reference · version 1.2.0

UK Sanctions Screening

Screen any name against the official UK, UN, EU and US (OFAC) sanctions lists. One API call.

Base address
https://api.stratumapis.com/v1/sanctions
Your key
The X-Stratum-Key header, with the key from your API page. Paid per call from your API balance, with no plan (add money on your API page).
Prices
  • A name screened, alone or in a bulk request5p (2p from 1,000 a month)
  • PEP and adverse media on a single screen (pepAndAdverseMedia=true)25p (15p from 1,000 a month) more
  • The lists and their dates, and the daily list changesFree
  • The watchlist (/monitored)For keys that hold an older per-API plan; use the transactions API’s daily watch instead
Every reply carries X-Stratum-Credit-Balance-Pence; a refusal or a source failure is never charged. Limits and prices.
OpenAPI
Download the OpenAPI file (JSON)

Endpoints

gethttps://api.stratumapis.com/v1/sanctions/screen

Screen one name against all four sanctions lists

Parameters
  • namerequiredin query · Person or organisation name to screen
  • typein query · Match person listings only, organisation listings only (entity; organisation and company also accepted), or both
  • dateOfBirthin query · YYYY-MM-DD, or YYYY-MM / YYYY if only the month or year is known. Compared with every date of birth the lists publish for a person; see dateOfBirthMatch.
  • nationalityin query · Two-letter ISO 3166 country code. Compared with the listed nationalities; see nationalityMatch.
  • referencein query · Your own reference (for example an applicant id). Echoed back in the result, never stored.
  • minScorein query · Candidates scoring below this are left out
  • pepAndAdverseMediain query · Also screen for politically exposed persons (PEP) and adverse media. Paid per name from your Stratum credit (25p, 15p once your account has run 1,000 this month), taken before the check and given back if it doesn't run or reuses an answer you already paid for today; the reply's credit says what was charged. Not in a free trial. One name at a time (not on /bulk). Without enough credit: HTTP 402.
Example request
curl -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/screen?name=Roman%20Abramovich&type=person&dateOfBirth=1966-10-24&nationality=RU&reference=applicant-1042"
Example reply: Possible match, date of birth and nationality agree
{
  "checkId": "chk_0b119844-7a02-49b3-ac11-4977427f137f",
  "screenedAt": "2026-09-27T21:15:20.930Z",
  "reference": "applicant-1042",
  "query": "Roman Abramovich",
  "count": 2,
  "matches": [
    {
      "list": "ofsi",
      "name": "Roman Arkadyevich ABRAMOVICH",
      "aliases": [
        "Roman ABRAMOVICH"
      ],
      "type": "person",
      "score": 1,
      "nationality": "Israel, Portugal, Russia",
      "dateOfBirth": "24/10/1966",
      "sanctionRegime": "The Russia (Sanctions) (EU Exit) Regulations 2019",
      "designationDate": "10/03/2022",
      "listingId": "RUS0270",
      "sourceUrl": "https://www.gov.uk/government/publications/the-uk-sanctions-list",
      "matchedAlias": "Roman ABRAMOVICH",
      "nameScore": 1,
      "dateOfBirthMatch": "match",
      "nationalityMatch": "match"
    },
    {
      "list": "eu",
      "name": "Roman Abramovič",
      "type": "person",
      "score": 1,
      "nationality": "RUSSIAN FEDERATION",
      "dateOfBirth": "1966-10-24",
      "sanctionRegime": "UKR",
      "listingId": "137652",
      "sourceUrl": "https://webgate.ec.europa.eu/fsd/fsf",
      "matchedAlias": "Roman Arkadyevich ABRAMOVICH",
      "nameScore": 1,
      "dateOfBirthMatch": "match",
      "nationalityMatch": "match"
    }
  ],
  "screenedWith": {
    "type": "person",
    "minScore": 0.7,
    "dateOfBirth": "1966-10-24",
    "nationality": "RU"
  },
  "listsScreened": [
    "UK Sanctions List (FCDO) (updated 2026-09-27)",
    "UN Security Council Consolidated Sanctions List (updated 2026-09-27)",
    "EU Consolidated Financial Sanctions List (updated 2026-09-27)",
    "US OFAC Sanctions Lists (SDN and non-SDN) (updated 2026-09-27)"
  ],
  "screenProvenance": "Screened against: UK Sanctions List (FCDO), UN Security Council Consolidated Sanctions List, EU Consolidated Financial Sanctions List and US OFAC Sanctions Lists (SDN and non-SDN).",
  "listsSnapshotAt": "2026-09-27T21:07:17.132Z"
}
Example reply: No possible matches
{
  "checkId": "chk_7f70769c-cfe8-4147-beb6-022854bd3e12",
  "screenedAt": "2026-09-27T21:15:21.572Z",
  "reference": "applicant-1043",
  "query": "Amelia Hartwell-Pryce",
  "count": 0,
  "matches": [],
  "screenedWith": {
    "type": "any",
    "minScore": 0.7
  },
  "listsScreened": [
    "UK Sanctions List (FCDO) (updated 2026-09-27)",
    "UN Security Council Consolidated Sanctions List (updated 2026-09-27)",
    "EU Consolidated Financial Sanctions List (updated 2026-09-27)",
    "US OFAC Sanctions Lists (SDN and non-SDN) (updated 2026-09-27)"
  ],
  "screenProvenance": "Screened against: UK Sanctions List (FCDO), UN Security Council Consolidated Sanctions List, EU Consolidated Financial Sanctions List and US OFAC Sanctions Lists (SDN and non-SDN).",
  "listsSnapshotAt": "2026-09-27T21:07:17.132Z"
}
Errors
  • 400 Invalid input. code says which: missing_name, invalid_name, invalid_type, invalid_date_of_birth, invalid_nationality, invalid_reference, invalid_json, missing_names, too_many_names, per_name_field. In /bulk the message names the item, for example names[3].dateOfBirth .... A date of birth or nationality we can't read is always refused, never silently ignored.
  • 401 Missing, invalid or revoked API key (missing_key, invalid_key, revoked_key)
  • 402 Not enough Stratum credit for PEP and adverse media; nothing was screened or charged.
  • 403 The key belongs to a different Stratum API (wrong_api), or it is an account key and the account has no plan for this API (no_plan)
  • 429 This month's limit is reached (monthly_limit_reached, at twice your plan's allowance) or the free trial's allowance is used (trial_limit_reached). Nothing was screened or counted. Treat the names as not screened. Screening resumes on the 1st of next month, on upgrading, or when we raise your limit.
  • 500 The screen did not complete. Treat the name as not yet screened and retry with backoff; do not treat it as clear.
  • 503 The service is temporarily unavailable or timed out. Treat the name as not yet screened and retry with backoff; do not treat it as clear.
posthttps://api.stratumapis.com/v1/sanctions/bulk

Screen up to 100 names in one request (one check per name)

Each name can be a plain string, or an object with its own type, dateOfBirth, nationality and reference, so an organisation and the people responsible for it can go in one request. Top-level type and minScore are defaults for names that don't set their own. If the request would take you past your monthly limit it is refused whole (429), with how many checks remain. A request answers within about 20 seconds: if names are left when time runs out, the response has incomplete: true and lists them in notScreened; send those again. Only screened names are charged.

Example request
curl -X POST -H "X-Stratum-Key: $STRATUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"names":[{"name":"Aerocaribbean Airlines","type":"organisation","reference":"org-77"},{"name":"Roman Abramovich","type":"person","dateOfBirth":"1966-10-24","nationality":"RU","reference":"trustee-77a"}]}' \
  "https://api.stratumapis.com/v1/sanctions/bulk"
Errors
  • 400 Invalid input. code says which: missing_name, invalid_name, invalid_type, invalid_date_of_birth, invalid_nationality, invalid_reference, invalid_json, missing_names, too_many_names, per_name_field. In /bulk the message names the item, for example names[3].dateOfBirth .... A date of birth or nationality we can't read is always refused, never silently ignored.
  • 401 Missing, invalid or revoked API key (missing_key, invalid_key, revoked_key)
  • 403 The key belongs to a different Stratum API (wrong_api), or it is an account key and the account has no plan for this API (no_plan)
  • 429 This month's limit is reached (monthly_limit_reached, at twice your plan's allowance) or the free trial's allowance is used (trial_limit_reached). Nothing was screened or counted. Treat the names as not screened. Screening resumes on the 1st of next month, on upgrading, or when we raise your limit.
  • 500 The screen did not complete. Treat the name as not yet screened and retry with backoff; do not treat it as clear.
  • 503 The service is temporarily unavailable or timed out. Treat the name as not yet screened and retry with backoff; do not treat it as clear.
gethttps://api.stratumapis.com/v1/sanctions/lists

Which lists are loaded, their size and when each was last refreshed (free)

Example request
curl -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/lists"
gethttps://api.stratumapis.com/v1/sanctions/changes

Each day's additions, removals and re-issued listings per list (free)

What changed on each sanctions list, day by day, from the daily 04:00 UTC refresh: the history behind Certaby's UK sanctions list changes page. A list is compared only when both days hold a fresh copy of it; a listing re-issued under a new reference counts once, as amended; a step too large to be one day of designations (a change of source or file format) is withheld with its counts. Days with no change are left out. Free: does not count as a check.

Parameters
  • daysin query · How many days back from the last refresh
  • listin query · Comma-separated list slugs (ofsi, un, eu, ofac); every list when left out
Example request
curl -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/changes?list=ofsi"
Errors
  • 400 Bad days or list value
  • 503 The change history starts with the next daily refresh
posthttps://api.stratumapis.com/v1/sanctions/monitored

Add a person or organisation to your watchlist (free)

Watchlist entries are re-screened against the refreshed lists every day at 05:00 UTC. A listing that newly matches appears in GET /monitored/changes with its details, and we email an alert. Watchlist size: Starter 250, Growth 1,000, Pro 5,000.

Example request
curl -X POST -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/monitored"
Request body
{
  "type": "object",
  "required": [
    "entityName",
    "entityType"
  ],
  "properties": {
    "entityName": {
      "type": "string",
      "maxLength": 200
    },
    "entityType": {
      "type": "string",
      "enum": [
        "individual",
        "company"
      ]
    },
    "dateOfBirth": {
      "type": "string",
      "example": "1980-01-31",
      "description": "A person's date of birth as YYYY-MM-DD (or YYYY-MM / YYYY if only the month or year is known). Optional. The daily re-screen uses it as `/screen` does: a listing with a different date of birth scores lower, so a namesake stops showing as a possible match. Ignored for a company."
    },
    "nationality": {
      "type": "string",
      "example": "GB",
      "description": "A person's nationality as a two-letter ISO 3166 code. Optional; weaker evidence than a date of birth."
    },
    "customerEmail": {
      "type": "string",
      "description": "Where alerts for this entry go. Defaults to the email you subscribed with."
    }
  }
}
Errors
  • 400 Invalid body. Returns { "error": "<code>", "message": "..." }
  • 409 Watchlist full (tier_cap_reached)
gethttps://api.stratumapis.com/v1/sanctions/monitored

List your watchlist with each entry's latest result (free)

Example request
curl -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/monitored"
gethttps://api.stratumapis.com/v1/sanctions/monitored/pep-recheck

Whether your watch list gets a monthly PEP and adverse media re-check

Example request
curl -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/monitored/pep-recheck"
Example reply
{
  "ok": true,
  "monthly": true,
  "pricePerPersonPence": 15,
  "updatedAt": "2026-10-07T22:17:30.101Z"
}
puthttps://api.stratumapis.com/v1/sanctions/monitored/pep-recheck

Switch the monthly PEP and adverse media re-check on or off

On, each person on your watch list is re-checked for PEP and adverse media every 30 days, 15p a person from your Stratum credit; new matches are emailed and appear in /monitored/changes. A person is skipped while your credit is short. The daily sanctions screen is free either way.

Example request
curl -X PUT -H "X-Stratum-Key: $STRATUM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"monthly":true}' \
  "https://api.stratumapis.com/v1/sanctions/monitored/pep-recheck"
Example reply
{
  "ok": true,
  "monthly": true,
  "pricePerPersonPence": 15,
  "updatedAt": "2026-10-07T22:17:30.101Z"
}
Errors
  • 400 Invalid input. code says which: missing_name, invalid_name, invalid_type, invalid_date_of_birth, invalid_nationality, invalid_reference, invalid_json, missing_names, too_many_names, per_name_field. In /bulk the message names the item, for example names[3].dateOfBirth .... A date of birth or nationality we can't read is always refused, never silently ignored.
gethttps://api.stratumapis.com/v1/sanctions/monitored/changes

New matches on your watchlist in the last N days (free)

Poll after 05:00 UTC. The first screen of a new entry lists every match as new (kind first-screen).

Parameters
  • daysin query
Example request
curl -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/monitored/changes"
Example reply
{
  "count": 1,
  "days": 1,
  "changes": [
    {
      "entityId": "ent_2d0524a6-5afd-4b60-91b1-c4488ec063bf",
      "entityName": "Example Name",
      "screenedAt": "2026-09-27T05:00:12.928Z",
      "change": {
        "kind": "delta",
        "netNewSanctions": 1,
        "newSanctionsMatches": [
          {
            "list": "ofac",
            "listingId": "7845",
            "name": "Example LISTED NAME",
            "score": 0.9,
            "sourceUrl": "https://sanctionssearch.ofac.treas.gov/"
          }
        ]
      }
    }
  ]
}
deletehttps://api.stratumapis.com/v1/sanctions/monitored/{entityId}

Remove an entry from your watchlist (idempotent)

Parameters
  • entityIdrequiredin path
Example request
curl -X DELETE -H "X-Stratum-Key: $STRATUM_KEY" \
  "https://api.stratumapis.com/v1/sanctions/monitored/:entityId"