REST API v1

API Reference

Integrate sanctions screening into your applications. Screen entities, set up continuous monitoring, and receive alerts via webhooks.

Quick Start

Get started with the SanctScan API in minutes

1. Get your API key

Create an API key in your organization settings at Settings → API Keys

2. Make your first request

curl -X POST https://sanctscan.app/api/v1/screen \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{"name": "John Smith"}'

Authentication

All API requests require authentication using an API key. Include your API key in the x-api-key header.

curl -H "x-api-key: your_api_key" https://sanctscan.app/api/v1/screenings

Keep your API key secure

Never expose your API key in client-side code or public repositories. Use environment variables to store your key.

Base URL

Endpoints

POST
/screen
Screen an entity against all sanctions lists. Returns risk score, matched lists, and detailed match information.

Request Body

name
string (required)

The name of the entity to screen

entityType
string

Type of entity: 'person', 'business', or 'organization'

country
string

Country code or name for better matching

birthDate
string

Date of birth in ISO format (YYYY-MM-DD)

Example Request

curl -X POST https://sanctscan.app/api/v1/screen \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
  "name": "Viktor Sokolov",
  "entityType": "person",
  "country": "RU"
}'

Response

{
"success": true,
"data": {
  "screeningId": "scr_abc123",
  "entityId": "us_ofac:12345",
  "entityName": "Viktor Sokolov",
  "riskScore": 85,
  "riskLevel": "high",
  "confidence": 92,
  "matchedSources": ["us_ofac", "eu_csl"],
  "matchDetails": [
    {
      "dataset": "us_ofac",
      "datasetLabel": "OFAC SDN",
      "matchScore": 92,
      "entity": {
        "id": "us_ofac:12345",
        "name": "Viktor SOKOLOV",
        "entityType": "person",
        "country": "Russia",
        "programs": ["RUSSIA-EO14024"],
        "listingDate": "2022-03-15"
      }
    }
  ],
  "isMonitored": false
}
}
GET
/screenings
List all screenings for your organization with filtering and pagination.

Query Parameters

page
number

Page number (default: 1)

pageSize
number

Results per page (default: 20, max: 100)

riskLevel
string

Filter by risk level: 'low', 'medium', or 'high'

dateFrom
string

Filter screenings from this date (ISO format)

dateTo
string

Filter screenings up to this date (ISO format)

search
string

Search by entity name

Example Request

curl "https://sanctscan.app/api/v1/screenings?riskLevel=high&pageSize=10" \
-H "x-api-key: your_api_key"

Response

{
"success": true,
"data": [
  {
    "id": "scr_abc123",
    "entityId": "us_ofac:12345",
    "entityName": "Viktor Sokolov",
    "query": "Viktor Sokolov",
    "riskScore": 85,
    "riskLevel": "high",
    "matchedSources": ["us_ofac", "eu_csl"],
    "isMonitored": true,
    "timestamp": "2024-01-15T10:30:00Z"
  }
],
"meta": {
  "pagination": {
    "page": 1,
    "pageSize": 10,
    "total": 42,
    "totalPages": 5
  }
}
}
POST
/monitors
Add an entity to continuous monitoring. You'll receive webhook notifications when the entity's sanctions status changes.

Request Body

screeningId
string (required)

The ID of a previous screening to monitor

riskThreshold
number

Alert threshold for risk score changes (default: 30)

Example Request

curl -X POST https://sanctscan.app/api/v1/monitors \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
  "screeningId": "scr_abc123",
  "riskThreshold": 50
}'

Response

{
"success": true,
"data": {
  "id": "mon_xyz789",
  "screeningId": "scr_abc123",
  "isActive": true,
  "isNew": true
}
}
GET
/monitors
List all monitored entities for your organization.

Query Parameters

page
number

Page number (default: 1)

pageSize
number

Results per page (default: 20, max: 100)

Example Request

curl https://sanctscan.app/api/v1/monitors \
-H "x-api-key: your_api_key"

Webhooks

Configure webhooks in your organization settings to receive real-time notifications when monitored entities have status changes.

Webhook Payload

When a monitored entity's risk status changes, we'll send a POST request to your webhook URL.

{
"event": "alert.created",
"timestamp": "2024-01-15T14:30:00Z",
"organization": {
  "id": "org_abc123",
  "slug": "acme-corp",
  "name": "Acme Corporation"
},
"alert": {
  "id": "alt_def456",
  "monitorId": "mon_xyz789",
  "entityId": "us_ofac:12345",
  "entityName": "Viktor Sokolov",
  "oldRiskScore": 45,
  "newRiskScore": 85,
  "oldRiskLevel": "medium",
  "newRiskLevel": "high",
  "oldLists": [],
  "newLists": ["OFAC SDN"],
  "timestamp": "2024-01-15T14:30:00Z"
}
}

Webhook Events

alert.created

When a monitored entity's risk status increases

alert.resolved

When an alert is resolved by a user

Error Codes

All errors follow a consistent format with a code and message.

{
"success": false,
"error": {
  "code": "VALIDATION_ERROR",
  "message": "Name is required"
}
}
CodeStatusDescription
INVALID_API_KEY401

Invalid or missing API key

VALIDATION_ERROR400

Invalid request parameters

NOT_FOUND404

Resource not found

CONFLICT409

Entity already being monitored

TIER_LIMIT_EXCEEDED403

Monthly quota exceeded

INTERNAL_ERROR500

Server error

Supported Sanctions Lists

We screen against the following major sanctions lists, updated daily.

Source IDNameRegion
us_ofacOFAC SDN List
US
us_cslUS Consolidated Screening List
US
eu_cslEU Consolidated Sanctions List
EU
uk_cslUK Sanctions List
UK
un_cslUN Consolidated Sanctions List
Global
au_dfatDFAT Consolidated List
AU
ch_secoSwiss SECO Sanctions List
CH
ca_gac

Canada Global Affairs (GAC) Autonomous Sanctions

CA
jp_mofJapan Ministry of Finance Sanctions
JP

Ready to integrate?

Create a free account and get your API key in minutes.

Cookie Voorkeuren

We gebruiken cookies om websiteverkeer te analyseren en uw ervaring te verbeteren. U kunt kiezen om niet-essentiële cookies te accepteren of te weigeren.