AML / Global Database Check API

COMPLY WITH AML/CTF REGULATIONS, GLOBAL SANCTIONS, FINANCIAL REGULATIONS, PEP, LAW ENFORCEMENTS, ADVERSE MEDIA LISTS

Description

Automate AML compliance with global database search API. This API covers data from more than 50K globally available sources to prepare real time reports on individuals and businesses which includes financial sanctions and regulations imposed by the global bodies, political links and any adverse media coverage.

TypeURLMin VersionMax Version
POSThttps://api.attestr.com/api/{version}/public/riskx/aml/personv1
TypeURLMin VersionMax Version
POSThttps://api.attestr.com/api/{version}/public/riskx/aml/businessv1

Request Body Parameters

TypeNameDescriptionOptional (default)Min Version

Max

Version

StringtagUnique reference Id for this request to be provided by customer. Max 50 characters.Requiredv1
NumberthresholdThe threshold score for filtering the records. Records with score less than threshold won't show up in results. Min allowed value is 50. Max 100.Requiredv1
StringfirstNameCandidate's first name. Max 100 characters.Requiredv1
StringmiddleNameOptional candidate's middle name. Max 100 characters.Optionalv1
StringlastNameCandidate's last name. Max 100 characters.Requiredv1
StringdobCandidate's date of birth DD-MM-YYYYRequiredv1
NumberdobDeltaA number between 0 and 5 indicating if the result should look at the exact year match or within 0 to 5 years range from the provided date of birth. Default is 5, if not specified.Optionalv1
Array[String]countriesArray of country ISO codes to search for records. Refer to Country ISO Codes section below for the list of allowed values.Requiredv1
StringgenderOptional. Provide value as Male or Female.Optionalv1
BooleanextendedSet to true for detailed / manual review modeOptionalv1
BooleanwebhookBoolean indicating whether webhook should be triggered after request is processed. This is only applicable for detailed manual review mode ie when extended is passed as true. For background check requests, extended should be passed as true.Optionalv1
TypeNameDescriptionOptional (default)Min VersionMax Version
StringtagUnique reference Id for this request to be provided by customer. Max 50 characters.Requiredv1
NumberthresholdThe threshold score for filtering the records. Records with score less than threshold won't show up in results. Min allowed value is 50. Max 100.Requiredv1
StringnameThe entity legal nameRequiredv1
StringcountriesArray of country ISO codes to search for records.Requiredv1
BooleanwebhookBoolean indicating whether webhook should be triggered after request is processed. This applies only for the case when extended flag is set as true ie detailed manual review mode is enabled.Optionalv1
BooleanextendedSet to true for detailed / manual review modeOptionalv1

Request Header Parameters

TypeNameValue / DescriptionOptionalMin VersionMax Version
StringContent-Typeapplication/jsonRequiredv1
StringAuthorizationBasic {authToken}Requiredv1

If you do not have the authentication token, please refer to Register App to generate one.

Sample Request

Person Search
Business Search
Copy

Response

Http Status 200

The API returns an array of matching records for the provided search criteria.

KeyDescriptionTypeMin VersionMax Version
_idUnique search Id generated for every search request made to the platformStringv1
numberUnique human readable number to be used for any reference laterStringv1
messageMessage for the error cases or if there are no records returned for a specific search criteriaStringv1
validBoolean flag indicating if the search was successfulBooleanv1
countTotal number of search records found and returnedNumberv1
recordsArray of records returnedArray[SearchRecord]v1
requestFor searches made with extended mode set as true, an async request order is created for the manual review by Attestr back office team. This is applicable for background verification requests. For real time searches, the value of this will be null.Stringv1
requestNumberAsync request human readable number for later reference. Null for real time search requests.Stringv1

SearchRecord Object

KeyDescriptionTypeMin VersionMax Version
_idUnique Id of the record, should be used for querying the detailed profile. Check Get Profile Detail API below.Stringv1
versionProfile version. For any incremental update to an profile, version is updated. This key therefore returns the associated profile version to be used while querying the details.Stringv1
confidenceSearch confidence score for the record. This will always be more than the input threshold.Numberv1
nameMatchThe name that led to the match. Every profile has a primary name and list of aliases. The search input name can match with either the primary name or one of the aliases.Stringv1
primaryNamePrimary name of the profileStringv1
countriesCountry ISO codes where the specific profile is found to have a footprint ie one of the linked addresses etcArray [String]v1
dobRecordsAvailable only for person search records. Date of birth ISO records. This is an array of date of birth or year of birth records as found in different sources.Array[String]v1
genderAvailable only for person search records. Gender of the personStringv1
photoAvailable only for person search records. Photo URL if available else nullStringv1
tagsList of associated risk tags / flags due to which this profile is listed. Refer to Risk Tags section below for the possible values.Array [String]v1

