Events
| Event | Trigger |
|---|---|
session.completed | Verification session finished processing |
session.approved | Session approved — identity verified |
session.declined | Session declined — failed checks or suspicious data |
session.expired | Session expired before completion |
aml.completed | AML screening finished processing |
aml.match_found | Potential matches found against watchlists or PEP databases |
aml.monitoring.match | Continuous monitoring detected new AML matches |
transaction.flagged | Transaction flagged for manual review |
transaction.blocked | Transaction automatically blocked by risk rules |
biometric.completed | Biometric authentication finished processing |
database.validated | Database validation completed |
face.duplicate_found | Face search detected a duplicate identity |
credential.created | Reusable KYC credential issued |
credential.shared | Credential shared with another organization |
credential.verified | Shared credential verified by another organization |
credential.revoked | Credential revoked |
video.completed | Video recording or live agent call finished |
video.reviewed | Video KYC reviewed and decision made |
liveness.failed | Active liveness challenge failed |
risk.threshold_exceeded | Session risk score exceeded configured threshold |
ambient.alert | Ambient verification detected a risk change (warning or critical severity) |
Payload Structure
session.completed
| Field | Type | Description |
|---|---|---|
event | string | Event type identifier |
data | object | Event-specific payload (varies by event type) |
timestamp | string | ISO 8601 timestamp |
webhook_id | string | Unique delivery ID — use for idempotency |
Signature Verification
Every webhook includes anX-Verilock-Signature header with an HMAC-SHA256 signature.
Retry Policy
Failed deliveries (non-2xx response within 10 seconds) are retried with exponential backoff:| Attempt | Delay | Elapsed |
|---|---|---|
| 1st retry | 10s | ~10s |
| 2nd retry | 60s | ~70s |
| 3rd retry | 5min | ~6min |
Best Practices
Respond immediately
Return
200 as soon as you receive the webhook. Process events asynchronously via a job queue.Idempotency
Store processed
webhook_id values and skip duplicates to ensure exactly-once processing.Verify signatures
Always validate
X-Verilock-Signature using timing-safe comparison before processing any data.
