📘 Public beta · Endpoints are stable; OpenAPI specs and SDKs ship monthly. See changelog →
Products
AML Platform
Watchlists

Watchlists

Watchlists are curated subject databases used in screenings. Quantum Elixir maintains a stack of standard public-source watchlists and exposes APIs for your own private lists (internal blocklists, partner sanctions feeds).

Standard watchlists (included)

WatchlistRefresh cadenceNotes
OFAC SDN + Non-SDNHourlyUS Treasury sanctions
UN Security CouncilDailyIncluding Al-Qaida/Taliban sanctions list
EU ConsolidatedDailyEU CFSP financial sanctions
UK HMT Financial SanctionsDaily
ANC (Australian Nat'l)Daily
World-Check PEP (licensed)DailyPremium tier — adds individual PEPs by jurisdiction
Dow Jones Adverse Media (licensed)DailyPremium tier — adds AM coverage
PPATK Internal (private)Per-instanceDistributed only to PJK members

Refresh status:

GET /api/watchlists
{
  "ok": true,
  "data": [
    {
      "id": "wl_ofac_sdn",
      "name": "OFAC SDN",
      "category": "sanctions",
      "active": true,
      "lastRefreshAt": "2026-05-24T12:00:01Z",
      "entryCount": 12847,
      "source": "https://sanctionslistservice.ofac.treas.gov/..."
    }
  ]
}

Adding a private watchlist

For internal blocklists or partner-provided sanctions feeds:

POST/api/watchlists
Auth · API keyScope · write
{
  "name": "PT Bank XYZ Internal Blocklist",
  "category": "internal",
  "source": "manual"
}

Returns the new watchlist ID. Then add entries:

POST/api/watchlists/{id}/entries
Auth · API keyScope · write
{
  "entries": [
    {
      "fullName": "Budi Risky",
      "nik": "3201234567890123",
      "dateOfBirth": "1980-01-01",
      "reason": "Internal flag — failed three-time SAR investigation",
      "addedBy": "compliance@bankxyz.co.id"
    }
  ]
}

Up to 1,000 entries per request. The list takes effect immediately for new screenings.

CSV / connector import

For larger imports or scheduled syncs from your own DB:

POST/api/watchlists/refresh
Auth · API keyScope · write

Triggers a fetch from each watchlist's configured source. For private watchlists with a database connector configured (Postgres / MySQL / Snowflake / BigQuery), this is also the manual trigger for an ad-hoc sync.

Configure connectors from the dashboard's Watchlists → Connectors page.

Test a connector

POST/api/watchlists/{id}/test-connection
Auth · API keyScope · write

Returns connectivity + sample-row info without committing changes:

{
  "ok": true,
  "data": {
    "reachable": true,
    "rowsAvailable": 12847,
    "sampleRow": { "name": "...", "nik": "..." },
    "lastTestedAt": "..."
  }
}

Inspect entries

GET/api/watchlists/{id}/entries
Auth · API keyScope · read

Paginated. Use for the dashboard's watchlist-browse UI.

curl ".../api/watchlists/wl_ofac_sdn/entries?q=John&limit=20" \
  -H "Authorization: Bearer $QE_API_KEY"

Adverse-media articles

GET/api/adverse-media/articles
Auth · API keyScope · read

Pull the article bodies behind any adverse-media match. Articles are sourced from a curated Indonesian-language corpus + global wire services, indexed with subject extraction and risk topic tagging.

curl ".../api/adverse-media/articles?ids=amr_01HXY...,amr_01HXZ..." \
  -H "Authorization: Bearer $QE_API_KEY"
{
  "ok": true,
  "data": [
    {
      "id": "amr_01HXY...",
      "title": "Detik.com: Pengusaha XYZ dijerat pasal pencucian uang",
      "url": "https://detik.com/...",
      "publishedAt": "2024-08-15",
      "snippet": "...",
      "language": "id",
      "subjects": [{ "name": "Bambang Setiawan Hartono", "confidence": 0.92 }],
      "topics": ["money_laundering", "corruption"]
    }
  ]
}

Import adverse-media bulk

POST/api/adverse-media/import
Auth · API keyScope · write

If you license your own AM corpus from a third party, import via this endpoint. Body is an array of article objects.

Refresh events

When a watchlist refresh completes, we fire a watchlist.refreshed webhook with the entry-count delta. Useful for compliance teams that audit watchlist freshness, and for triggering a re-screen of your existing customer base via the ongoing screening lane.