Sample Response

Sample Person Search Response
Sample Business Search Response
Copy

Risk Tags

Tag / CodeDescription
POLITICAL_DIRECTEntities or individual with direct political exposure
POLITICAL_LINKEDEntities or individuals with a second or third level of political exposure
SANCTIONSFinancial sanctions imposed by global bodies
REPUTATIONAL_RISKSIndividuals or entities listed under risks that are linked to reputation in nature, mostly covered by global media
PROFILES___OF_INTERESTOther profiles of interest
REGULATIONSEntities or individuals listed by the enforcement agencies globally
INSOLVENCYEntities marked as insolvent i.e. unable to pay debts owed
DISQUALIFIED_DIRECTORFor individuals listed as disqualified directors by the local company registrar bodies
STATE_OWNEDFor entities which are owned / run by the local or federal Government. For individuals it is persons linked to such entities

Get Profile Details API

This API returns the profile details based on the IDs returned in the search API response.

Person Profile Details API

TypeURLMin VersionMax Version
GEThttps://api.attestr.com/api/{version}/public/riskx/aml/person/<profileId>v1

Business Profile Details API

TypeURLMin VersionMax Version
GEThttps://api.attestr.com/api/{version}/public/riskx/aml/business/<profileId>v1

Request Header Parameters

Header NameHeader Value
Content-Typeapplication/json
AuthorizationBasic <auth_token same as used in search API>

Response

Http Status 200

Person Profile Details Response

KeyTypeDescriptionMin VersionMax Version
_idStringUnique profile Id same as passed in the URL parameterv1
versionStringVersion of the profilev1
deletedBooleanBoolean flag indicating if the profile is deletedv1
deletionReasonStringReason if the profile is deleted e.g. duplicate etc.v1
firstNameStringPrimary first namev1
middleNameStringPrimary middle namev1
lastNameStringPrimary last namev1
tagsArray[String]Array of risk tags. Refer to risk tags section above for the list of possible valuesv1
photosArray[String]List of the photo URLsv1
genderStringGender of the person. Possible values are Male, Female, nullv1
dobRecordsArray[String]Array of ISO strings indicating date or year of birthv1
deceasedBooleanBoolean flag indicating if the profile belongs to a deceased individualv1
dodRecordsArray[String]Array of ISO strings indicating date or year of deathv1
nationalitiesArray[String]List of ISO country codesv1
aliasesArray[AliasObject]List of name aliasesv1
linkedAddressesArray[AddressObject]List of linked addressesv1
contactsArray[ContactObject]List of available contact informationv1
uuidRecordsArray[UUIDObject]List of national Idsv1
sanctionsArray[SanctionObject]List of sanctions imposed by different global bodiesv1
regulationsArray[RegulationObject]List of regulationsv1
politicalPositionsArray[PoliticalPositionObject]List of direct political positions held by the individualv1
politicalAssociationsArray[PoliticalAssociationObject]List of the associations with the politically exposed individuals or entitiesv1
reputationalRisksArray[ReputationRiskObject]List of reputational risksv1
profilesOfInterestArray[ProfileOfInterestObject]List of other profiles of interestv1
linkedPersonsArray[LinkedPersonObject]List of linked individualsv1
linkedBusinessesArray[LinkedBusinessObject]List of linked businessesv1
evidencesArray[EvidenceObject]List of supporting evidences for each associated risk tagv1
notesArray[NoteObject]List of notes if available associated to the profilev1

Business Profile Details Response

KeyTypeDescriptionMin VersionMax Version
_idStringUnique profile Id same as passed in the URL parameterv1
versionStringVersion of the profilev1
deletedBooleanBoolean flag indicating if the profile is deletedv1
deletionReasonStringReason if the profile is deleted e.g. duplicate etc.v1
nameStringPrimary name of the businessv1
tagsArray[String]Array of risk tags. Refer to risk tags section above for the list of possible valuesv1
photosArray[String]List of the photo URLsv1
aliasesArray[AliasObject]List of name aliasesv1
linkedAddressesArray[AddressObject]List of linked addressesv1
contactsArray[ContactObject]List of available contact informationv1
uuidRecordsArray[UUIDObject]List of national Idsv1
sanctionsArray[SanctionObject]List of sanctions imposed by different global bodiesv1
regulationsArray[RegulationObject]List of regulationsv1
politicalPositionsArray[PoliticalPositionObject]List of direct political positions held by the individualv1
politicalAssociationsArray[PoliticalAssociationObject]List of the associations with the politically exposed individuals or entitiesv1
reputationalRisksArray[ReputationRiskObject]List of reputational risksv1
profilesOfInterestArray[ProfileOfInterestObject]List of other profiles of interestv1
linkedPersonsArray[LinkedPersonObject]List of linked individualsv1
linkedBusinessesArray[LinkedBusinessObject]List of linked businessesv1
evidencesArray[EvidenceObject]List of supporting evidences for each associated risk tagv1
stateOwnedStateOwnedObjectObject indicating if the business is directly or indirectly controlled by the local or federal administration / Governmentv1
activitiesArray[String]List of business activitiesv1
typesArray[String]Any types associated with the businessv1
notesArray[NoteObject]List of notes if available associated to the profilev1

