Poll batch status and results
curl --request GET \
--url https://api.truthfactor.ai/api/v1/signals/{request_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.truthfactor.ai/api/v1/signals/{request_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.truthfactor.ai/api/v1/signals/{request_id}', 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.truthfactor.ai/api/v1/signals/{request_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.truthfactor.ai/api/v1/signals/{request_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.truthfactor.ai/api/v1/signals/{request_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthfactor.ai/api/v1/signals/{request_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"request_id": "rq_7a1d",
"requested_datetime": "2026-09-26T14:03:11Z",
"completed_datetime": "2026-09-26T14:03:41Z",
"status": "complete",
"data": [
{
"correlation_id": "signup-3391",
"status": "scored",
"score": 94,
"band": "clear",
"reason": "phone_profile_match",
"input": {
"phone": "+447911123456",
"first_name": "Dana",
"last_name": "Okafor",
"profile_url": "linkedin.com/in/dana-okafor",
"email": "dana.okafor@example.com",
"correlation_id": "signup-3391"
},
"signals": {
"phone_name_match": {
"trusted": true,
"confidence": 90
},
"phone_connectivity": {
"trusted": true,
"confidence": 98
},
"phone_profile_match": {
"trusted": true,
"confidence": 76
},
"email_name_match": {
"trusted": null,
"confidence": null
}
}
}
]
}Poll results
Poll a batch’s status and results by request_id.
GET
/
v1
/
signals
/
{request_id}
Poll batch status and results
curl --request GET \
--url https://api.truthfactor.ai/api/v1/signals/{request_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.truthfactor.ai/api/v1/signals/{request_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.truthfactor.ai/api/v1/signals/{request_id}', 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.truthfactor.ai/api/v1/signals/{request_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.truthfactor.ai/api/v1/signals/{request_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.truthfactor.ai/api/v1/signals/{request_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthfactor.ai/api/v1/signals/{request_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"request_id": "rq_7a1d",
"requested_datetime": "2026-09-26T14:03:11Z",
"completed_datetime": "2026-09-26T14:03:41Z",
"status": "complete",
"data": [
{
"correlation_id": "signup-3391",
"status": "scored",
"score": 94,
"band": "clear",
"reason": "phone_profile_match",
"input": {
"phone": "+447911123456",
"first_name": "Dana",
"last_name": "Okafor",
"profile_url": "linkedin.com/in/dana-okafor",
"email": "dana.okafor@example.com",
"correlation_id": "signup-3391"
},
"signals": {
"phone_name_match": {
"trusted": true,
"confidence": 90
},
"phone_connectivity": {
"trusted": true,
"confidence": 98
},
"phone_profile_match": {
"trusted": true,
"confidence": 76
},
"email_name_match": {
"trusted": null,
"confidence": null
}
}
}
]
}Returns the same payload the webhook delivers, with whatever items have scored so far.
status
stays pending until every item is terminal, then flips to complete. You can rely on polling
alone. See The verdict model for how to read each item.Authorizations
An account-scoped API key, tf_live_….
Path Parameters
The request_id returned by POST /v1/signals.
Response
The batch status and results.
The GET /v1/signals/{request_id} and webhook body.
Minimum string length:
1Available options:
pending, complete, partial, failed One result item, discriminated on status: scored carries score/band/reason/signals; rejected carries reason; unresolved carries its signals map (every verdict null, each with an unresolved_reason) and no score/band/reason; error may carry neither.
- Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes