cURL
curl --request POST \
--url https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring \
--header 'Content-Type: application/json' \
--header 'apiKey: <api-key>' \
--header 'apiSecret: <api-key>' \
--data '
{
"name": "Kwame Asare Mensah",
"threshold": 85,
"limit": 10,
"callbackUrl": "https://merchant.example.com/webhooks/sigma/risk-monitoring"
}
'import requests
url = "https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring"
payload = {
"name": "Kwame Asare Mensah",
"threshold": 85,
"limit": 10,
"callbackUrl": "https://merchant.example.com/webhooks/sigma/risk-monitoring"
}
headers = {
"apiKey": "<api-key>",
"apiSecret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
apiKey: '<api-key>',
apiSecret: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Kwame Asare Mensah',
threshold: 85,
limit: 10,
callbackUrl: 'https://merchant.example.com/webhooks/sigma/risk-monitoring'
})
};
fetch('https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Kwame Asare Mensah',
'threshold' => 85,
'limit' => 10,
'callbackUrl' => 'https://merchant.example.com/webhooks/sigma/risk-monitoring'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apiKey: <api-key>",
"apiSecret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring"
payload := strings.NewReader("{\n \"name\": \"Kwame Asare Mensah\",\n \"threshold\": 85,\n \"limit\": 10,\n \"callbackUrl\": \"https://merchant.example.com/webhooks/sigma/risk-monitoring\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apiKey", "<api-key>")
req.Header.Add("apiSecret", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring")
.header("apiKey", "<api-key>")
.header("apiSecret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Kwame Asare Mensah\",\n \"threshold\": 85,\n \"limit\": 10,\n \"callbackUrl\": \"https://merchant.example.com/webhooks/sigma/risk-monitoring\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apiKey"] = '<api-key>'
request["apiSecret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Kwame Asare Mensah\",\n \"threshold\": 85,\n \"limit\": 10,\n \"callbackUrl\": \"https://merchant.example.com/webhooks/sigma/risk-monitoring\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Request created successfully. Result will be sent to your webhook",
"data": {
"checkId": "99ce37ca-06dd-44ac-a6fc-c858387e56d9"
}
}{
"error": 400,
"message": "Invalid request payload: name is required"
}Anti Monitoring Laundering
Joint Requests (Webhook)
This endpoint allows you to run a search for pep list, sanctions list and adverse media with a single api call.
POST api/v1/aml/risk-monitoring
cURL
curl --request POST \
--url https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring \
--header 'Content-Type: application/json' \
--header 'apiKey: <api-key>' \
--header 'apiSecret: <api-key>' \
--data '
{
"name": "Kwame Asare Mensah",
"threshold": 85,
"limit": 10,
"callbackUrl": "https://merchant.example.com/webhooks/sigma/risk-monitoring"
}
'import requests
url = "https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring"
payload = {
"name": "Kwame Asare Mensah",
"threshold": 85,
"limit": 10,
"callbackUrl": "https://merchant.example.com/webhooks/sigma/risk-monitoring"
}
headers = {
"apiKey": "<api-key>",
"apiSecret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
apiKey: '<api-key>',
apiSecret: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Kwame Asare Mensah',
threshold: 85,
limit: 10,
callbackUrl: 'https://merchant.example.com/webhooks/sigma/risk-monitoring'
})
};
fetch('https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Kwame Asare Mensah',
'threshold' => 85,
'limit' => 10,
'callbackUrl' => 'https://merchant.example.com/webhooks/sigma/risk-monitoring'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apiKey: <api-key>",
"apiSecret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring"
payload := strings.NewReader("{\n \"name\": \"Kwame Asare Mensah\",\n \"threshold\": 85,\n \"limit\": 10,\n \"callbackUrl\": \"https://merchant.example.com/webhooks/sigma/risk-monitoring\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apiKey", "<api-key>")
req.Header.Add("apiSecret", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring")
.header("apiKey", "<api-key>")
.header("apiSecret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Kwame Asare Mensah\",\n \"threshold\": 85,\n \"limit\": 10,\n \"callbackUrl\": \"https://merchant.example.com/webhooks/sigma/risk-monitoring\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sigmaaml.sabipay.com/api/v1/aml/risk-monitoring")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apiKey"] = '<api-key>'
request["apiSecret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Kwame Asare Mensah\",\n \"threshold\": 85,\n \"limit\": 10,\n \"callbackUrl\": \"https://merchant.example.com/webhooks/sigma/risk-monitoring\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Request created successfully. Result will be sent to your webhook",
"data": {
"checkId": "99ce37ca-06dd-44ac-a6fc-c858387e56d9"
}
}{
"error": 400,
"message": "Invalid request payload: name is required"
}This is an example result that will be sent to your webhook upon completion
{
"checkId": "99ce37ca-06dd-44ac-a6fc-c858387e56d9",
"adverseMedia": {
"info": {
"id": "69830897b7eae7294b96621a",
"query": "Yahaya Bello",
"count": 6,
"limit": 10
},
"result": [
{
"title": "Yahaya Bello - Wikipedia",
"link": "https://ha.wikipedia.org/wiki/Yahaya_Bello",
"keyword": {
"confidenceScore": 0.9
},
"adverseInformation": [
{
"keyword": "fraud",
"score": 0.6
},
{
"keyword": "corruption",
"score": 0.5
}
]
},
{
"title": "Yahaya Bello's Case Still In Court; I Have Done My Work — EFCC ...",
"link": "https://www.channelstv.com/2026/01/11/yahaya-bellos-case-still-in-court-i-have-done-my-work-fulfilled-my-mandate-efcc-chairman/",
"keyword": {
"confidenceScore": 1
},
"adverseInformation": [
{
"keyword": "corruption",
"score": 0.9
},
{
"keyword": "embezzlement",
"score": 0.8
},
{
"keyword": "fraud",
"score": 0.9
},
{
"keyword": "money laundering",
"score": 0.8
}
]
},
{
"title": "EFCC Boss Olukoyede Stands By Resignation Vow, Says 'I've ...",
"link": "https://saharareporters.com/2026/01/12/efcc-boss-olukoyede-stands-resignation-vow-says-ive-fulfilled-my-mandate-yahaya-bellos",
"keyword": {
"confidenceScore": 0.95
},
"adverseInformation": [
{
"keyword": "corruption",
"score": 0.9
},
{
"keyword": "embezzlement",
"score": 0.85
},
{
"keyword": "money laundering",
"score": 0.8
},
{
"keyword": "fraud",
"score": 0.75
},
{
"keyword": "misrepresentation",
"score": 0.6
}
]
},
{
"title": "Court remand ex-Kogi govnor over 110 billion naira corruption charge",
"link": "https://www.bbc.com/pidgin/articles/c5ymnd0xd8lo",
"keyword": {
"confidenceScore": 0.95
},
"adverseInformation": [
{
"keyword": "corruption",
"score": 0.95
},
{
"keyword": "embezzlement",
"score": 0.9
},
{
"keyword": "money laundering",
"score": 0.85
}
]
},
{
"title": "corruption charges against former Kogi State govnor Yahaya Bello ...",
"link": "https://www.bbc.com/pidgin/articles/cx2p7xxg02ko",
"keyword": {
"confidenceScore": 0.95
},
"adverseInformation": [
{
"keyword": "corruption",
"score": 0.95
},
{
"keyword": "money laundering",
"score": 0.9
},
{
"keyword": "embezzlement",
"score": 0.8
},
{
"keyword": "misrepresentation",
"score": 0.6
}
]
},
{
"title": "Yahaya Bello - Wikipedia",
"link": "https://en.wikipedia.org/wiki/Yahaya_Bello",
"keyword": {
"confidenceScore": 0.95
},
"adverseInformation": [
{
"keyword": "corruption",
"score": 0.95
},
{
"keyword": "fraud",
"score": 0.9
},
{
"keyword": "money laundering",
"score": 0.85
},
{
"keyword": "embezzlement",
"score": 0.8
},
{
"keyword": "misrepresentation",
"score": 0.7
}
]
}
]
},
"pep": {
"check_id": "99ce37ca-06dd-44ac-a6fc-c858387e56d9",
"check_creation_date": "2026-02-04T08:51:35.944Z",
"last_screened_date": "2026-02-04T08:51:35.944Z",
"created_by": "64a6d6446b67960f0543b301",
"results": [
{
"_id": "662f9416d2b06e101bf11c67",
"externalId": "ng-chip-pep-ng-0004064",
"type": "pep",
"__v": 1,
"addresses": ["House of Assembly Complex, Sokoto"],
"aliases": [""],
"birth_date": "",
"countries": ["ng"],
"createdAt": "2024-04-29T12:35:23.070Z",
"entityType": "Person",
"name": "Yahaya Bello Wurno ",
"sanctions": [""],
"updatedAt": "2025-08-12T19:53:42.454Z",
"politicalParty": [""],
"positions": [
{
"title": "Chairman of Sokoto-Rima River Basin Development Authority.",
"startDate": "2025",
"endDate": "till present",
"_id": "67b757d49ce0ee5cfd4e39a5"
},
{
"title": "Director, Personnel Management, Goronyo Local Government Council\t",
"startDate": null,
"endDate": null,
"_id": "67b757d49ce0ee5cfd4e39a6"
}
],
"aiSuggestion": null,
"assignedDate": "2025-02-12T12:50:40.512Z",
"updatedBy": "66dedc07b83043927b34946f",
"notes": [
"These are the available information on Yahaya Bello Wurno - Quadri Ayoade (2025-02-15 06:57:49)"
],
"reviewStatus": "completed",
"submittedUpdate": {
"name": "Yahaya Bello Wurno ",
"photo": "https://www.smeal.psu.edu/alumni/images/photo-not-available-176.jpg/@@images/image.jpeg",
"gender": "male",
"entityType": "Person",
"countries": ["ng"],
"addresses": ["House of Assembly Complex, Sokoto"],
"dataset": [
{
"name": "Open Sanctions",
"url": "https://test.opensanctions.org/entities/ng-chip-pep-ng-0004064/"
},
{
"name": "Premium Times",
"url": "https://www.premiumtimesng.com/news/more-news/769179-tinubu-appoints-new-chairperson-for-uniabuja-teaching-hospital.html"
},
{
"name": "Legit",
"url": "https://www.legit.ng/politics/1637315-just-tinubu-announces-appointment-clarification-yahaya-bello-wurnos-mandate/"
},
{
"name": "State House (No 21)",
"url": "https://statehouse.gov.ng/news/appointment-of-board-chairpersons-and-ceos/"
},
{
"name": "My Nigeria",
"url": "https://www.mynigeria.com/NigeriaHomePage/NewsArchive/Tinubu-announces-fresh-appointment-makes-clarification-on-Yahaya-Bello-Wurno-s-new-mandate-743491"
},
{
"name": "Daily Advent",
"url": "https://lite.dailyadvent.com/detail/41d97b62250124en_ng?uid=f9929ac4b0a345e6b4dbcc3e3d02126fen_ng&country=ng&language=en&category=main&page=2"
}
],
"type": "pep",
"positions": [
{
"title": "Chairman of Sokoto-Rima River Basin Development Authority.",
"startDate": "2025",
"endDate": "till present"
},
{
"title": "Director, Personnel Management, Goronyo Local Government Council\t",
"startDate": null,
"endDate": null
}
],
"deceased": false
},
"deceased": false,
"education": [],
"tags": [],
"updateComplete": true,
"reviewedBy": "6731f0c88536910e85f395f5",
"gender": "male",
"photo": "https://storage.googleapis.com/sigma-public/image.jpeg",
"reviewDate": "2025-02-20T16:27:00.795Z",
"updateCompleteDate": "2025-02-20T16:27:00.795Z",
"reviewAssignedDate": "2025-02-20T16:27:00.795Z",
"confidenceScore": 80
}
],
"search_keyword": "Yahaya Bello",
"type": "pep"
},
"sanction": {
"check_id": "99ce37ca-06dd-44ac-a6fc-c858387e56d9",
"check_creation_date": "2026-02-04T08:51:35.945Z",
"last_screened_date": "2026-02-04T08:51:35.945Z",
"created_by": "64a6d6446b67960f0543b301",
"results": [],
"search_keyword": "Yahaya Bello",
"type": "sanction"
}
}
Body
application/json
Risk monitoring request payload
⌘I