API
API Documentation
Integrate sanctions screening directly into your applications with our REST API.
Getting Started
The OFACScreen API allows you to programmatically screen names and entities against OFAC and other sanctions lists. Follow these steps to get up and running:
Create an Account
Create an account. The REST API is on every plan, including the 14-day trial, so you can integrate before you pay.
Generate API Key
Go to your dashboard settings to generate a Bearer token.
Make Your First Call
Use the examples below to start screening against sanctions lists.
Authentication
All API requests must include a Bearer token in the Authorization header. You can generate API keys from your account dashboard.
Authorization: Bearer your_api_key_here
Keep your API key secret. Do not expose it in client-side code, public repositories, or browser requests.
Screen (Single)
/api/v1/screen/
Screen a single name or entity against all enabled sanctions lists. Returns match results with confidence scores.
Request
curl -X POST https://api.ofacscreen.com/api/v1/screen/ \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "John Smith",
"type": "individual",
"threshold": 0.3
}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name or entity to screen (max 500 characters) |
type |
string | No | "individual", "entity", "vessel", or "aircraft". Defaults to all types. |
threshold |
number | No | Minimum match score between 0.0 and 1.0. Defaults to 0.3. |
limit |
integer | No | Return only the highest-scoring limit matches. Omit it and every match is returned, which is the default. total_matches is always the real total, so total_matches greater than the length of matches means the rest were above your limit, not missing. |
Response
{
"query": "John Smith",
"screened_at": "2026-03-04T14:30:00Z",
"total_matches": 1,
"matches": [
{
"id": 281578,
"name": "John Ka-chiu LEE",
"entry_type": "individual",
"list_code": "OFAC_SDN",
"list_name": "OFAC Specially Designated Nationals (SDN)",
"program": "HK-EO13936",
"remarks": "",
"score": 0.333,
"score_pct": 33,
"matched_alias": "John LEE",
"aliases": ["John LEE", "Ka Chiu LEE"],
"addresses": [{"city": "Kowloon", "country": "Hong Kong"}],
"identifications": [{"type": "National ID No.", "number": "G0286787"}],
"match_level": "low"
}
]
}
Screen (Batch)
/api/v1/screen/batch/
Screen multiple names or entities in a single request. Supports up to 100 names per batch on every plan. For larger batches, use the CSV upload feature in the web dashboard, where the per-file row limit rises with your plan.
Request
curl -X POST https://api.ofacscreen.com/api/v1/screen/batch/ \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"names": ["John Smith", "Acme Trading LLC", "Jane Doe"],
"type": "individual",
"threshold": 0.3
}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
names |
array | Yes | Array of name strings to screen (max 100) |
type |
string | No | "individual", "entity", "vessel", or "aircraft". Defaults to all types. |
threshold |
number | No | Minimum match score between 0.0 and 1.0. Defaults to 0.3. |
Response
{
"screened_at": "2026-03-04T14:30:00Z",
"total_screened": 3,
"results": [
{
"query": "John Smith",
"total_matches": 1,
"matches": [...]
},
{
"query": "Acme Trading LLC",
"total_matches": 0,
"matches": []
},
{
"query": "Jane Doe",
"total_matches": 0,
"matches": []
}
]
}
Lists
/api/v1/lists/
Retrieve information about all available sanctions lists, including the last update timestamp. This endpoint does not require authentication.
Request
curl https://api.ofacscreen.com/api/v1/lists/
Response
{
"lists": [
{
"code": "OFAC_SDN",
"name": "OFAC Specially Designated Nationals (SDN)",
"description": "The primary US sanctions list maintained by the Office of Foreign Assets Control.",
"country": "United States",
"last_updated": "2026-03-04T12:00:00Z"
},
{
"code": "EU_FSF",
"name": "EU Financial Sanctions (FSF)",
"description": "The European Union consolidated list of persons, groups and entities subject to EU financial sanctions.",
"country": "European Union",
"last_updated": "2026-03-04T11:00:00Z"
}
]
}
Monitoring
/api/v1/monitoring/
Manage entities for continuous monitoring. Monitored entities are automatically re-screened on every sanctions list update. You'll receive an email alert when a new match is detected.
List Entities
curl https://api.ofacscreen.com/api/v1/monitoring/ \
-H "Authorization: Bearer your_api_key_here"
{
"entities": [
{
"id": 42,
"name": "John Smith",
"entity_type": "individual",
"last_checked_at": "2026-03-04T12:00:00Z",
"last_match_found": false,
"last_match_score": 0.0
}
],
"total": 1
}
Add Entity
curl -X POST https://api.ofacscreen.com/api/v1/monitoring/ \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "John Smith", "entity_type": "individual"}'
{
"id": 42,
"name": "John Smith",
"entity_type": "individual",
"created": true
}
Remove Entity
curl -X DELETE https://api.ofacscreen.com/api/v1/monitoring/ \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"id": 42}'
{"id": 42, "deleted": true}
Note: The number of monitored entities is limited by your plan. Entities are automatically screened on every sanctions list update. Email alerts are sent when a new match is detected.
Rate Limits
API calls draw on the same monthly search allowance as the web interface, so one quota covers both. Rate limit headers are included in every response.
| Plan | Monthly Quota |
|---|---|
| Free Trial | 25 searches |
| Starter | 1,000 searches |
| Professional | 2,000 searches |
| Business | 10,000 searches |
| Enterprise | Unlimited |
Rate Limit Headers
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9955
If you exceed your monthly quota, you will receive a 429 Too Many Requests response with a Retry-After header.
Error Codes
The API uses standard HTTP status codes to indicate success or failure.
| Status | Description |
|---|---|
200 |
Success. Results returned. |
400 |
Bad request. Check your request parameters. |
401 |
Unauthorized. Invalid or missing API key. |
403 |
Forbidden. No active subscription, or a plan without API access. |
429 |
Rate limit exceeded. Retry after the reset period. |
500 |
Internal server error. Contact support if this persists. |
Error Response Format
{
"error": "name field is required"
}
API
Ready to Integrate?
The REST API is on every plan, including the 14-day trial. Start the trial and generate your API key from your dashboard settings.