AML Screening API - Detailed Documentation
The AML Screening API provides functionality for screening individuals against sanctions, politically exposed persons (PEP), and other risk lists.API Playground:
- /aml/checkIndividual
Endpoints Overview
- Check Individual: Screen an individual against AML datasets (PEP, sanctions, and related lists).
- Ongoing Monitoring:
- Register Individual
- Register Entity
- Remove Search Profile
Authentication
To access the Address Verification API, authentication is required. A Bearer Token must be included in every request.- Tokens are valid for 60 minutes and must be refreshed after expiration.
- Refer to the Authentication for detailed steps on obtaining a token.
- Include the token in the
Authorizationheader as follows:
API Base URL
Production:
Sandbox:
1. Check Individual
Endpoint
POST/aml/checkIndividual
Description
Checks an individual against AML datasets (e.g. PEP and sanctions).You supply a name, optional date of birth, and search constraints (datasets, countries, threshold, matching mode) and receive a detailed profile for the best match, when found.
Required Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer yourAccessToken |
Request Body Parameters
Request Body Parameters
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The full name of the person you are searching for. For best results use the format "lastnames, firstnames middlenames" (e.g. "Johnson, Boris"). Alternatively you can use "firstnames middlenames lastnames" if you do not know the precise last name. |
dateOfBirth | string | No | Date of birth in YYYY-MM-DD or YYYY format. Must be after 1900 and not in the future. Example: "1964-06-19". |
countries | string | Yes | Comma-separated list of two-letter ISO-3166 country codes affecting both address and nationality. Example: "NL,GB". |
datasets | string | No | Comma-separated list specifying which datasets will be searched. See Datasets below. Default: "PEP,SAN". |
threshold | integer | No | Match score threshold between 75 and 100. Only profiles with a score equal or above this value are returned. Default is 85. Example: 90. |
matching | string | No | Name-matching algorithm. Either "fuzzy" (recommended, default) or "strict". Fuzzy applies extensive fuzzy matching techniques to find likely matches; strict is more conservative and may miss matches if the exact name is not known. |
Datasets
Datasets
datasets parameter is a comma-separated string. Available options:PEP– Politically Exposed Persons (all)PEP-CURRENT– Only current PEPsPEP-FORMER– Only former PEPsPEP-LINKED– PEP by association / linked personsSAN– Sanctioned (all)SAN-CURRENT– Only current sanctionsSAN-FORMER– Only former sanctionsINS– Insolvency listsRRE– Reputational Risk ExposureDD– Disqualified DirectorsPOI– Profiles of InterestREL– Regulatory Enforcement ListsGRI– Gambling Risk Intelligence
Example Request
Response Structure
The response returns a JSON object containing a single person profile (the best match) from the AML check.Top-level Structure
Top-level Structure
| Field | Type | Description |
|---|---|---|
data | object | Root object that wraps the person profile. |
data.type | string | Resource type, for individuals this will be "persons". |
data.id | string | System-specific internal identifier of the person profile. |
data.attributes | object | Detailed attributes describing the person, risk exposure, and linked entities. |
data.links | object or null | Optional hypermedia links if found. |
data.attributes (Person Attributes)
data.attributes (Person Attributes)
| Field | Type | Description |
|---|---|---|
firstName | string | Given name of the person. |
middleName | string | Middle name(s) of the person, if available. |
lastName | string | Family name / surname of the person. |
gender | string | Gender of the person, e.g. Male, Female, or Unknown. |
datesOfBirthIso | string array | List of known dates of birth in ISO YYYY-MM-DD format. |
datesOfDeathIso | string array | List of known dates of death in ISO format, if applicable. |
nationalitiesIsoCodes | string array | List of nationality country codes (ISO-3166-1 alpha-2), e.g. ["GB"]. |
isDeceased | boolean | Indicates whether the person is known to be deceased. |
isDeleted | boolean | Indicates whether the profile has been logically deleted in the back systems. |
monitoringId | string | Identifier used by IDCanopy for ongoing monitoring of this profile. |
version | integer | Internal version of the profile in the monitoring system. |
datasets | string array | Datasets that apply to this profile, e.g. ["PEP-LINKED","POI","SAN-CURRENT"]. |
addresses | object array | List of known addresses for the person. See Address object. |
aliases | object array | List of known aliases, name variations, and alternative spellings. See Alias object. |
contactEntries | object array | Contact information such as phone numbers, fax numbers, and email addresses. See Contact entry object. |
notes | object array | Optional free-form notes associated with the profile. |
evidences | object array | List of evidence sources that support the profile (articles, websites, official documents). See Evidence object. |
profileImages | string array | URLs to profile images associated with the person. |
pepEntries | object or array | Structured data describing PEP status; may be empty {} if not applicable. |
pepByAssociationEntries | object array | PEP-by-association information, linking this subject to other PEP profiles via shared evidence. |
poiEntries | object array | Profiles of Interest information, including public roles and positions. See POI entry object. |
sanEntries | object | Sanctions information. See Sanctions object. |
relEntries | object array | Regulatory enforcement list entries (if present). |
rreEntries | object array | Reputational Risk Exposure entries (if present). |
ddEntries | object array | Disqualified Director entries (if present). |
griEntries | object array | Other risk / intelligence entries (if present). |
identifiers | object array | System-specific identifiers and external reference IDs. |
individualLinks | object array | Individuals linked directly to the subject (family members, associates, etc.). See Linked individual object. |
businessLinks | object array | Businesses linked to the subject and their key people. See Linked business object. |
Address object
Address object (data.attributes.addresses[])
Address object (data.attributes.addresses[])
| Field | Type | Description |
|---|---|---|
addressType | string | Type of address, e.g. "Place of birth", "Business", "Residential". |
line1 | string | First line of the address (street address, building name, etc.). |
line2 | string | Second line of the address, if any (area, estate, etc.). |
city | string | City or town. |
postcode | string | Postal / ZIP code, if available. |
county | string | County / region name, if available. |
countyAbbreviation | string | Abbreviation or code for the county / region, if available. |
countryIsoCode | string | Two-letter ISO country code of the address. |
Alias object
Alias object (data.attributes.aliases[])
Alias object (data.attributes.aliases[])
| Field | Type | Description |
|---|---|---|
firstName | string | First or given name used in this alias. |
middleName | string | Middle name(s) used in this alias, if any. |
lastName | string | Surname used in this alias. |
type | string | Type of alias, e.g. "Name Spelling Variation", "Former name", etc. |
Contact entry object
Contact entry object (data.attributes.contactEntries[])
Contact entry object (data.attributes.contactEntries[])
| Field | Type | Description |
|---|---|---|
category | string | Type of contact detail, e.g. "Telephone", "Fax", "Email". |
value | string | Contact value (phone number, fax number, email address). |
Evidence object
Evidence object (data.attributes.evidences[])
Evidence object (data.attributes.evidences[])
| Field | Type | Description |
|---|---|---|
evidenceId | string | System unique identifier for the evidence. |
datasets | string array | Datasets for which this evidence is relevant (e.g. ["SAN-CURRENT"], ["POI","ID"]). |
originalUrl | string | URL of the original source (news article, official site, etc.). |
assetUrl | string | Optional URL to stored copies or documents (e.g. PDFs). |
publicationDateIso | string | Publication date in ISO format, if available. |
captureDateIso | string | Date when the evidence was captured/indexed. |
summary | string | Short description of what the source says about the subject. |
title | string | Title of the article or document, if provided. |
credibility | string | Assessment of source credibility (High, Medium, etc.), where available. |
language | string | Language code of the source content, if known (e.g. eng, rus). |
isCopyrighted | boolean | Indicates whether the source is copyrighted. |
POI entry object
POI entry object (data.attributes.poiEntries[])
POI entry object (data.attributes.poiEntries[])
| Field | Type | Description |
|---|---|---|
category | string | Category of the profile of interest, e.g. "Other Public Figures" or "Senior Government Officials". |
evidenceIds | string array | List of evidence IDs that support this POI classification. |
positions | object array | List of positions associated with this POI entry. |
| Field | Type | Description | |
|---|---|---|---|
countryIsoCode | string | ISO-3166-1 alpha-2 code of the country in which the position is held. | |
dateFromIso | string | Start date of the position in ISO format (may be year-only in some cases). | |
dateToIso | string | End date of the position in ISO format, if applicable. | |
position | string | Title of the role (e.g. `“Former Prime Minister | Her Majesty’s Government”`). |
segment | string | Segment / classification of the position, e.g. "Executive Branch - Head and Members of Government and Deputies". |
Sanctions object
Sanctions object (data.attributes.sanEntries)
Sanctions object (data.attributes.sanEntries)
sanEntries object groups sanctions information by status. For example:current– active sanctionsformer– historical sanctions, if provided by the data source
sanEntries.current (or former) has the following structure:| Field | Type | Description |
|---|---|---|
events | object array | Chronological events related to the sanction (added, updated, removed). |
measures | string array | Measures imposed, such as "Travel Ban", asset freezes, and other restrictions. |
regime | object | Details of the sanction regime (issuing body and regime name). |
sanctionId | string | Specific identifier for the sanction, if present. |
| Field | Type | Description |
|---|---|---|
dateIso | string | Event date in ISO format. |
evidenceIds | string array | Evidence IDs supporting this sanction event. |
type | string | Type of sanction event (e.g. "Added"). |
| Field | Type | Description |
|---|---|---|
body | string | Issuing body or authority (e.g. "Government of the Russian Federation"). |
name | string | Name of the sanctions regime. |
origin | string | Country or organisation of origin. |
GRI entry object
GRI entry object (data.attributes.griEntries[])
GRI entry object (data.attributes.griEntries[])
| Field | Type | Description |
|---|---|---|
title | string | The title of the GRI report, e.g. "EDD Report - Executive Summary Report". |
evidenceId | string | The ID of supporting evidence. |
summary | string | The description of the GRI report, e.g. "In-depth information about the subject based on an Enhanced Due Diligence investigation on source wealth, potential political exposure and reputational risk exposure". |
keywords | string | Keywords associated with the report, e.g. "Source of Wealth". |
REL entry object
REL entry object (data.attributes.relEntries[])
REL entry object (data.attributes.relEntries[])
| Field | Type | Description |
|---|---|---|
category | string | The category of the REL entry, e.g. "Law Enforcement". Enums are [Law Enforcement, Financial Regulator] |
subcategory | string | The name of the list, e.g. " Police - Avon and Somerset Police - Wanted & In Court - United Kingdom". |
events | string array | The events associated with the REL entry. |
| Field | Type | Description |
|---|---|---|
type | string | The type of event associated with the list entry (e.g. "Arrest). |
currencyCode | string | For specific event types, there can be associated financial penalties. This field indicates the international currency code, e.g. "USD" |
amount | integer | The amount of the financial penalty, if applicable, e.g. "100000" |
period | string array | Indicates the length of time of the penalty. The properties are [days: integer, months: integer, years: integer] |
dateISO | string | The date of the event in ISO format (e.g. 2020-01-01 for 1st January 2020). |
evidenceIDs | string array | The list of IDs of supporting evidences for the event. |
RRE entry object
RRE entry object (data.attributes.rreEntries[])
RRE entry object (data.attributes.rreEntries[])
| Field | Type | Description |
|---|---|---|
category | string | The category of the RRE entry, e.g. "Law Enforcement". |
subcategory | string | The name of the list, e.g. " Identity Theft". |
events | string array | The events associated with the RRE entry. |
| Field | Type | Description |
|---|---|---|
type | string | The type of event associated with the list entry (e.g. "Court Proceedings in Progress: Remand). |
dateISO | string | The date of the event in ISO format (e.g. 2020-01-01 for 1st January 2020). |
evidenceIDs | string array | The list of IDs of supporting evidences for the event. |
Linked individual object
Linked individual object (data.attributes.individualLinks[] and businessLinks[].individualLinks[])
Linked individual object (data.attributes.individualLinks[] and businessLinks[].individualLinks[])
| Field | Type | Description |
|---|---|---|
firstName | string | First name of the linked individual. |
middleName | string | Middle name(s) of the linked individual, if any. |
lastName | string | Last name of the linked individual. |
datasets | string array | Datasets that apply to the linked individual (e.g. ["PEP-CURRENT"], ["POI"]). |
monitoringId | string | Monitoring identifier of the linked individual in the monitoring system. |
ownershipPercentage | number | Ownership percentage when the link represents ownership (often 0 for purely relational links). |
relationship | string | Description of how this person is related to the subject (e.g. "is the father of", "is a Member of the Board of Directors of ..."). |
id | string | Specific identifier of the linked individual. |
Linked business object
Linked business object (data.attributes.businessLinks[])
Linked business object (data.attributes.businessLinks[])
| Field | Type | Description |
|---|---|---|
name | string | Name of the linked business. |
datasets | string array | Datasets that apply to the business (e.g. ["PEP-LINKED","REL"]). |
monitoringId | string | Monitoring identifier for the business profile in the monitoring system. |
ownershipPercentage | number | Ownership percentage for the link, where applicable. |
relationship | string | Description of how the business is related to the subject (e.g. "Boris Johnson is a former senior official of The Spectator"). |
id | string | Specific identifier for the business profile. |
individualLinks | object array | Individuals that are key for this business (board members, executives, etc.). See Linked individual object. |
Response Codes
| Code | Description |
|---|---|
200 | A JSON object describing the best matching individual profile. |
400 | Bad request due to missing or invalid parameters. |
401 | API key is missing, invalid, or the caller is not authorized. |
500 | An internal server error occurred while processing the request. |
Example Response
Below is a trimmed example response showing the overall structure returned. The real payload can contain many more linked entities, evidences, and positions.2. Ongoing Monitoring
You will be given a “Monitoring_Group_Id” that you will use to register an individual or business profile to. The registered profile will be screened on a regular basis as per the monitoring rules set in the monitoring group configuration,2.1 Register Individual
Endpoint
POST/aml/ongoingMonitoring/registerIndividual
Status
This endpoint will allow you to register an individual profile for ongoing AML monitoring (periodic re-screening). you will need to provide theMonitoring_Group_Id that you received from IDCanopy, along with the individual’s name and date
of birth and country information. The individual will then be screened on a regular basis as per the monitoring rules set in the monitoring group configuration
Required Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer yourAccessToken |
Request Body Parameters
Request Body Parameters
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
Monitoring_Group_Id | string | Yes | The monitoring group ID you received from IDCanopy. |
type | string | Yes | Resource type requested, for individuals this will be "subscriptions". |
name | string | Yes | The full name of the person you are searching for. For best results use the format "lastnames, firstnames middlenames" (e.g. "Johnson, Boris"). Alternatively you can use "firstnames middlenames lastnames" if you do not know the precise last name. |
dateOfBirth | string | No | Date of birth in YYYY-MM-DD or YYYY format. Must be after 1900 and not in the future. Example: "1964-06-19". |
countries | string | Yes | Comma-separated list of two-letter ISO-3166 country codes affecting both address and nationality. Example: "NL,GB". |
gender | string | No | Gender of the person. Example: "male" or "female". |
Example Request
Response Structure
The response returns a JSON object containing the subscription details for the registered individual..Top-level Structure
Top-level Structure
| Field | Type | Description |
|---|---|---|
subscriptionId | string | The subscription ID of the registered individual. |
type | string | Resource type, for individuals this will be "subscriptions". |
attributes | object | Detailed attributes echoing the person’s information provided in the registration request (name, date of birth, gender, countries). |
Example Response
2.2 Register Entity
Endpoint
POST/aml/ongoingMonitoring/registerEntity
Status
This endpoint will allow you to register a legal entity (company, organisation) for ongoing AML monitoring. you will need to provide theMonitoring_Group_Id that you received from IDCanopy, along with the company/organization’s name and country information.
The company/organization will then be screened on a regular basis as per the monitoring rules set in the monitoring group configuration
Required Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer yourAccessToken |
Request Body Parameters
Request Body Parameters
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
Monitoring_Group_Id | string | Yes | The monitoring group ID you received from IDCanopy. |
type | string | Yes | Resource type requested, for companies/organizations this will be "subscriptions". |
name | string | Yes | The full name of the company/organization you are searching for. |
countries | string | Yes | Comma-separated list of two-letter ISO-3166 country codes affecting both address and nationality. Example: "NL,GB". |
Example Request
Response Structure
The response returns a JSON object containing the subscription details for the registered company/organization.Top-level Structure
Top-level Structure
| Field | Type | Description |
|---|---|---|
subscriptionId | string | The subscription ID of the registered company/organization. |
type | string | Resource type, for companies/organizations this will be "subscriptions". |
attributes | object | Detailed attributes echoing the company/organization’s information provided in the registration request (name, countries). |
Example Response
2.3 Remove Search Profile
Endpoint
POST/aml/ongoingMonitoring/removeSearchProfile
Status
This endpoint will allow you to remove an existing monitoring profile from ongoing AML monitoring for either an individual or a company/organization. To delete a monitoring profile, you will need to provide theMonitoring_Group_Id that you received from IDCanopy, along with the subscriptionId of the profile you want to remove.
Required Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer yourAccessToken |
Request Body Parameters
Request Body Parameters
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
Monitoring_Group_Id | string | Yes | The monitoring group ID you received from IDCanopy. |
subscriptionId | string | Yes | The subscription ID of the monitoring profile you want to remove. |
entityType | string | Yes | Resource type requested, for companies/organizations this will be "Business", for individuals this will be "Person". |
Example Request
2.4 Query Monitoring Results
Endpoint
GET/aml/ongoingMonitoring/getMonitoringResults/{Monitoring_Group_Id}/person/{subscriptionId} for individuals
orGET
/aml/ongoingMonitoring/getMonitoringResults/{Monitoring_Group_Id}/entity/{subscriptionId} for companies/organizations
Status
You can query the monitoring results via the endpoints above for either an individual or a company/organization that you have registered for ongoing monitoring.Required Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer yourAccessToken |
Response Structure
The response returns a JSON object containing the monitoring results for the specified subscription ID, including any matches found during the ongoing monitoring process.Top-level Structure
Top-level Structure
| Field | Type | Description |
|---|---|---|
data | object | Root object that wraps the alert profile. |
data.type | string | The alert type, e.g. "reviews", "alerts". |
data.id | string | System-specific internal identifier of the monitoring incident or alert. |
data.attributes | object | Detailed attributes describing the alert. |
links | object or null | Optional hypermedia links if found. |
data.attributes (Alert Attributes)
data.attributes (Alert Attributes)
| Field | Type | Description |
|---|---|---|
currentStatus | string | Current status of the match. |
version | integer | The version number can be used to detect when a profile has changed. |
personID | string | The profile Id can be used to retrieve the full profile of the person |
score | integer | Confidence score of the profile match, ranging from 50 to 100. |
match | string | The name on the profile that has been matched in the search, e.g.: Jane Doe. |
name | string | The primary name of the person in the profile. |
countries | string array | List of countries from the addresses and nationalities of the profile, e.g. ["GB"]. |
datesOfBirth | string array | List of dates of birth in either YYYY-MM-DD or YYYY ISO format. E.g. [ "1994", "1994-08-22" ] |
gender | string | Indicates the gender of the person in the profileif known, e.g. "Male", "Female". |
profileImage | string | Main profile image URL for the person. |
datasets | string array | Datasets that apply to this profile, e.g. ["PEP-LINKED","POI","SAN-CURRENT"] refer to here. |
pepTier | string | The PEP tier of the person in the profile, e.g. "PEP Tier 1", "PEP Tier 2". |
currentStatus
currentStatus
currentStatus field indicates the current status of the match found during ongoing monitoring. Possible values include:open– indicates that the alert requires reviewtrue-positive– Indicates that the alert is closed and that the profile was matched correctlyfalse-positive– Indicates that the alert is closed and that the profile was matched incorrectlydiscarded– Indicates that the profile in the alert no longer matches the subscription due to the changes in the profile, subscription, or the follow list.