Skip to main content

What it’s for

The AML API lets your systems screen a person or a company the moment they apply, without anyone opening Sentinel. AML screening (anti-money laundering screening) checks the subject against sanctions lists, PEP data (PEP: politically exposed person, someone who holds or held a prominent public role), Kenyan risk lists and adverse media. It uses the same sources, matching and rules as a screening run on the AML Screening page. See B6 AML screening (in Sentinel’s in-app Help). The same call can enrol the subject for ongoing monitoring. Sentinel then re-screens them on a schedule and tells you only when something new or more severe appears. See B7 Ongoing monitoring (in Sentinel’s in-app Help). This guide covers four calls: Screening is asynchronous. The POST returns at once with an id, and you collect the result from a webhook or from GET /v1/verify/{id}. Authentication, test mode, rate limits and the general error format are in Quick start. This guide covers only what is specific to AML.

Who can use it

  • Any system holding a valid API key for your organization, with the right scope.
  • An Admin or Developer creates keys and picks their scopes on the API Keys page. Everyone else can see the keys but can’t change them.
  • The scopes these calls need:
A key created before scopes existed can call every endpoint. A key without the needed scope gets a 403. API Keys page with a key that has the Run AML screenings and Manage AML monitoring scopes

Step by step

All examples read the key from the SENTINEL_API_KEY environment variable, for example gt_test_... for a test key. The examples use Sentinel’s production address, https://robust-parakeet-542.convex.site. If API Keys shows a different API address for your organization, use that.

Screen a person

Send the full name and entityType: "individual". Add a date of birth or ID number when you have one: without them, matching is on name and country only and you get more look-alikes to review.

curl

Node

Python

Screen a company and enrol it for monitoring

Use entityType: "entity", the BRS registration number and the country of incorporation. Set monitor: true and pass your own customer id in externalRef.

curl

Node

Python

Store the monitoringId (it starts with mon_) against your customer. If you screen the same customer again with the same externalRef and monitor: true, Sentinel updates the existing monitored subject and returns the same monitoringId. It doesn’t create a second one. If you leave monitor out, your organization’s default applies. An Admin sets it with Monitor every new AML screening by default in Settings → Screening rules. Send monitor: false to be sure a subject is not enrolled.

Collect the result

  1. Wait for the sentinel.scan.complete webhook (Webhooks), or poll GET /v1/verify/{id} with the id from the POST (Results and credits).
  2. When status is completed, read verdict and the screening object described under “What each result means”.
When monitoring finds a change later, Sentinel creates a new AML screening for the subject and sends it as a sentinel.monitoring.alert webhook. Its result.monitoring block names the monitored subject (reference), your externalRef, and the hits that are added or escalated. The alert also opens a review case for your team.

List monitored subjects

Returns your actively monitored subjects, newest first. Use limit (1 to 100, default 50) and pass nextCursor back as before to get the next page.

curl

Node

Python

To read one subject, call GET /v1/monitoring/subjects/mon_.... This also works for a subject you have stopped monitoring.

Stop monitoring a subject

Call this when the customer relationship ends. It takes effect at once. Past screenings and alerts stay in Sentinel.

curl

Node

Python

Calling it again for a subject that is already stopped also returns 200. The subject then disappears from the Monitored subjects panel on the AML Screening page. Monitored subjects panel listing subjects enrolled through the API

What each result means

Request fields for POST /v1/verify/aml

Response to POST /v1/verify/aml (202)

The screening result

GET /v1/verify/{id} returns status (queued, processing, completed or failed) and verdict. For a completed AML screening it also returns a screening object.

Monitored subject fields

The list response is { "subjects": [...], "nextCursor": 1760600000000 }. nextCursor is null on the last page.

Errors specific to these calls

Common questions

How many credits does a screening cost?

One credit on plans billed in Kenya shillings. On USD plans, 60 credits on Starter (and Trial), 50 on Growth, 40 on Business and 35 on Enterprise. Monitoring re-screenings and alerts are free. Test keys are never charged. See Results and credits.

Can I test monitoring with a test key?

Not fully. A test key returns a completed pass result straight away and never enrols the subject, so monitoringId is always null. Use a live key on a known customer to see real monitoring.

Do the monitoring calls see subjects my team enrolled in Sentinel?

Yes. The API and the AML Screening page share one list of monitored subjects. A subject stopped through the API shows as Stopped on its report in Sentinel.

How often are monitored subjects re-screened?

Daily by default. An Admin can choose Daily, Weekly or Monthly in Settings → Screening rules. nextScreenAt tells you when each subject is next due.

Why is a new subject’s hits list empty?

The baseline is set when the enrolment screening has screened every list. Until then hits is empty and lastScreenedAt is null. If the subject had no hits at all, hits stays empty after that too.

How do I restart monitoring after a DELETE?

Send a new POST /v1/verify/aml with monitor: true. It is charged as a normal screening and sets a new baseline.