API documentation

Sanctions monitoring API: create and manage repeat checks

Save a subject for regular sanctions checks. Set the cadence, read changes and failures, and pause or stop monitoring when your workflow needs it.

Updated

250 free live screenings. One lifetime allowance. No credit card required.
Create
POST /monitors

Retains the subject for future checks.

Recheck
6 hours, daily or weekly

Source changes can trigger extra rescreens.

Allowance
Each rescreen counts

Completed checks use the shared plan allowance.

Read three separate states

Schedule
Active permits scheduling; paused stops it. Neither state proves that a screening completed.
Screening health
Pending, healthy, overdue or failed describes the latest checks. Inspect the last successful screening and its evidence.
Human review
A new match or changed evidence can require review. Acknowledging an event does not resolve the linked case.

1. Create a retained monitor

Use monitors:write to create or manage a monitor and results:read to read its health, events and resulting screenings. Set MONITOR_REQUEST_KEY to a new UUID and persist the request. name is the monitor label; subject.name is the identity being checked. Both are required. Select exactly one of sources or package.

HTTP 201 returns data.id, name and status active. Save data.id as MONITOR_ID. active means scheduling is enabled; creation queues the initial screening asynchronously and does not guarantee an initial result. The create body does not accept retention, reference, intervalHours or runNow. Retention is standard; the initial interval is the policy’s approved cadence or 24 hours without a policy.

Terminal · curl
curl --fail-with-body "https://www.sanctionskit.com/api/v1/monitors" \
  -H "Authorization: Bearer $SANCTIONSKIT_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $MONITOR_REQUEST_KEY" \
  --data '{
  "name": "Synthetic customer monitoring",
  "subject": {
    "name": "Alex Morgan",
    "entityType": "person",
    "birthDate": "1984"
  },
  "package": "sandbox@1"
}'

2. Read health and the latest completed screening

GET /monitoring?monitorId=ID returns data.items, nextCursor and the capacity forecast. Find your monitor in items and inspect status, health, revision, lastAttemptAt, lastSuccessfulAt, lastErrorCode, lastScreeningId and nextRunAt. lastScreeningId can be null before the first successful run. An empty items array does not mean a healthy no-match.

lastErrorCode and an event’s errorCode are public diagnostic codes, not screening outcomes. Handle documented business codes; temporarily_unavailable indicates a temporary service failure and screening_failed is the generic fallback. Keep unknown future codes in a failed or incomplete state. A null code alone does not prove success; use health and lastSuccessfulAt.

Use GET /results/{lastScreeningId} for retained evidence. GET /monitors and GET /monitors/{id} are compact resources using last_screening_id and next_run_at; the richer /monitoring resource uses lastScreeningId and nextRunAt. Do not mix the two response contracts.

Terminal · curl
curl --fail-with-body "https://www.sanctionskit.com/api/v1/monitoring?monitorId=$MONITOR_ID&limit=25" \
  -H "Authorization: Bearer $SANCTIONSKIT_API_KEY"

3. Pause, resume, change cadence or queue a retry

PATCH /monitoring/{id} controls scheduling. Read the current revision first, then send expectedRevision and at least one of status (active or paused), intervalHours (6, 24 or 168), or runNow:true. Include a fresh Idempotency-Key for the intended mutation. Reuse that key and identical body after an uncertain response.

The example pauses revision 1; replace 1 with the returned current revision. To resume use status active. To queue a check on an active monitor use runNow:true. Policy-backed monitors must retain the approved interval. The success data contains id and updated:true; reload /monitoring for its new revision and health. Queued work is not a completed screen. A 409 stale_revision requires reloading and reconsidering the change with a new operation key.

Terminal · curl
curl --fail-with-body "https://www.sanctionskit.com/api/v1/monitoring/$MONITOR_ID" \
  -X PATCH \
  -H "Authorization: Bearer $SANCTIONSKIT_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $CONTROL_REQUEST_KEY" \
  --data '{
  "expectedRevision": 1,
  "status": "paused"
}'