Alias Object

KeyTypeDescriptionMin VersionMax Version
typeStringType of the alias such as spelling variation etcv1
nameStringAlias name. Available for business profiles only. Null for individual profiles.v1
firstNameStringAlias first name. Available for person profiles only. Null for business profilesv1
lastNameStringAlias last name. Available for person profiles only. Null for business profilesv1
middleNameStringAlias middle name. Available for person profiles only. Null for business profilesv1

Linked Address Object

KeyTypeDescriptionMin VersionMax Version
typeStringAddress type - residential, office etc.v1
LineOneStringLine one of the addressv1
LineTwoStringLine two of the addressv1
cityStringCity namev1
stateStringName of the statev1
stateAbbrevStringAny state abbreviation if availablev1
countryStringCountry ISO code for the addressv1
zipStringZip code of the addressv1

Contact Object

KeyTypeDescriptionMin VersionMax Version
typeStringContact type - phone, email, landline etcv1
valStringCorresponding valuev1

UUID Object

KeyTypeDescriptionMin VersionMax Version
typeStringUUID type - PAN, SSN etcv1
valStringCorresponding valuev1

Sanction Object

KeyTypeDescriptionMin VersionMax Version
sanctionIdStringUnique sanction identifierv1
currentBooleanFlag indicating whether the sanction is currently in-force or expiredv1
measuresStringMeasure imposed as part of sanction such as travel bank, frozen accounts etcv1
issuerStringName of the issuing authorityv1
regimeStringSanction regime / sectionv1
regionStringRegion, country, area where this sanction is applicablev1
typesStringList of types associated to this sanctionv1
eventsArray[SanctionEventObject]List of associated eventsv1

Sanction Event Object

KeyTypeDescriptionMin VersionMax Version
typeStringType of eventv1
dateStringISO date of eventv1
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Regulation Object

KeyTypeDescriptionMin VersionMax Version
categoryStringCategory of the regulationv1
subCategoryStringSubcategory if anyv1
eventsArray[RegulationEventObject]List of associated eventsv1

Regulation Event Object

KeyTypeDescriptionMin VersionMax Version
typeStringType of eventv1
dateStringISO date of eventv1
currencyCodeStringISO currency codev1
amountStringAmount if any associated with this regulation event. For e.g. bail event for a fine of USD 10,000v1
durationRegulationEventDuration ObjectObject containing the number of days, months and years applicable to this regulation eventv1
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Reputation Risk Object

KeyTypeDescriptionMin VersionMax Version
categoryStringCategory of the regulationv1
subCategoryStringSubcategory if anyv1
eventsArray[ReputationRiskEventObject]List of associated eventsv1

Reputation Risk Event Object

KeyTypeDescriptionMin VersionMax Version
typeStringType of eventv1
dateStringISO date of eventv1
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Political Position Object

KeyTypeDescriptionMin VersionMax Version
typeStringType of the positionv1
positionStringName of the position heldv1
categoryStringPosition category if availablev1
countryStringCountry ISO code where the position is heldv1
currentBooleanCurrently held or the past positionv1
fromStringISO date or year of start
toStringISO date or year of end if applicable
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Political Association Object

KeyTypeDescriptionMin VersionMax Version
_idStringProfile ID of the associated political profilev1
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Profile Of Interest Output Model

KeyTypeDescriptionMin VersionMax Version
categoryStringCategory of the positionv1
positionStringName of the position heldv1
electedStringISO date or year of electionv1
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Linked Individual Object

KeyTypeDescriptionMin VersionMax Version
_idStringId of the linked profilev1
firstNameStringFirst name of the linked profilev1
middleNameStringIMiddle name of the linked profilev1
lastNameStringLast name of the linked profilev1
relationshipStringNature of relationshipv1
ownershipPercentageStringPercentage of ownership in the entity if this relationship is in reference to holding promoter position in a companyv1
tagsArray[String]List of associated risk tags with this profilev1

Linked Business Object

KeyTypeDescriptionMin VersionMax Version
_idStringId of the linked profilev1
nameStringName of the linked business profilev1
relationshipStringNature of relationshipv1
ownershipPercentageStringPercentage of ownership in the entity if this relationship is in reference to holding promoter position in a companyv1
tagsArray[String]List of associated risk tags with this profilev1
individualsArray[String]List of other profile Ids linked to this businessv1

Note Object

KeyTypeDescriptionMin VersionMax Version
textStringAssociated text with the notev1

State Owned Object

KeyTypeDescriptionMin VersionMax Version
currentBooleanCurrent or past ownershipv1
levelStringExtent of ownershipv1
evidencesArray[String]List of evidence Ids associated. Refer to EvidenceObject definition below for more details.v1

Evidence Object

KeyTypeDescriptionMin VersionMax Version
_idStringEvidence Idv1
tagsArray[String]List of associated risk tags with this evidencev1
originalURLStringOriginal source URL locationv1
hasCopyrightsBooleanDoes the source have copyrightsv1
titleStringEvidence titlev1
credibilityStringCredibility level of the sourcev1
languageStringLanguage used in the source evidencev1
snippetStringSummary or snippet as summarized from the sourcev1
keywordsArray[String]List of associated keywordsv1
crawledStringDate on which data was crawled by the systemv1
publishedStringDate on which data was published by the sourcev1
attachmentStringURL of the attachmentv1

Sample Response

Person Profile
Business Profile
Copy

Error Response

ParameterTypeDescription
codeNumberUnique error codes for different errors. Always available.
messageStringError message describing the error. Always Available.
detailsStringDetail error message. Available only for certain types of errors.

Error Codes

HTTP StatusError CodeError Message
4004001Malformed data or missing required parameter values
4004005Operation could not be performed due to low credits balance
4014016Invalid client authorization
4034031Unauthorized access
4034035Requested service is not provisioned for your account
4034039Client's IP address is not whitelisted
4034035Requested service is not provisioned for your account
4294291Maximum account rate limit exceeded
4294292Maximum API rate limit exceeded
4294293Maximum account daily limit exceeded
4294294Maximum API daily limit exceeded
5005001Request could not be processed

Querying AML Check Result - For Background Check Product

Get Async Request Outcome API

TypeURLMin VersionMax Version
GEThttps://api.attestr.com/api/{version}/public/async/<asyncId>v1

Request URL Parameters

NameDescriptionMin VersionMax Version
asyncIdReplace <asyncId> in the URL with the _id received in the AML record search API response as described above.v1

Request Header Parameters

TypeNameValue / DescriptionOptionalMin VersionMax Version
StringContent-Typeapplication/jsonRequiredv1
StringAuthorizationBasic {authToken}Requiredv1

Response

Http Status 200

KeyDescriptionTypeMin VersionMax Version
_idRequest Id as queried in the URLStringv1
numberRequest number as generated in the AML search API responseStringv1
requestIdUnique ID used by Attestr for request tracing purposesStringv1
statusStatus of the request. Possible values are - COMPLETED, INITIATED, ERROREDStringv1
inputThe input details used for AML record searchStringv1
outputAML check output object. Details described below. Null if status is errored or initiated.AMLCheckOutputRecordv1
errorError object if the operation ran into errors, null otherwise. Null if status is completed or initiated.Stringv1
createdUnix timestamp when the request was placed.Numberv1
updatedUnix timestamp when the request was last updated. Null if status is initiated.Numberv1
signatureSignature generated using the output and client secret. Used for validating the accuracy of data. Null if status is errored or initiated.Stringv1

AMLCheckOutputRecord

KeyDescriptionTypeMin VersionMax Version
profileMatchList of matched profile IdsArray[String]v1
statusStatus of the report. Possible values are Clear, Alert, MoreInfo, False, NoResultStringv1
descriptionDescription as provided by the back office team describing the match. HTML formatted string.Stringv1
verifiedDate DD-MM-YYYY of verification by the back office teamStringv1
documentsAssociated document media IdsArray[String]v1

Sample Response

JSON
Copy

Webhooks

AML record check supports the following two webhook events.

See Webhooks for more details on how to register webhooks.

  1. async.completed
  2. async.errored

To enable webhooks, the API input parameter webhook must be set as true while initiating the request.

Webhook Event Payload

KeyTypeDescriptionMin VersionMax Version
_idStringID of the async request. This is same as received in the output of Person / Business search API as described above.v1
requestIdStringUnique request ID for internal tracing purposes.v1
statusStringOne of COMPLETED OR ERROREDv1
outputObjectAML record check output object same as output key described in Querying AML Check Result API above.v1
errorObjectError object if the AML checks runs into errors. The structure of this is same as the Error Response object described above.v1
signatureStringgenerated using hmacHexDigest of output object and client secret. Null if status is errored.v1

Sample Webhook Payload

JSON
Copy

Validating the signature

Generate signature on your server side code base and check if it matches the signature returned in the payload. To generate the signature, use the SHA256 algorithm, the client secret and the output value to generate a HMAC Hex Digest as shown in the sample code below.

NodeJS
Java
Copy
Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard