Configuration
The Configuration endpoints allow you to control the global behavior of the TruRisk AI module. These settings dictate which fields are enabled for screening, set the default processing mode, and manage ongoing monitoring alerts.
Configuration changes apply globally to all future screening requests. It is recommended to perform this setup once during the initial integration.
default_mode determines which mode runs whenever a Customer or Compliance Request is submitted without an explicit tru_risk_mode. Setting TruRisk Lite as the default favors throughput and suits organizations screening high volumes of routine onboarding cases. Setting TruRisk Advanced as the default favors verification depth and documentation, and suits organizations whose case mix is weighted toward higher-risk or regulator-facing reviews. Either default can still be overridden on a per-request basis.
Get Configuration
Retrieves the current global settings for the TruRisk module.
Endpoint: https://api.amlwatcher.com/api/tru-risk-configuration
Method: GET
- HTTP
- Javascript
- PHP
- Python
- Ruby
- Java
- cURL
- C#
- Go
GET /api/tru-risk-configuration HTTP/1.1
Host: api.amlwatcher.com
Authorization: Bearer Token
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer Token");
var requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow",
};
fetch("https://api.amlwatcher.com/api/tru-risk-configuration", requestOptions)
.then((response) => response.json())
.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/tru-risk-configuration',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Authorization: Bearer Token'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests
url = "https://api.amlwatcher.com/api/tru-risk-configuration"
headers = {'Authorization': 'Bearer Token'}
response = requests.request("GET", url, headers=headers)
print(response.text)
require "uri"
require "net/http"
url = URI("https://api.amlwatcher.com/api/tru-risk-configuration")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer Token"
response = https.request(request)
puts response.read_body
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
URL url = new URL("https://api.amlwatcher.com/api/tru-risk-configuration");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer Token");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) content.append(inputLine);
in.close();
System.out.println(content.toString());
}
}
curl --location --request GET 'https://api.amlwatcher.com/api/tru-risk-configuration \
--header 'Authorization: Bearer Token'
using RestSharp;
var client = new RestClient("https://api.amlwatcher.com/api/tru-risk-configuration");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer Token");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.amlwatcher.com/api/tru-risk-configuration"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer Token")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
Response Body
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Master switch for the TruRisk module. |
default_mode | String | The default operational mode (TruRisk Lite or TruRisk Advanced). |
tru_risk_process_records | Integer | The limit of records processed per batch. |
lite_inputs | Object | Configuration toggles for mandatory fields when using Lite mode. |
advanced_fields | Object | Configuration toggles for optional high-fidelity fields in Advanced mode. |
ongoing_monitoring_enabled | Boolean | Indicates if automated re-screening is active for the organization. |
ongoing_monitoring_frequency | String | The cadence of re-screening (e.g., Instantly). |
alerts | Object | Contains settings for email_enabled, webhook_enabled, and email_recipients. |
created_at | String | Timestamp of the initial configuration setup. |
updated_at | String | Timestamp of the last configuration change. |
Sample Response
{
"data": {
"configuration": {
"advanced_fields": {
"address": false,
"biometric_search_image": true,
"birth_incorporation_date": true,
"business_registration_number": false,
"identification_number": true,
"imo_number": false,
"industry": false,
"known_alias": false,
"name": true,
"nationality": true,
"occupation": false,
"parent": true,
"sibling": true,
"spouse": false,
"tail_number": false
},
"alerts": {
"email_enabled": true,
"email_recipients": "compliance@example.com, admin@example.com",
"webhook_enabled": true
},
"created_at": "Mon, 16 Feb 2026 10:33:49 GMT",
"default_mode": "TruRisk Advanced",
"enabled": true,
"lite_inputs": {
"biometric_search_image": true,
"birth_incorporation_date": true,
"countries": true,
"name": true
},
"ongoing_monitoring_enabled": true,
"ongoing_monitoring_frequency": "Instantly",
"tru_risk_process_records": 50,
"updated_at": "Mon, 16 Feb 2026 10:33:49 GMT"
}
},
"error": false,
"status": "SUCCESS"
}
lite_inputs and advanced_fields let each organization tailor which identity attributes are required or available for screening, based on the data it actually collects during onboarding. Enabling a field here makes it usable by TruRisk's identity resolution logic—it does not, on its own, make that field mandatory on every request unless the field is marked required.
Update Configuration
Updates the global AI behavior and field requirements.
Endpoint: https://api.amlwatcher.com/api/tru-risk-configuration
Method: POST
- HTTP
- Javascript
- PHP
- Python
- Ruby
- Java
- cURL
- C#
- Go
POST /api/tru-risk-configuration HTTP/1.1
Host: api.amlwatcher.com
Content-Type: application/json
Authorization: Bearer Token
{
"enabled": true,
"default_mode": "TruRisk Advanced",
"tru_risk_process_records": 50,
"lite_inputs": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"country": true
},
"advanced_fields": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"nationality": true,
"identification_number": true,
"parent": true,
"sibling": true,
"occupation": true,
"industry": true,
"spouse": false,
"address": false,
"imo_number": true,
"tail_number": true,
"business_registration_number": true,
"known_alias": true
},
"ongoing_monitoring_enabled": true,
"ongoing_monitoring_frequency": "Monthly",
"alerts": {
"email_enabled": true,
"email_recipients": "compliance@example.com",
"webhook_enabled": true
}
}
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer Token");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
enabled: true,
default_mode: "TruRisk Advanced",
tru_risk_process_records: 50,
lite_inputs: {
name: true,
birth_incorporation_date: true,
biometric_search_image: true,
country: true,
},
advanced_fields: {
name: true,
birth_incorporation_date: true,
biometric_search_image: true,
nationality: true,
identification_number: true,
parent: true,
sibling: true,
occupation: true,
industry: true,
spouse: false,
address: false,
imo_number: true,
tail_number: true,
business_registration_number: true,
known_alias: true,
},
ongoing_monitoring_enabled: true,
ongoing_monitoring_frequency: "Monthly",
alerts: {
email_enabled: true,
email_recipients: "compliance@example.com",
webhook_enabled: true,
},
});
var requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch("https://api.amlwatcher.com/api/tru-risk-configuration", requestOptions)
.then((response) => response.json())
.then((result) => console.log(result));
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.amlwatcher.com/api/tru-risk-configuration',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"enabled": true,
"default_mode": "TruRisk Advanced",
"tru_risk_process_records": 50,
"lite_inputs": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"country": true
},
"advanced_fields": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"nationality": true,
"identification_number": true,
"parent": true,
"sibling": true,
"occupation": true,
"industry": true,
"spouse": false,
"address": false,
"imo_number": true,
"tail_number": true,
"business_registration_number": true,
"known_alias": true
},
"ongoing_monitoring_enabled": true,
"ongoing_monitoring_frequency": "Monthly",
"alerts": {
"email_enabled": true,
"email_recipients": "compliance@example.com",
"webhook_enabled": true
}
}',
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/tru-risk-configuration"
payload = json.dumps({
"enabled": True,
"default_mode": "TruRisk Advanced",
"tru_risk_process_records": 50,
"lite_inputs": {
"name": True,
"birth_incorporation_date": True,
"biometric_search_image": True,
"country": True
},
"advanced_fields": {
"name": True,
"birth_incorporation_date": True,
"biometric_search_image": True,
"nationality": True,
"identification_number": True,
"parent": True,
"sibling": True,
"occupation": True,
"industry": True,
"spouse": False,
"address": False,
"imo_number": True,
"tail_number": True,
"business_registration_number": True,
"known_alias": True
},
"ongoing_monitoring_enabled": True,
"ongoing_monitoring_frequency": "Monthly",
"alerts": {
"email_enabled": True,
"email_recipients": "compliance@example.com",
"webhook_enabled": True
}
})
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/tru-risk-configuration")
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({
"enabled" => true,
"default_mode" => "TruRisk Advanced",
"tru_risk_process_records" => 50,
"lite_inputs" => {
"name" => true,
"birth_incorporation_date" => true,
"biometric_search_image" => true,
"country" => true
},
"advanced_fields" => {
"name" => true,
"birth_incorporation_date" => true,
"biometric_search_image" => true,
"nationality" => true,
"identification_number" => true,
"parent" => true,
"sibling" => true,
"occupation" => true,
"industry" => true,
"spouse" => false,
"address" => false,
"imo_number" => true,
"tail_number" => true,
"business_registration_number" => true,
"known_alias" => true
},
"ongoing_monitoring_enabled" => true,
"ongoing_monitoring_frequency" => "Monthly",
"alerts" => {
"email_enabled" => true,
"email_recipients" => "compliance@example.com",
"webhook_enabled" => true
}
})
response = https.request(request)
puts response.read_body
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) throws Exception {
URL url = new URL("https://api.amlwatcher.com/api/tru-risk-configuration");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Bearer Token");
conn.setDoOutput(true);
String jsonInputString = "{\n" +
" \"enabled\": true,\n" +
" \"default_mode\": \"TruRisk Advanced\",\n" +
" \"tru_risk_process_records\": 50,\n" +
" \"lite_inputs\": {\n" +
" \"name\": true,\n" +
" \"birth_incorporation_date\": true,\n" +
" \"biometric_search_image\": true,\n" +
" \"country\": true\n" +
" },\n" +
" \"advanced_fields\": {\n" +
" \"name\": true,\n" +
" \"birth_incorporation_date\": true,\n" +
" \"biometric_search_image\": true,\n" +
" \"nationality\": true,\n" +
" \"identification_number\": true,\n" +
" \"parent\": true,\n" +
" \"sibling\": true,\n" +
" \"occupation\": true,\n" +
" \"industry\": true,\n" +
" \"spouse\": false,\n" +
" \"address\": false,\n" +
" \"imo_number\": true,\n" +
" \"tail_number\": true,\n" +
" \"business_registration_number\": true,\n" +
" \"known_alias\": true\n" +
" },\n" +
" \"ongoing_monitoring_enabled\": true,\n" +
" \"ongoing_monitoring_frequency\": \"Monthly\",\n" +
" \"alerts\": {\n" +
" \"email_enabled\": true,\n" +
" \"email_recipients\": \"compliance@example.com\",\n" +
" \"webhook_enabled\": true\n" +
" }\n" +
"}";
try(OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
System.out.println(conn.getResponseCode());
}
}
curl --location --request POST 'https://api.amlwatcher.com/api/tru-risk-configuration' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer Token' \
--data-raw '{
"enabled": true,
"default_mode": "TruRisk Advanced",
"tru_risk_process_records": 50,
"lite_inputs": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"country": true
},
"advanced_fields": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"nationality": true,
"identification_number": true,
"parent": true,
"sibling": true,
"occupation": true,
"industry": true,
"spouse": false,
"address": false,
"imo_number": true,
"tail_number": true,
"business_registration_number": true,
"known_alias": true
},
"ongoing_monitoring_enabled": true,
"ongoing_monitoring_frequency": "Monthly",
"alerts": {
"email_enabled": true,
"email_recipients": "compliance@example.com",
"webhook_enabled": true
}
}'
using RestSharp;
using System;
var client = new RestClient("https://api.amlwatcher.com/api/tru-risk-configuration");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer Token");
request.AddJsonBody(new
{
enabled = true,
default_mode = "TruRisk Advanced",
tru_risk_process_records = 50,
lite_inputs = new
{
name = true,
birth_incorporation_date = true,
biometric_search_image = true,
country = true
},
advanced_fields = new
{
name = true,
birth_incorporation_date = true,
biometric_search_image = true,
nationality = true,
identification_number = true,
parent = true,
sibling = true,
occupation = true,
industry = true,
spouse = false,
address = false,
imo_number = true,
tail_number = true,
business_registration_number = true,
known_alias = true
},
ongoing_monitoring_enabled = true,
ongoing_monitoring_frequency = "Monthly",
alerts = new
{
email_enabled = true,
email_recipients = "compliance@example.com",
webhook_enabled = true
}
});
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.amlwatcher.com/api/tru-risk-configuration"
payload := strings.NewReader(`{
"enabled": true,
"default_mode": "TruRisk Advanced",
"tru_risk_process_records": 50,
"lite_inputs": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"country": true
},
"advanced_fields": {
"name": true,
"birth_incorporation_date": true,
"biometric_search_image": true,
"nationality": true,
"identification_number": true,
"parent": true,
"sibling": true,
"occupation": true,
"industry": true,
"spouse": false,
"address": false,
"imo_number": true,
"tail_number": true,
"business_registration_number": true,
"known_alias": true
},
"ongoing_monitoring_enabled": true,
"ongoing_monitoring_frequency": "Monthly",
"alerts": {
"email_enabled": true,
"email_recipients": "compliance@example.com",
"webhook_enabled": true
}
}`)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer Token")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
Request Body
For POST /api/tru-risk-configuration, the following top-level fields must be sent together every time:
enabled, default_mode, and tru_risk_process_records.
Inside nested objects, name is also required in both lite_inputs and advanced_fields.
| Parameter | Type | Required | Description |
|---|---|---|---|
enabled | Boolean | Yes | Master switch for TruRisk. |
default_mode | Enum | Yes | Must be TruRisk Lite or TruRisk Advanced. |
tru_risk_process_records | Integer | Yes | Number of records processed per batch. |
lite_inputs | Object | Yes | Lite-mode field toggles. |
lite_inputs.name | Boolean | Yes | Required switch for name in Lite mode. |
advanced_fields | Object | Yes | Advanced-mode field toggles. |
advanced_fields.name | Boolean | Yes | Required switch for name in Advanced mode. |
ongoing_monitoring_enabled | Boolean | No | Enables or disables ongoing monitoring. |
ongoing_monitoring_frequency | Enum | No | Monitoring cadence (e.g., Instantly, Daily, Weekly, Monthly, Do not run). |
alerts | Object | No | Alert delivery preferences. |
alerts.email_enabled | Boolean | No | Toggle email alerts. |
alerts.email_recipients | String | No | Comma-separated emails for alert delivery. |
alerts.webhook_enabled | Boolean | No | Toggle webhook alerts. |
Additional validation notes
default_modeis validated against purchased/enabled org capabilities.advanced_fieldsmust include at least one enabled advanced driver (or DOB) as enforced by API validation.- Unknown keys inside
advanced_fieldsare rejected.
TruRisk's default calibration takes a balanced, industry-aligned approach that weighs both false positives and false negatives rather than optimizing for one at the expense of the other. Regardless of configuration, the accuracy of verdicts and confidence scoring remains dependent on the completeness and quality of the profile data submitted.
Response Body
| Parameter | Type | Description |
|---|---|---|
status | String | Indicates the result of the request (e.g., SUCCESS). |
error | Boolean | Indicates if the update failed. |
data.message | String | A confirmation message (e.g., "TruRisk configuration saved successfully"). |
data.configuration.enabled | Boolean | Confirmation of the module's master switch status. |
data.configuration.default_mode | String | The newly set default mode (TruRisk Lite or TruRisk Advanced). |
data.configuration.tru_risk_process_records | Integer | The limit of records processed per batch. |
data.configuration.lite_inputs | Object | The saved toggles for mandatory Lite mode fields. |
data.configuration.advanced_fields | Object | The saved toggles for optional Advanced mode fields. |
data.configuration.ongoing_monitoring_enabled | Boolean | Confirmation of automated re-screening status. |
data.configuration.ongoing_monitoring_frequency | String | Cadence of re-screening (e.g., Instantly). |
data.configuration.alerts | Object | Settings for email_enabled, webhook_enabled, and email_recipients. |
data.configuration.updated_at | String | Timestamp reflecting the exact moment the settings were saved. |
Sample Response
{
"data": {
"configuration": {
"advanced_fields": {
"address": false,
"biometric_search_image": true,
"birth_incorporation_date": true,
"business_registration_number": false,
"identification_number": true,
"imo_number": false,
"industry": false,
"known_alias": false,
"name": true,
"nationality": true,
"occupation": false,
"parent": true,
"sibling": true,
"spouse": false,
"tail_number": false
},
"alerts": {
"email_enabled": true,
"email_recipients": "compliance@example.com",
"webhook_enabled": true
},
"created_at": "Mon, 16 Feb 2026 10:33:49 GMT",
"default_mode": "TruRisk Advanced",
"enabled": true,
"lite_inputs": {
"biometric_search_image": true,
"birth_incorporation_date": true,
"countries": true,
"name": true
},
"ongoing_monitoring_enabled": true,
"ongoing_monitoring_frequency": "Instantly",
"tru_risk_process_records": 50,
"updated_at": "Mon, 16 Feb 2026 10:33:49 GMT"
},
"message": "TruRisk configuration saved successfully"
},
"error": false,
"status": "SUCCESS"
}
How Ongoing Monitoring Works
When ongoing_monitoring_enabled is turned on, TruRisk automatically re-evaluates a monitored customer whenever a new screening match appears against that entity, new adverse media is detected, or the customer's profile data is updated. Each re-evaluation refreshes the case's risk score and verdict, and—based on the alerts settings above—sends a notification by email, webhook, or both, so compliance teams are notified of the change rather than needing to re-check cases manually. ongoing_monitoring_frequency controls how often this re-evaluation cycle runs.