SancScreen API

Screen entities against 13 global sanctions lists. API key required — sign up free.

Version: v1Base URL: /api/v1

Authentication

All API endpoints require an API key. Sign up for free to get your key.

Include your key in every request using one of these methods:

Option 1: Authorization header

Authorization: Bearer sk_live_your_key_here

Option 2: x-api-key header

x-api-key: sk_live_your_key_here

Example

curl -X POST https://your-domain.com/api/v1/screen \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here" \
  -d '{"query": "Bank of Syria"}'

Overview

All responses follow a standard JSON envelope. Successful responses include rate-limit headers.

Success envelope

{
  "ok": true,
  "data": { ... },
  "meta": {
    "timestamp": "2026-03-13T...",
    "version": "v1"
  }
}

Error envelope

{
  "ok": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "..."
  },
  "meta": {
    "timestamp": "2026-03-13T...",
    "version": "v1"
  }
}

Rate Limit Headers

X-RateLimit-Limit: 60

X-RateLimit-Remaining: 58

X-RateLimit-Reset: 1710345600

Screen Entity

POST/api/v1/screen

Screen a single entity (name, IMO number, or MMSI) against all 13 sanctions lists. Returns a HIT or CLEAR verdict with matching details.

Request body (JSON)

querystringrequiredName, IMO number, or MMSI to screen
typestringForce query type: "name", "imo", or "mmsi". Auto-detected if omitted.

Example request

curl -X POST https://your-domain.com/api/v1/screen \
  -H "Content-Type: application/json" \
  -d '{"query": "Bank of Syria"}'

Example response

{
  "ok": true,
  "data": {
    "query": "Bank of Syria",
    "queryType": "NAME",
    "verdict": "HIT",
    "matchCount": 3,
    "activeHits": 2,
    "results": [
      {
        "id": "clx...",
        "primaryName": "Commercial Bank of Syria",
        "sourceList": "OFAC_SDN",
        "entityType": "Entity",
        "status": "ACTIVE",
        "score": 0.85,
        "aliases": ["CBS"],
        "programs": ["SYRIA"]
      }
    ]
  },
  "meta": { "timestamp": "...", "version": "v1" }
}

Rate limit: 60 requests/minute per IP

Bulk Screen

POST/api/v1/screen/bulk

Upload a CSV file to screen multiple entities at once. The CSV should have a header row with at least one column: name, imo, vessel_name, or company_name.

Request (multipart/form-data)

fileFile (.csv)requiredCSV file with entities to screen

Example request

curl -X POST https://your-domain.com/api/v1/screen/bulk \
  -F "file=@entities.csv"

Example response

{
  "ok": true,
  "data": {
    "fileName": "entities.csv",
    "totalRows": 100,
    "totalHits": 3,
    "totalClear": 97,
    "results": [
      {
        "row": 1,
        "query": "Acme Corp",
        "queryType": "NAME",
        "verdict": "CLEAR",
        "matchCount": 0,
        "activeHits": 0,
        "topMatch": null
      }
    ]
  },
  "meta": { "timestamp": "...", "version": "v1" }
}

Rate limit: 5 requests/minute per IP

List Sources

GET/api/v1/sources

Get all 13 sanctions sources with their active entity counts.

Example response

{
  "ok": true,
  "data": {
    "sources": [
      { "key": "OFAC_SDN", "label": "OFAC SDN", "activeCount": 12543 },
      { "key": "EU_CONSOLIDATED", "label": "EU Consolidated", "activeCount": 5021 },
      { "key": "UK_OFSI", "label": "UK OFSI", "activeCount": 4830 }
    ],
    "totalSources": 13
  },
  "meta": { "timestamp": "...", "version": "v1" }
}

Browse Source Entities

GET/api/v1/sources/{sourceList}

Browse entities from a specific sanctions source with pagination, filtering, and search.

Query parameters

pagenumberPage number (default: 1)
pageSizenumberResults per page, max 100 (default: 50)
statusstringFilter by ACTIVE or DELISTED
entityTypestringFilter by Individual, Entity, or Vessel
searchstringCase-insensitive name search
sortstringSort by: name, status, type, updated (default: name)
orderstringSort order: asc or desc (default: asc)
formatstringSet to "csv" to download as CSV file

Example request

curl "https://your-domain.com/api/v1/sources/OFAC_SDN?page=1&pageSize=10&status=ACTIVE&search=bank"

Example response

{
  "ok": true,
  "data": {
    "source": { "key": "OFAC_SDN", "label": "OFAC SDN" },
    "entities": [
      {
        "id": "clx...",
        "primaryName": "Central Bank of Iran",
        "entityType": "Entity",
        "status": "ACTIVE",
        "aliases": ["CBI", "Bank Markazi"],
        "programs": ["IRAN"],
        "updatedAt": "2026-03-13T..."
      }
    ]
  },
  "meta": {
    "timestamp": "...",
    "version": "v1",
    "page": 1,
    "pageSize": 10,
    "total": 234,
    "totalPages": 24
  }
}

Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Missing, invalid, or revoked API key
VALIDATION_ERROR400Invalid request (missing fields, bad format)
NOT_FOUND404Resource not found (invalid source list)
RATE_LIMITED429Too many requests. Wait and retry.
INTERNAL_ERROR500Server error. Contact support.

Supported Sources

KeySource
OFAC_SDNUS Treasury OFAC SDN List
OFAC_CONSUS Treasury OFAC Non-SDN Consolidated
EU_CONSOLIDATEDEU Consolidated Sanctions
UK_OFSIUK OFSI Consolidated List
UN_SCUN Security Council Sanctions
CA_SEMACanada SEMA Sanctions
AU_DFATAustralia DFAT Sanctions
CH_SECOSwiss SECO Sanctions
US_BISUS BIS Entity List
JP_MOFJapan MOF Sanctions
SG_MASSingapore MAS Enforcement
WB_DEBARREDWorld Bank Debarred Firms
INTERPOL_REDINTERPOL Red Notices