curl --request POST \
--url https://api.truthfactor.ai/api/v1/signals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"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",
"phone_connectivity",
"phone_profile_match",
"email_name_match"
]
}
'
{
"request_id": "<string>",
"requested_datetime": "2023-11-07T05:31:56Z",
"status": "pending",
"accepted": 1
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Submit signals
Submit a batch of inputs for background scoring.
POST
/
v1
/
signals
curl --request POST \
--url https://api.truthfactor.ai/api/v1/signals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"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",
"phone_connectivity",
"phone_profile_match",
"email_name_match"
]
}
'
{
"request_id": "<string>",
"requested_datetime": "2023-11-07T05:31:56Z",
"status": "pending",
"accepted": 1
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Submit one or more people and the signals you want run. You get a
202 with a request_id
immediately; results arrive by polling or on an optional signed
webhook. See Signals for the catalogue and
required inputs.Authorizations
An account-scoped API key, tf_live_….
Headers
Optional. A repeated Idempotency-Key (or an identical batch within a window) returns the same request_id without re-charging.
Body
application/json
The POST /v1/signals body.
Minimum array length:
1Show child attributes
Show child attributes
Which signals to run for every input. Omitted → all signals whose required inputs are present, subject to phase and per-account governance.
Minimum array length:
1The name of a signal.
Available options:
phone_name_match, phone_connectivity, phone_profile_match, email_name_match, email_profile_match, phone_type, phone_ported, phone_activity, profile_account_age_risk, premium_phone_name_match, premium_phone_connectivity, premium_phone_profile_match Where the completed payload is POSTed, signed. Optional.
Bypass the result cache and resolve every signal fresh — a live probe/dial is placed rather than a cached verdict returned — and never idempotency-replay this submission (a new request_id is always minted). Default false. Optional.