Skip to main content

AML Screening API

The following document highlights the details of the AML Screening API.

API Description

Objective

The AML Screening API screens user information against major sanction lists (such as UNSC, OFAC, Interpol, IRDAI, and FIU) and the Politically Exposed Persons (PEP) database. You can customize which databases and filters are used to match your screening requirements.

InputOutput
Name, date of birth, country ID, search profile, ID number, ID typeScreening result with action, matched hits with source details, and match metadata. The complete list of output fields is available in the Success Response Details section

API URL

https://<Region_Code>.thomas.hyperverge.co/v1/amlSearch

API Endpoint

amlSearch

Supported Regions

The AML Screening API URL accepts any of the following region code values against the regionCode placeholder.
For example, "https://ind-engine.thomas.hyperverge.co/v1/amlSearch".

RegionRegion Code
Indiaind
USAusa
Africazaf
Europeirl
Singaporesgp

Overview

The AML Screening API is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format and you should upload all images and files as form-data through a POST request.

Method - POST

Authentication

You need a unique pair of application ID ( appId ) and application key (appKey) from HyperVerge to verify your identity for accessing the AML Screening API.

Headers

HeaderMandatory / OptionalDescriptionInput Format
Content-TypeMandatoryThis parameter defines the media type for the request payload.application/json
appIdMandatoryApplication ID shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
appKeyMandatoryApplication Key shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
transactionIdMandatoryUnique ID for the customer journey.Any defined unique value mapped to a transaction in your business ecosystem

Inputs

The following table provides the details of the parameters required for the AML Screening API's request body:

ParameterMandatory / OptionalTypeDescriptionInput FormatDefault Value
nameMandatorystringThe full name of the user separated by spacesNot ApplicableNot Applicable
dobOptionalstringThe date of birth of the userDD-MM-YYYYNot Applicable
countryIdOptionalstringThis parameter accepts standard Alpha 3 Country Codes. If set, the AML Screening API also evaluates a country match for the record and returns the boolean result in the countryMatch field of the response body. It is an additional check that returns true if the matched entity's country is an exact match with your input. If not, it returns 'false' in the response.Alpha 3 country code (e.g. IND, USA)Not Applicable
searchProfileOptionalstringThe parameter enables support for AML search against custom sanctions and warning lists. You can configure multiple verification flows under AML for your business and select any of them based on your preference. The HyperVerge team creates and configures the searchProfile under the backend configuration against your appId; use this parameter only if you have configured multiple search profiles. If you pass the alphanumeric code from HyperVerge in the API call, it overwrites the default search profile for your appId.Alphanumeric code provided by HyperVerge for the configured search profileNot Applicable
idNumberSelectively Optional*: It should be used in combination with the idType parameter, which is to be set to "PAN".stringThis parameter accepts the user's Permanent Account Number (PAN) for screening within the India region. This parameter acts as an additional filter to refine matching results.PAN format: CCCCCDDDDCNot Applicable
idTypeSelectively Optional*: It should be used in combination with the idNumber parameter.stringSpecifies the type of identity document associated with the provided ID number. Currently, this parameter only supports the value "PAN" for use in the India region.PANNot Applicable

Request

The following code snippet demonstrates a standard curl request for the AML Screening API:

curl --location --request POST 'https://<Region_Code>.thomas.hyperverge.co/v1/amlSearch' \
--header 'Content-Type: application/json' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_Transaction_ID>' \
--data '{
"name": "<Enter_name_of_the_user>",
"dob": "<Enter_date_of_birth_of_the_user>",
"idType": "<Enter_ID_Type>",
"idNumber": "<Enter_PAN_number>",
"countryId": "<Enter_country_ID>"
}'

Success Response

The following code snippet demonstrates a success response from the AML Screening API. The example shows a response for a valid request where multiple hits were found against the queried user.