4. Edit the identity or stop monitoring

PATCH /monitors/{id} replaces the saved name, subject and coverage selection, with optional policy/counterpartyId and required expectedRevision. It is not a partial subject patch: send the full intended monitor definition and Idempotency-Key. Read the current saved request from /monitoring first. An update queues screening; a paused monitor must be resumed to run.

DELETE /monitors/{id} stops the monitor and clears its saved request. The response has data.id and status deleted. Repeating deletion for the same retained deleted ID is safe. Historical screening evidence follows its retention policy; deleting a monitor does not erase completed results or their usage.

5. Consume monitoring events without losing review work

GET /monitoring/inbox accepts status, kind, monitorId, limit and cursor and returns data.items plus nextCursor. Both /monitoring and its inbox use a default limit of 20 and maximum of 25. GET /monitoring/inbox/{id} returns one event. An event identifies monitorId, screeningId, previousScreeningId, caseId, kind, status and retained changes. Null screening references are valid for failures that did not create a result.

Use currentEvidenceAvailable and previousEvidenceAvailable when present; a missing/expired baseline does not invalidate a new result. The dashboard’s event acknowledgement is a human-only operation; API keys can read events but cannot acknowledge human review. Acknowledging an event never closes a case. Webhooks can signal new events using opaque IDs; retrieve the event to inspect its detail.

Terminal · curl
curl --fail-with-body "https://www.sanctionskit.com/api/v1/monitoring/inbox?status=unread&limit=25" \
  -H "Authorization: Bearer $SANCTIONSKIT_API_KEY"

Retention and ownership

A monitor belongs to one organization and environment. Its saved subject must remain available for future checks. Stopping and deleting the monitor clears that request; historical screening evidence follows its separate retention policy.

Act on failures and overdue checks

Health distinguishes pending, healthy, overdue and failed checks. GET /monitoring accepts monitorId for a direct lookup or q for a label search. Use the current revision and retry controls in step 3 after resolving the cause. Resume and retry revalidate source coverage and approved policy; a queued retry is not a completed screening.

Governed no-match rescreens renew the monitor’s case when fresh evidence requires external checks. Earlier completed checks remain historical. Administrators may opt into monitoring and overdue email notifications in organization settings; the inbox remains the place to inspect the event and linked review.

Review changes rather than only new names

Qualified source changes schedule full rescreens alongside the selected six-hour, daily, or weekly interval. Relevant changes to match evidence, engine, or policy can reopen a dismissed case. Use the monitoring inbox to inspect changes, acknowledge events, and open the linked investigation. Editing a saved counterparty’s identity pauses its linked monitoring for review.

Each completed rescreen consumes one subject allowance. A monitor-count allowance is not unlimited screening volume. When a plan or configured cap is exhausted, further screens cannot complete until allowance is available. Treat a delayed or failed rescreen as an operational state, not evidence that nothing changed.

Request and response reference

Frequently asked questions

Does each monitoring rescreen use screening allowance?

Yes. Each completed rescreen is a new check and uses the shared subject allowance. Include scheduled runs and eligible source-change checks when planning usage. A forecast estimates future demand; it does not reserve capacity for those future checks.

Can a monitor keep a subject without standard retention?

Monitoring needs to retain the subject so it can run future checks and uses standard retention. Minimal retention is not available for monitors. Manage the saved identity and the organization’s retention rules before enabling repeated checks.

Does an overdue monitor mean the customer has no matches?

No. It means the expected check has not completed on time. Read its health, latest completed screening, and failure details. Keep overdue or failed monitoring visible as unfinished work while resolving the source, allowance, or service issue.

Why can editing a saved customer pause its linked monitor?

The monitor’s saved request needs to agree with the updated identity. Review that request and current revision before resuming. Earlier screening evidence remains tied to the old input; editing a profile does not rewrite the historical result.

KEEP BUILDING

Where to go next