> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truthfactor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Signals

> The signal catalogue, required inputs, the premium tier, and what's coming.

Name the signals you want in the `signals` array, or **omit the field** and every signal whose
required inputs you supplied will run, subject to your account's plan and governance.

Each input field is optional and **a single field is valid** — an input is rejected only when
it supports none of the selected signals. `correlation_id` is your join key, echoed back
verbatim on the matching result item.

## Available signals

These are callable today. The premium variants ask the same question as their standard
counterpart but resolve against more sources, so fewer rows come back unresolved — they need a
**premium grant** on your account.

| Signal | Required inputs | Tells you |
| - | - | - |
| `phone_name_match` | `phone`, `first_name`, `last_name` | Whether the phone's owner belongs to the given name. |
| `phone_connectivity` | `phone` | Whether the phone reaches a live subscriber. Resolves outside the US and Canada; in the US and Canada it returns `trusted: null` by design — `premium_phone_connectivity` is the signal that answers there. |
| `phone_profile_match` | `phone`, `profile_url` | Whether the phone belongs to the professional profile. |
| `premium_phone_name_match` | `phone`, `first_name`, `last_name` | `phone_name_match` on the premium tier. Needs a premium grant. |
| `premium_phone_connectivity` | `phone` | `phone_connectivity` on the premium tier, **with US/CA coverage** where the standard signal returns no result. Needs a premium grant. |
| `premium_phone_profile_match` | `phone`, `profile_url` | `phone_profile_match` on the premium tier. Needs a premium grant. |

> [!WARNING]
>
> A `trusted: null` is never a `false`. `phone_connectivity` returning `null` in the US/CA
> means "no standard coverage here", not "the phone is dead". See
> [The verdict model](https://docs.truthfactor.ai/essentials/verdicts.md).

## Coming soon

Not callable yet. They're listed so you can see where the API is going — a request naming one
is **rejected** rather than silently ignored.

| Signal | Required inputs | Tells you |
| - | - | - |
| `email_name_match` | `email`, `first_name`, `last_name` | Whether the email's owner belongs to the given name. |
| `email_profile_match` | `email`, `profile_url` | Whether the email belongs to the professional profile. |
| `phone_type` | `phone` | Whether the number is a mobile, a landline, or VoIP. |
| `phone_ported` | `phone` | When the phone was last ported (a recent port is a fraud co-signal). |
| `phone_activity` | `phone` | How established the number is over time. |
| `profile_account_age_risk` | `profile_url` | Risk that the professional profile was recently created. |

## Running every applicable signal

Omit `signals` and the API runs every signal whose required inputs are present, subject to the
released phase and your account's governance:

```json theme={null}
{
  "inputs": [
    { "phone": "+447911123456", "first_name": "Dana", "last_name": "Okafor" }
  ]
}
```

With a phone and a name present and no `signals` array, `phone_name_match` and
`phone_connectivity` both run (plus any premium variants your account is granted).

## Fresh resolution

Set `skip_cache: true` on the request to bypass the result cache and resolve every signal
fresh — a live probe or dial is placed rather than a cached verdict returned. A `skip_cache`
submission is never idempotency-replayed; a new `request_id` is always minted.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.