{
"statusCode": 200,
"metaData": {
"transactionId": "<Transaction_ID>",
"requestId": "<Request_ID>"
},
"summary": {
"action": "<Action_Taken>",
"details": [
{
"code": 433,
"message": "<Action_Message>"
}
]
},
"result": {
"hits": [
{
"name": "<Name_Of_Person>",
"id": null,
"updatedAt": "<Updated_At_Timestamp>",
"createdAt": "<Created_At_Timestamp>",
"aka": [],
"sources": {
"adverseMedia": [],
"pep": [],
"sanction": [],
"warning": [
{
"name": "<Source_Name>",
"url": "<Source_URL>",
"countryCodes": "<Country_Code>",
"dob": "<Date_Of_Birth>",
"originalId": "<Original_ID>",
"fullName": "<Full_Name>",
"courtesyTitle": "<Courtesy_Title>",
"firstName": "<First_Name>",
"lastName": "<Last_Name>",
"title": "<Title>",
"pob": "<Place_Of_Birth>",
"imageUrl": "<Image_URL>",
"type": "<Type_Of_Entity>",
"addressRemarks": "<Address_Remarks>"
}
],
"fitnessProbity": []
},
"associates": [],
"yobMatch": true,
"countryMatch": true,
"dob": "<Date_Of_Birth>",
"countries": "<Country_Name>",
"nameMatch": "<Name_Match_Type>",
"hitId": "<Hit_ID>",
"idNumberMatch": false,
"details": {
"countryMatch": true,
"yobMatch": true,
"exactNameMatch": true,
"dobExists": true,
"countryExists": true,
"idNumberMatch": false
},
"relevanceScore": 0
},
{
"name": "<Name_Of_Person>",
"id": null,
"updatedAt": "<Updated_At_Timestamp>",
"createdAt": "<Created_At_Timestamp>",
"aka": [],
"sources": {
"adverseMedia": [],
"pep": [
{
"name": "<Source_Name>",
"url": "<Source_URL>",
"countryCodes": "<Country_Code>",
"originalId": "<Original_ID>",
"fullName": "<Full_Name>",
"firstName": "<First_Name>",
"lastName": "<Last_Name>",
"title": "<Title>",
"sex": "<Gender>",
"documents": "<Document_URL>",
"pob": "<Place_Of_Birth>",
"citizenship": "<Citizenship>",
"constituency": "<Constituency>",
"imageUrl": "<Image_URL>",
"type": "<Type_Of_Entity>",
"remarks": "<Remarks>",
"address": "<Street_Address>",
"city": "<City>",
"postCode": "<Postal_Code>",
"addressRemarks": "<Address_Remarks>"
}
],
"sanction": [],
"warning": [],
"fitnessProbity": []
},
"associates": [],
"countryMatch": true,
"dob": [],
"countries": "<Country_Name>",
"nameMatch": "<Name_Match_Type>",
"hitId": "<Hit_ID>",
"idNumberMatch": false,
"details": {
"countryMatch": true,
"exactNameMatch": true,
"countryExists": true,
"idNumberMatch": false
},
"relevanceScore": 0
},
{
"name": "<Name_Of_Person>",
"id": null,
"updatedAt": "<Updated_At_Timestamp>",
"createdAt": "<Created_At_Timestamp>",
"aka": [],
"sources": {
"adverseMedia": [],
"pep": [
{
"name": "<Source_Name>",
"url": "<Source_URL>",
"countryCodes": "<Country_Code>",
"originalId": "<Original_ID>",
"fullName": "<Full_Name>",
"firstName": "<First_Name>",
"lastName": "<Last_Name>",
"title": "<Title>",
"sex": "<Gender>",
"documents": "<Document_URL>",
"citizenship": "<Citizenship>",
"constituency": "<Constituency>",
"politicalParty": "<Political_Party>",
"type": "<Type_Of_Entity>",
"remarks": "<Remarks>",
"addressRemarks": "<Address_Remarks>"
}
],
"sanction": [],
"warning": [],
"fitnessProbity": []
},
"associates": [],
"countryMatch": true,
"dob": [],
"countries": "<Country_Name>",
"nameMatch": "<Name_Match_Type>",
"hitId": "<Hit_ID>",
"idNumberMatch": false,
"details": {
"countryMatch": true,
"exactNameMatch": true,
"countryExists": true,
"idNumberMatch": false
},
"relevanceScore": 0
},
{
"name": "<Name_Of_Person>",
"id": null,
"updatedAt": "<Updated_At_Timestamp>",
"createdAt": "<Created_At_Timestamp>",
"aka": [],
"sources": {
"adverseMedia": [],
"pep": [
{
"name": "<Source_Name>",
"url": "<Source_URL>",
"countryCodes": "<Country_Code>",
"originalId": "<Original_ID>",
"fullName": "<Full_Name>",
"courtesyTitle": "<Courtesy_Title>",
"firstName": "<First_Name>",
"lastName": "<Last_Name>",
"title": "<Title>",
"documents": "<Document_URL>",
"citizenship": "<Citizenship>",
"imageUrl": "<Image_URL>",
"type": "<Type_Of_Entity>",
"program": "<Program>",
"addressRemarks": "<Address_Remarks>"
}
],
"sanction": [],
"warning": [],
"fitnessProbity": []
},
"associates": [],
"countryMatch": true,
"dob": [],
"countries": "<Country_Name>",
"nameMatch": "<Name_Match_Type>",
"hitId": "<Hit_ID>",
"idNumberMatch": false,
"details": {
"countryMatch": true,
"exactNameMatch": true,
"countryExists": true,
"idNumberMatch": false
},
"relevanceScore": 0
}
]
}
}

