Overview
iDenfy introduced AML Monitoring v3 with an upgraded screening engine. Existing v2 integrations continue to work — the API automatically handles backward compatibility and your webhooks will look exactly as they always have. This guide covers:- What changed between v2 and v3
- Request body field changes with examples
- The complete webhook payload reference
- The recommended migration path and a complete migration checklist
What Changed
Status Field Names
v3 introduced a newstatus field with updated values. The existing alertStatus field continues to return v2 values for all integrations.
Both fields are present in all webhook payloads. If you are on v2, use
alertStatus and ignore status.
Request Body Fields
When migrating to v3 endpoints, the request body structure changes. v3 uses a nested structure — a top-level object wrapping anamlCheck object with separate input (who to screen) and filter (what to screen for) sub-objects.
Person monitoring:
Company monitoring:
Example v3 request body (person):
Datasets
v3 lets you control which screening databases to check via theamlCheck.filter.datasets array. This replaces the implicit fixed set from v2, where adverse media was a separate boolean toggle.
datasets is required. Omitting it will result in a validation error. Specify at least one dataset value from the table above.False Positive Handling
v2 and v3 handle false positives differently — there is no direct 1:1 equivalent endpoint.- v2 (
POST /api/v2/add-whitelist) marked an entire monitoring subject as whitelisted using theirmonitoringId. - v3 (
DELETE /aml/monitorings/{id}/profiles/{profileId}/) removes a specific matched profile from the results, leaving the monitoring record and any other matches intact.
profileId is returned inside each match entry in the monitoring response and webhook payload. Store or pass through this ID in your integration to support false positive dismissal.
Webhook Reference
Both v2 and v3 send the same webhook payload structure. v3 adds thestatus field and an optional amlCheck object — both can be safely ignored if you have not yet migrated.
Headers
Payload Fields
Top-level (v2 compatibility fields):amlCheck — v3 screening results (use this on v3):
The amlCheck object contains the full World-Check screening output broken down by dataset, with per-finding profileId values used for false positive dismissal. Refer to the API Reference for the complete schema.
results[] — v2 compatibility, per-category check:
data[] — matched profile:
Migrating to v3
AML Single Check Flow
UsePOST /aml/checks/ to screen a subject once without ongoing monitoring.
1
Create an AML Check
Submit a person or company for screening. The response includes a check ID and any matched profiles.The response body includes a
Create AML Check
POST /aml/checks/ — Screen a subject against sanctions, PEPs, and adverse media.profiles array. Each entry contains a profileId you can use in the next step.2
Retrieve a Matched Profile
Use the check ID and profile ID from the previous response to fetch the complete profile record — all sanctions entries, PEP tiers, and adverse media sources, regardless of the filters applied during the check.
Retrieve AML Profile
GET /aml/checks/{id}/profiles/{profileId}/ — Fetch full profile detail for a specific match.AML Monitoring Flow
Monitoring is continuous screening — the system re-screens the entity daily and sends webhooks whenever status changes.1
Create a Monitoring Record
Register a person or company for ongoing daily screening. The response returns a Use
monitoringId used in all subsequent calls.Create AML Monitoring
POST /aml/monitorings/ — Start ongoing screening with automatic status change alerts.PATCH /aml/monitorings/{id}/ to extend the monitoring period or attach organizational tags.2
Receive Webhook Alerts
The system fires an
AML_MONITORING webhook each time the screening status changes. See the Webhook Reference above for the full payload and delivery details.3
Retrieve Monitoring Status
Poll the monitoring record at any time to get the current status and latest results — useful for reconciling state if a webhook was missed.
Retrieve Monitoring
GET /aml/monitorings/{id}/ — Fetch a single monitoring record.List All Monitored Entities
GET /aml/monitorings/ — List all monitoring records.4
Manage the Monitoring Lifecycle
Pause, resume, or remove monitoring records as your compliance requirements change.To dismiss a specific false positive match without stopping monitoring, use
Start / Stop Monitoring
POST /aml/monitorings/{id}/stop/ or /start/ — Pause or resume without deleting.Delete Monitoring
DELETE /aml/monitorings/{id}/ — Permanently remove a monitoring record.DELETE /aml/monitorings/{id}/profiles/{profileId}/. See False Positive Handling above for details.5
Generate a Compliance PDF (Optional)
Export the full screening history for a monitoring record as a PDF for audit trails and compliance records.
Generate Monitoring PDF
POST /aml/monitorings/{id}/pdf/ — Download a full-history PDF report.Complete Migration Checklist
Use this as a final review before cutting over to v3. API endpoints:
Request body — persons:
- Combine
name+surname→amlCheck.input.fullName - Rename
type: "PERSON"→userType: "PERSON" - Move
nationality→amlCheck.input.nationality - Move
dateOfBirth→amlCheck.input.dateOfBirth - Remove
monitorAdverseMedia— adverse media is not supported in v3 - Rename
autoExpirationExtension→isSubscribed
- Rename
name→amlCheck.input.companyName - Rename
type: "COMPANY"→userType: "COMPANY" - Rename
nationality→amlCheck.input.country
- Read
statusinstead of (or alongside)alertStatus - Update status value comparisons:
ACCEPTED→ACTIVE,DECLINED→STOPPED - Store
profileIdfrom match entries if you support false positive dismissal
Existing monitoring records created via v2 remain accessible. v2 and v3 records coexist in the system — your historical data is not affected by migration.