API Documentation

Overview

The AML Screen API provides programmatic access to sanctions list data from OFAC, UN, EU, UK, DFAT, ITA, and SECO. Use our REST API to search individuals and entities across global watchlists.

Base URL: https://api.amlscreen.io

API versions

  • /api/v1/search — Original search endpoint
  • /api/v2/search — Recommended. Structured results, metadata support, usage tracking
  • /api/v2/bulk-search — Batch screening for multiple names in one request

Authentication

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

x-api-key: YOUR_API_KEY

You can generate API keys from the dashboard.

Search

v2 — Recommended

POST /api/v2/search

Search for a single name or entity. Returns structured match results with per-field detail and an api_usage_id for audit purposes.

Request Body

{
  "prompt": "John Smith",
  "search_type": "standard_match"
}

Parameters

ParameterTypeRequiredDescription
promptstringYesThe name or entity to search for
search_typestringNoMatching algorithm to use. Defaults to fuzzy_search. See search types below.

Example Request

curl -X POST https://api.amlscreen.io/api/v2/search \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "prompt": "John Smith",
    "search_type": "standard_match"
  }'

Response

{
  "search results": [
    {
      "id": "uuid",
      "name": "John Smith",
      "list": "OFAC Specially Designated Nationals (SDN) List",
      "source_uid": "ofac-12345",
      "match_score": 0.97
    },
    {
      "id": "uuid",
      "name": "Jonathan Smith",
      "list": "EU Consolidated Sanctions List",
      "source_uid": "eu-67890",
      "match_score": 0.84
    }
  ],
  "api_usage_id": "uuid"
}

Bulk Search

v2

POST /api/v2/bulk-search

Screen multiple names in a single request. Each name is searched independently and results are returned per name.

Request Body

{
  "names": ["John Smith", "Jane Doe", "Acme Corp"],
  "search_type": "standard_match"
}

Parameters

ParameterTypeRequiredDescription
namesstring[]YesArray of names or entities to screen
search_typestringNoMatching algorithm. Defaults to standard_match. Supported: permissive_match, standard_match, strict_match.

Example Request

curl -X POST https://api.amlscreen.io/api/v2/bulk-search \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "names": ["John Smith", "Jane Doe"],
    "search_type": "standard_match"
  }'

Response

{
  "results": [
    {
      "name": "John Smith",
      "matches": [
        {
          "id": "uuid",
          "name": "John Smith",
          "list": "OFAC Specially Designated Nationals (SDN) List",
          "source_uid": "ofac-12345",
          "match_score": 0.97
        }
      ]
    },
    {
      "name": "Jane Doe",
      "matches": []
    }
  ],
  "api_usage_id": "uuid"
}

Search Types

fuzzy_search (v2/search only)

Vector-based similarity matching. Best for finding matches even with significant spelling variations, typos, or alternative spellings. Uses embeddings for semantic similarity.

permissive_match

Relaxed matching with high tolerance for variations. Catches more potential matches but may include more false positives. Good for comprehensive screening.

standard_match (default for bulk)

Balanced approach between precision and recall. Recommended for most use cases. Provides a good mix of accuracy and coverage.

strict_match

High precision matching with low tolerance for variations. Returns only very close matches. Best when you need high confidence in results.

Search

v1 — Legacy

POST /api/v1/search

Original search endpoint. Functional but we recommend migrating to /api/v2/search for structured results and usage tracking.

Request Body

{
  "prompt": "search term",
  "search_type": "standard_match"
}

Example Request

curl -X POST https://api.amlscreen.io/api/v1/search \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "prompt": "John Smith",
    "search_type": "standard_match"
  }'

Response

{
  "search results": [
    {
      "search_result": {
        "match_type": "name",
        "name": "John Smith",
        "source_lists": [
          "OFAC Specially Designated Nationals (SDN) List",
          "UN Consolidated Sanctions List"
        ]
      }
    }
  ]
}

Error Codes

CodeDescription
400Bad Request — Invalid or missing parameters
401Unauthorized — Invalid or missing API key
429Too Many Requests — Rate limit exceeded. Check the Retry-After response header for when to retry.
500Internal Server Error — Something went wrong on our end

Rate Limits

Rate limits are enforced per API key. When a limit is exceeded the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait before retrying.

Contact us if you need higher limits for your use case.

We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.