Inquiry Signals

Platform signals computed for an inquiry (such as fraud scores and behavioral indicators) can be exposed on the external Inquiry API and webhooks. This allows you to consume risk and trust signals directly from inquiry responses without needing to make separate API calls.

Requires enablement

Signals on the Inquiry API are gated behind a feature flag at the organization level. Contact your CSM or Persona support to enable this feature for your organization.

How it works

The GET /api/v1/inquiries/:id response includes a signals array in data.attributes. When the feature is enabled and signals are available, the array is populated:

json
1{
2 "data": {
3 "id": "inq_abc123",
4 "type": "inquiry",
5 "attributes": {
6 "status": "approved",
7 "signals": [
8 {
9 "name": "inquiry/bot_score",
10 "value": 42
11 },
12 {
13 "name": "inquiry/behavior_threat_level",
14 "value": "low"
15 }
16 ]
17 }
18 }
19}

When the feature is not enabled, signals will be an empty array:

json
1{
2 "data": {
3 "id": "inq_abc123",
4 "type": "inquiry",
5 "attributes": {
6 "status": "approved",
7 "signals": []
8 }
9 }
10}

Signal object fields

Each signal in the array contains the following fields:

FieldTypeDescription
namestringThe identifier for the signal (e.g. inquiry/bot_score, inquiry/behavior_threat_level).
valuestring or numberThe computed value of the signal. The type depends on the specific signal.

Which signals appear

Only signals that pass visibility checks for your organization are included in the response. Specifically:

  • The signal must be assigned to the inquiry’s template version.
  • The signal’s visibility rules must be satisfied (based on product features and environment restrictions).

The set of visible signals may vary across inquiry templates and template versions. If no signals are visible for a given inquiry, the signals array will be empty.

Webhook exposure

Since signals is an inline attribute on the inquiry object, it automatically appears in all inquiry webhook event payloads (e.g. inquiry.completed, inquiry.approved, inquiry.declined). No additional webhook configuration is required. When the feature is not enabled, signals will be an empty array in the webhook payload.

For example, an inquiry.approved webhook event payload will include signals in the inquiry attributes:

json
1{
2 "data": {
3 "type": "event",
4 "id": "evt_XGuYWp7WuDzNxie5z16s7sGJ",
5 "attributes": {
6 "name": "inquiry.approved",
7 "payload": {
8 "data": {
9 "type": "inquiry",
10 "id": "inq_abc123",
11 "attributes": {
12 "status": "approved",
13 "signals": [
14 {
15 "name": "inquiry/bot_score",
16 "value": 42
17 },
18 {
19 "name": "inquiry/behavior_threat_level",
20 "value": "low"
21 }
22 ]
23 },
24 "relationships": {
25 "template": {
26 "data": {
27 "id": "tmpl_XYZ789",
28 "type": "template"
29 }
30 }
31 }
32 }
33 },
34 "created-at": "2026-02-16T19:01:00.000Z"
35 }
36 }
37}

See the Webhooks Overview for more information on configuring and consuming webhooks.