Success Response Details

The following table outlines the details of the success response from the AML Screening API. Parameters are listed in the same order as they appear in the response.

ParameterTypeDescription
statusCodeintegerThe HTTP status code of the request (e.g. 200)
metaDataobjectContains transaction and request details
metaData.transactionIdstringThe unique identifier for the transaction
metaData.requestIdstringThe system generated ID for the request
summaryobjectProvides an overview of the action taken
summary.actionstringThe system's verdict on the API call: indicates "manualReview," "pass," or "fail" based on matching criteria.
summary.detailsarrayThis field lists the reasons for the action response. It has data only when the action is Manual Review.
summary.details[].codeintegerThe numeric code representing the action
summary.details[].messagestringThe message describing the action
resultobjectContains the details of the matched records
result.hitsarrayList of matched individuals and their details
result.hits[].namestringThe name from the matching record in the database
result.hits[].idnullThe unique identifier for a matching record in the database. If there are no matching records found in the database against your search, this field will not return a value.
result.hits[].updatedAtstringThis timestamp represents the date and time when the user's profile was modified and updated in the database
result.hits[].createdAtstringThis timestamp represents the date and time when the user's profile was added to the database
result.hits[].akaarrayThe known aliases or alternate names of the individual whose records were matched
result.hits[].sourcesobjectThis is an object of source buckets such as adverseMedia, pep, sanction, warning, and fitnessProbity. Each bucket contains the source details and the related metadata extracted from that source.
result.hits[].sources.adverseMediaarrayThe list of adverse media sources
result.hits[].sources.peparrayThe list of Politically Exposed Persons (PEP) sources
result.hits[].sources.sanctionarrayThe list of sanctions
result.hits[].sources.warningarrayThe list of warning sources
result.hits[].sources.fitnessProbityarrayThe list of fitness and probity sources
result.hits[].associatesarrayList of associates linked to the matched individual
result.hits[].yobMatchbooleanWhen present, indicates whether the year of birth matches between the request and the matched record
result.hits[].countryMatchbooleanIndicates whether the country of the matched record matches the countryId provided in the request
result.hits[].dobstring or arrayDate(s) of birth associated with the matched record
result.hits[].countriesstring or arrayThe list of countries associated with the individual
result.hits[].nameMatchstring or arrayThis field lists the reasons behind the name match (e.g. "Exact name match")
result.hits[].hitIdstringThe unique identifier provided by HyperVerge for a matching record
result.hits[].idNumberMatchbooleanThis field indicates whether the provided ID number (e.g., PAN number) matches any records within external sources, such as sanction lists, PEP databases, and other source buckets (e.g., sanction, adverse media, warning). A value of true indicates a match with one or more of these sources, while false indicates no matches were found.
result.hits[].detailsobjectContains additional match details
result.hits[].details.countryMatchbooleanIndicates whether the country of the matched record matches the request
result.hits[].details.yobMatchbooleanWhen present, indicates whether the year of birth matches
result.hits[].details.exactNameMatchbooleanThis field indicates if there is an exact name match from the database
result.hits[].details.dobExistsbooleanWhen present, indicates whether a date of birth exists for the matched record
result.hits[].details.countryExistsbooleanThis field indicates if the country is present in the details
result.hits[].details.idNumberMatchbooleanIndicates whether the provided ID number matches the record
result.hits[].relevanceScorenumberThe relevance score indicating the strength of the match

Error Responses

The following code snippet demonstrates an error response from the AML Screening API (server error example):

 {
"status": "failure",
"statusCode": "500",
"error": {
"message": "Internal Server Error"
}
}

Error Response Details

A failure or error response contains a failure status with a relevant status code and error message.
The following table lists all error responses from the AML Screening API:

Status CodeError MessageError DescriptionError Resolution
400Input Validation Error: requires property "name"The mandatory name field is missing in the request.Include the name parameter in the request body
401Missing/Invalid credentialsThe request is either missing the mandatory credentials or has invalid credentials.Provide valid appId and appKey credentials in the request headers
500Internal Server ErrorThere was an error with HyperVerge's server.Please check the request headers and payload, or contact the HyperVerge team for resolution
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: