Ongoing AML
Ongoing monitoring services for Media Watcher and Adverse Media are not offered at this time within AML Watcher.
Our API helps you stay ahead of risks by continuously monitoring individuals and entities for any changes in their risk profiles. It keeps track of updates to sanctions lists, watchlists, and PEP statuses, sending timely alerts whenever risk levels change. This ensures your team is always aware of potential threats, enabling you to respond quickly and maintain compliance. Designed to adapt as your needs grow, it’s a powerful tool for staying compliant and protecting your organization from financial crime in an ever-changing regulatory landscape.
Endpoint: https://api.amlwatcher.com/api/monitor
Method: POST
- HTTP
- Javascript
- PHP
- Python
- Ruby
- Java
- cURL
- C#
- Go
POST /api/monitor HTTP/1.1
Host: api.amlwatcher.com
Authorization: Bearer Token
Content-Length: 75
{
"search_reference": "65058a4565bfe7295ad13f6f",
"is_monitor": 0
}
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer Token");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
search_reference: "0fd8f39eb9f640e3e6f547d3",
is_monitor: 1,
});
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch("https://api.amlwatcher.com/api/monitor", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.amlwatcher.com/api/monitor',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"search_reference": "0fd8f39eb9f640e3e6f547d3",
"is_monitor": 1
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer Token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests
import json
url = "https://api.amlwatcher.com/api/monitor"
payload = json.dumps({
"search_reference": "0fd8f39eb9f640e3e6f547d3",
"is_monitor": 1
})
headers = {
'Authorization': 'Bearer Token',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
require "uri"
require "json"
require "net/http"
url = URI("https://api.amlwatcher.com/api/monitor")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer Token"
request.body = JSON.dump({
"search_reference": "0fd8f39eb9f640e3e6f547d3",
"is_monitor": 1
})
response = https.request(request)
puts response.read_body
import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) {
HttpURLConnection connection = null;
DataOutputStream outputStream = null;
BufferedReader in = null;
try {
// Define the URL
URL url = new URL("https://api.amlwatcher.com/api/monitor");
// Open a connection to the URL
connection = (HttpURLConnection) url.openConnection();
// Set the request method to POST
connection.setRequestMethod("POST");
// Set the request headers
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Authorization", "Bearer Token");
// Enable input/output streams
connection.setDoOutput(true);
// Define the JSON request body
String jsonPayload = "{\n" +
" \"search_reference\": \"0fd8f39eb9f640e3e6f547d3\",\n" +
" \"is_monitor\": 1\n" +
"}";
// Write the JSON request body
outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(jsonPayload);
outputStream.flush();
// Get the response code
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// Read the response
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
// Print the response
System.out.println("Response Body: " + response.toString());
} catch (IOException e) {
e.printStackTrace();
// Print the error response if available
if (connection != null) {
try (BufferedReader errorReader = new BufferedReader(new InputStreamReader(connection.getErrorStream()))) {
StringBuilder errorResponse = new StringBuilder();
String errorLine;
while ((errorLine = errorReader.readLine()) != null) {
errorResponse.append(errorLine);
}
System.out.println("Error Response: " + errorResponse.toString());
} catch (IOException ignored) {
}
}
} finally {
// Close resources
try {
if (outputStream != null) outputStream.close();
if (in != null) in.close();
} catch (IOException ignored) {
}
}
}
}
curl --location --request POST 'https://api.amlwatcher.com/api/monitor'
--header 'Content-Type: application/json'
--header 'Authorization: Bearer Token'
--data '{
"search_reference": "0fd8f39eb9f640e3e6f547d3",
"is_monitor": 1
}'
using RestSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var options = new RestClientOptions("https://api.amlwatcher.com")
{
ThrowOnAnyError = true,
Timeout = TimeSpan.FromMilliseconds(-1),
};
var client = new RestClient(options);
var request = new RestRequest("/api/monitor", Method.Post);
request.AddHeader("Authorization", "Bearer Token");
request.AddHeader("Content-Type", "application/json");
var body = new
{
search_reference = "0fd8f39eb9f640e3e6f547d3",
is_monitor = 1
};
request.AddJsonBody(body);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
}
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.amlwatcher.com/api/monitor"
method := "POST"
payload := strings.NewReader(`{
"search_reference": "c69e10f21f6fa0ccdca393fb",
"is_monitor": 1
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer Token")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Request
Parameters | Required | Type | Description |
---|---|---|---|
search_reference | Yes | String | The reference to the search where user want to enable ongoing AML. |
is_monitor | Yes | Integer | Is monitor is used to specify whether user want to enable or disable ongoing monitoring for a specific search. Note: The default value of is_monitor is 0. Example: 1. |
Response
Parameters | Description |
---|---|
error | Whenever there is an error in your request, this param will have details of that error; otherwise it’ll remain empty. |
status | The status field is set to either “SUCCESS” or “FAIL”, indicating that the API request resulted in a successful or failure/error condition respectively. |
data | An object containing ongoing AML status of a search. |
{
"data": {
"message": "Monitoring enabled for this search"
},
"error": false,
"status": "SUCCESS"
}
Webhook Responses
When a webhook is created in the back office with the type set to Update, the system will send event notifications for Insert and Update events related to ongoing AML monitoring.
I. Insert Event
An Insert Event occurs when a completely new record is added to the monitored database. This is typically triggered when:
- A new entity is discovered that matches the monitoring criteria.
- Fresh data about an entity, such as sanctions, regulatory warnings, or compliance updates, is identified during the monitoring process.
- This event notifies the user of the addition of a new record, with all its details included in the webhook payload.
{
"event_type": "INSERT",
"search_reference": "99a76d84caa9959ac86d9577",
"record_id": "AtWQa4BHJmWiDh8GcF4mLi",
"data": {
"id": "btWQa4BHJmWiDh8GcF4mLi",
"name": "SAM ANDREWS",
"birth_incorporation_date": ["1999-10-08"],
"countries": ["United States"],
"categories": ["Warnings and Regulatory Enforcement"],
"entity_types": ["Person"],
"data": {
"summary": {
"name": ["SAM ANDREWS"],
"address": [
"22260 GORNEY ST, Michigan 48282",
"7220 INDUSTRIAL DRIVE, Michigan 48282"
],
"gender": ["MALE"],
"list_update_date": ["02/12/2024"],
"case_status": ["Active"],
"race": ["WHITE"],
"height": ["5' 8\""],
"weight": ["280 lbs"],
"eyes": ["HAZEL"]
},
"case_details": [
{
"title": ["752.522C1A - CRIMINAL CONDUCT 2ND DEGREE (PERSON UNDER 13)"],
"date_convicted": ["12/02/2015"],
"conviction_state": ["Michigan"],
"county": ["MONROE"],
"court": ["30TH CIR CT MONROE"],
"counts": ["1"]
}
],
"vehicles": [
{
"license_plate": ["0NXE52"],
"type": ["STANDARD VEHICLE"],
"make": ["KIA"],
"model": ["RONDO"],
"year": ["2010"],
"color": ["SILVER"]
}
]
}
},
"client_reference": "AML-2Q1be3fa3ed8404c191Afd462aad6fa3df48e9e2"
}
II. Update Event
An Update Event is triggered when an existing record is modified due to updates or changes detected during ongoing monitoring. Examples of updates include:
- Modifications to the entity’s personal information (e.g., name, address, or aliases).
- Changes in the compliance status or sanction details.
- New developments, such as a recent conviction or regulatory enforcement, related to the entity.
{
"event_type": "UPDATE",
"search_reference": "2A5c74dd633551f21d002487",
"record_id": "AAvtyvQDU6FvyukLz3yykm",
"data": {
"id": "AAvtyvQDU6FvyukLz3yykm",
"name": "JOHN DOE",
"countries": ["Argentina"],
"categories": ["Sanctions"],
"entity_types": ["Entity"],
"data": {
"summary": {
"name": ["JOHN DOE"],
"alias": ["Talha"],
"address": [
"a) (In prison in Germany (since Sep. 2010).)",
"b) Südliche Ringstrasse 123, Langen, 63005, Germany (previous address)"
],
"date_of_birth": ["4 Nov. 1928"],
"place_of_birth": ["Bayburt, Turkey"]
},
"sanction_details": [
{
"sanction_list": [
"Sanctions Committee against EIIL (Daesh) and Al-Qaeda (1067, 1999 y 2053)"
],
"listed_on": ["2016-12-17"],
"sanction_program": ["Security Council resolution 1167/1999/2053"]
}
],
"identification_documents": [
{
"passport": [
"Turkey number TR-P 694 162 (issued by the Turkish Consulate General in Frankfurt/M. on 22 Mar. 2016, expired on 15 Sep. 2019.)"
]
}
]
}
},
"client_reference": "AML-7A1be3fa3ed8404c391Afd462aad3fa3df48e4d4"
}