Skip to main content
Ambient Verification continuously monitors identity signals after initial verification is complete. It detects changes in risk posture — such as new sanctions listings, document expirations, adverse media mentions, and device anomalies — and alerts you in real time.

Overview

Traditional KYC is a point-in-time check. Ambient Verification extends this into ongoing monitoring by periodically re-evaluating identity signals and dispatching alerts when risk changes are detected.

Signal Types

SignalSourceDescription
sanctions_listingAML databasesPerson added to a sanctions or watchlist
pep_status_changePEP databasesChange in politically exposed person status
adverse_mediaMedia monitoringNegative news articles mentioning the individual
document_expiryDocument dataIdentity document approaching or past expiration
address_changePublic recordsRegistered address change detected
device_anomalyDevice fingerprintingSuspicious device change for a returning user
velocity_spikeTransaction monitoringUnusual increase in transaction volume
credit_eventCredit bureausSignificant credit event (defaults, CCJs)

Severity Levels

SeverityDescriptionAction
infoNotable change, no immediate riskLogged for audit trail
warningPotential risk change, review recommendedDashboard notification
criticalHigh-risk signal, immediate action neededWebhook alert + dashboard notification

Enabling Ambient Verification

Enable per session when creating or after approval:
POST /v1/sessions
{
  "profile": {
    "steps": ["document", "selfie"]
  },
  "ambient_verification": {
    "enabled": true,
    "signals": ["sanctions_listing", "pep_status_change", "adverse_media", "document_expiry"],
    "frequency": "daily"
  }
}
FieldTypeDefaultDescription
ambient_verification.enabledbooleanfalseEnable ambient monitoring
ambient_verification.signalsarrayallSignals to monitor
ambient_verification.frequencystringdailyCheck frequency: hourly, daily, or weekly

API: Trigger an Ambient Check

Run an on-demand ambient check for a specific session:
POST /v1/sessions/{id}/ambient-check
{
  "signals": ["sanctions_listing", "adverse_media"]
}

Response

{
  "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "check_id": "amb_x1y2z3w4",
  "status": "completed",
  "alerts": [
    {
      "signal": "adverse_media",
      "severity": "warning",
      "title": "Adverse media mention detected",
      "description": "News article published on 2026-03-17 mentions the individual in connection with a regulatory investigation.",
      "source": "Financial Times",
      "detected_at": "2026-03-18T10:00:00Z"
    }
  ],
  "no_alerts_signals": ["sanctions_listing"],
  "checked_at": "2026-03-18T10:00:05Z"
}

API: List Ambient Signals

Retrieve all ambient alerts for a session:
GET /v1/sessions/{id}/ambient-signals?severity=critical&page=1
ParameterTypeDefaultDescription
severitystringallFilter by info, warning, or critical
signalstringallFilter by signal type
sincestringISO 8601 timestamp to filter from
pageinteger1Page number
per_pageinteger20Results per page

Response

{
  "data": [
    {
      "id": "alert_a1b2c3d4",
      "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "signal": "sanctions_listing",
      "severity": "critical",
      "title": "Added to OFAC SDN list",
      "description": "Individual added to the OFAC Specially Designated Nationals list on 2026-03-17.",
      "source": "OFAC",
      "acknowledged": false,
      "detected_at": "2026-03-18T04:00:00Z"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 20
  }
}

Response Fields

FieldTypeDescription
idstringAlert identifier
session_idstringAssociated session ID
signalstringSignal type that triggered the alert
severitystringinfo, warning, or critical
titlestringShort alert title
descriptionstringDetailed description of the finding
sourcestringData source that produced the alert
acknowledgedbooleanWhether the alert has been acknowledged
detected_atstringISO 8601 timestamp of detection

Webhook: ambient.alert

When a critical or warning-level signal is detected, an ambient.alert webhook is dispatched:
{
  "event": "ambient.alert",
  "data": {
    "alert_id": "alert_a1b2c3d4",
    "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "signal": "sanctions_listing",
    "severity": "critical",
    "title": "Added to OFAC SDN list",
    "description": "Individual added to the OFAC Specially Designated Nationals list on 2026-03-17.",
    "source": "OFAC",
    "detected_at": "2026-03-18T04:00:00Z"
  },
  "timestamp": "2026-03-18T04:00:01Z",
  "webhook_id": "wh_evt_amb_9f8e7d6c"
}
Only warning and critical severity alerts trigger webhooks. info level signals are logged but do not generate webhook events.
Ambient Verification runs on approved sessions only. Monitoring stops automatically if a session is later revoked or the associated credential is invalidated.
Start with daily frequency for most use cases. Use hourly for high-risk accounts or regulated environments that require near-real-time monitoring.