Webhooks API

Manage webhooks programmatically. Subscribe to specific event types and receive real-time notifications.

Event Types

Subscribe to specific events or use all to receive all events.

Onboarding Session Events

High-level lifecycle events for the OnboardingSession — the magic-link container sent to an entity that may wrap a DDQ response, an identity verification, or both.

Event TypeDescription
onboarding.createdOnboarding link generated and sent to the entity
onboarding.ddq_completedEntity finished the DDQ step within the onboarding session
onboarding.verification_completedEntity finished the identity verification step within the onboarding session
onboarding.completedAll required steps completed — entity fully onboarded
onboarding.expiredOnboarding link expired before entity completed all steps
onboarding.revokedOnboarding link permanently revoked by your team
onboarding.link_regeneratedA new token issued for an existing session (resend / refresh link)

Response Workflow Events

Event TypeDescription
response.createdNew response (DDQ submission) created
response.submittedEntity submitted completed response
response.reviewedResponse reviewed by compliance team
response.approvedResponse approved
response.rejectedResponse rejected
response.autofill_completedAI autofill process completed
response.check_answers_completedAI answer checking completed
response.autoflag_completedAI autoflag analysis completed

AML Screening Events

Event TypeDescription
screening.completedAML screening check finished successfully
screening.failedAML screening encountered an error
batch.completedBatch screening operation completed
batch.progressBatch screening progress update
batch.failedBatch screening operation failed

Identity Verification Events

Event TypeDescription
verification.session_createdNew identity verification session started
verification.session_accessedVerification session accessed by entity
verification.session_completedVerification session completed successfully
verification.session_failedVerification session failed
verification.session_expiredVerification session expired
verification.check_completedIdentity verification check completed
non_document.check_initiatedNon-document check initiated
non_document.completedNon-document check completed with results
non_document.reviewedNon-document check reviewed

Case & Alert Events

Event TypeDescription
case.openedNew case opened for investigation
case.resolvedCase resolved or closed
alert.createdNew alert created

Special Event Types

Event TypeDescription
allSubscribe to all event types (wildcard subscription)
testSynthetic test event fired by the POST /api/v1/webhooks/test/ endpoint

Create Webhook

POST /api/v1/webhooks/

Subscribe to a specific event type. Create multiple subscriptions to handle different events with different endpoints.

Request Body

FieldTypeRequiredDescription
event_type string Yes Event type to subscribe to (see event types table above)
webhook_url string Yes Your webhook endpoint URL (must be HTTPS)
description string No Human-readable description
filters object No Optional event filters (for future use)
Save Your Secret Key

The secret_key is returned only once during creation. Store it securely to verify webhook signatures.

Response (201 Created)

{
  "id": "f67f165d-0d1e-4eb7-81e6-3494a260dcd4",
  "event_type": "screening.completed",
  "webhook_url": "https://api.yourcompany.com/webhooks/screening",
  "secret_key": "whsec_A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6Q7R8S9T0U1V2W3X4Y5Z6",
  "message": "Webhook created successfully"
}

List Webhooks

GET /api/v1/webhooks/

Get all webhooks for your API key.

Response (200 OK)

{
  "webhooks": [
    {
      "id": "f67f165d-0d1e-4eb7-81e6-3494a260dcd4",
      "event_type": "screening.completed",
      "webhook_url": "https://api.yourcompany.com/webhooks/screening",
      "is_active": true,
      "description": "Production screening webhook",
      "filters": {},
      "created_at": "2026-01-19T10:30:00.123456+00:00",
      "stats": {
        "total_deliveries": 127,
        "successful_deliveries": 125,
        "failed_deliveries": 2
      },
      "last_triggered_at": "2026-01-22T08:15:30.987654+00:00"
    },
    {
      "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "event_type": "case.resolved",
      "webhook_url": "https://api.yourcompany.com/webhooks/cases",
      "is_active": true,
      "description": "Case resolution notifications",
      "filters": {},
      "created_at": "2026-01-18T14:20:00.123456+00:00",
      "stats": {
        "total_deliveries": 43,
        "successful_deliveries": 43,
        "failed_deliveries": 0
      },
      "last_triggered_at": "2026-01-21T16:45:22.543210+00:00"
    }
  ]
}

Response Fields

FieldTypeDescription
iduuidWebhook identifier
event_typestringSubscribed event type
webhook_urlstringWebhook endpoint URL
is_activebooleanWhether webhook is active
descriptionstringWebhook description
filtersobjectEvent filters (if any)
created_atstringISO 8601 timestamp
statsobjectDelivery statistics
last_triggered_atstringLast delivery timestamp (null if never triggered)

Get Webhook

GET /api/v1/webhooks/{webhook_id}/

Get detailed information about a specific webhook.

Path Parameters

ParameterTypeDescription
webhook_iduuidWebhook identifier

Response (200 OK)

{
  "id": "f67f165d-0d1e-4eb7-81e6-3494a260dcd4",
  "event_type": "screening.completed",
  "webhook_url": "https://api.yourcompany.com/webhooks/screening",
  "is_active": true,
  "description": "Production screening webhook",
  "filters": {},
  "created_at": "2026-01-19T10:30:00.123456+00:00",
  "updated_at": "2026-01-19T10:30:00.123456+00:00",
  "stats": {
    "total_deliveries": 127,
    "successful_deliveries": 125,
    "failed_deliveries": 2
  },
  "last_triggered_at": "2026-01-22T08:15:30.987654+00:00"
}

Update Webhook

PATCH /api/v1/webhooks/{webhook_id}/

Update webhook settings. All fields are optional.

Path Parameters

ParameterTypeDescription
webhook_iduuidWebhook identifier

Request Body

FieldTypeDescription
webhook_urlstringNew webhook URL
is_activebooleanEnable/disable webhook
descriptionstringUpdated description
filtersobjectUpdated filters

Response (200 OK)

{
  "message": "Webhook updated",
  "id": "f67f165d-0d1e-4eb7-81e6-3494a260dcd4"
}

Delete Webhook

DELETE /api/v1/webhooks/{webhook_id}/

Permanently delete a webhook. This action cannot be undone.

Path Parameters

ParameterTypeDescription
webhook_iduuidWebhook identifier

Response (200 OK)

{
  "message": "Webhook deleted successfully"
}

Test Webhook

POST /api/v1/webhooks/test/

Synchronously deliver a test event to the given URL and return the outcome. Delivery happens inline — no Celery worker is required. Accepts both API key and session (browser) authentication.

Request Body

FieldTypeRequiredDescription
webhook_url string Yes HTTPS URL to deliver the test event to

Response (200 OK — delivery succeeded)

{
  "success": true,
  "message": "Test webhook delivered successfully",
  "log_id": 4821,
  "http_status_code": 200
}

Response (502 — delivery failed)

{
  "success": false,
  "message": "Test webhook delivery failed: HTTP 404: Not Found",
  "log_id": 4822,
  "http_status_code": 404
}