List Risk Signals
curl --request GET \
--url https://api.truthlocks.com/v1/risk/signals \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.truthlocks.com/v1/risk/signals"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.truthlocks.com/v1/risk/signals', 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://api.truthlocks.com/v1/risk/signals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.truthlocks.com/v1/risk/signals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.truthlocks.com/v1/risk/signals")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/risk/signals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "device_fingerprint",
"signal_type": "velocity_anomaly",
"score": 0.85,
"details": {
"ip": "203.0.113.42",
"country": "US",
"reason": "multiple_accounts_same_device"
},
"entity_type": "user",
"entity_id": "usr_8f14e45f",
"created_at": "2023-11-07T05:31:56Z"
}
],
"next_cursor": "<string>"
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}Risk Signals
List risk signals
Returns risk signals for the authenticated tenant with pagination. Filter by source, signal type, entity, or minimum score.
GET
/
v1
/
risk
/
signals
List Risk Signals
curl --request GET \
--url https://api.truthlocks.com/v1/risk/signals \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.truthlocks.com/v1/risk/signals"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.truthlocks.com/v1/risk/signals', 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://api.truthlocks.com/v1/risk/signals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.truthlocks.com/v1/risk/signals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.truthlocks.com/v1/risk/signals")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/risk/signals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "device_fingerprint",
"signal_type": "velocity_anomaly",
"score": 0.85,
"details": {
"ip": "203.0.113.42",
"country": "US",
"reason": "multiple_accounts_same_device"
},
"entity_type": "user",
"entity_id": "usr_8f14e45f",
"created_at": "2023-11-07T05:31:56Z"
}
],
"next_cursor": "<string>"
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}Returns risk signals for the authenticated tenant with cursor-based pagination. Use query parameters to filter by source, signal type, subject, or minimum risk score.
Parameters
string
Filter by signal source (e.g.
external, login, verification)string
Filter by signal type (e.g.
velocity, ato, geo_anomaly)string
Filter by subject type:
user, issuer, attestation, session, ip, or devicestring
Filter by subject ID
integer
Return only signals with a score greater than or equal to this value (0–100)
integer
Number of results to return (max 100, default 50)
string
Pagination cursor from a previous response
Authorizations
API key for machine-to-machine authentication
Query Parameters
Filter by signal source
Filter by signal type
Filter by entity type
Available options:
user, device, ip, document, session Filter by entity ID
Return only signals with score >= this value
Required range:
0 <= x <= 1Required range:
x <= 100
