Webhook Integration
This documentation will guide you through the integration process of webhooks provided by Zyphe.
Prerequisites
Ensure that you have created a Flow in the Zyphe Dashboard, with your webhook URL configured.
Integration Steps
Follow the steps below to integrate webhooks into your application:
- Register the webhook URL Configure your webhook URL in the Flow settings via the Zyphe Dashboard.
- Create a link Create a link on your website that directs to your Flow link. You can copy the link from the Zyphe Dashboard.
- User Verification The user clicks the link on your website and is redirected to the Zyphe platform.
- Zyphe sends results to your webhook Once a verification step is completed, Zyphe sends the result via a
POSTrequest with aJSONpayload to your webhook URL.
Payload Structure
Every webhook payload follows this top-level structure:
{
"resultId": "f49d3a83-3dac-464a-b97a-bd8f7f1fa9b9",
"event": "COMPLETED",
"data": {
"<type>": {
// ... step-specific result data
}
},
"custom": {},
"flowStatus": "COMPLETED"
}
resultId— The flow result identifier.event— The outcome of the verification step. Possible values:COMPLETED,FAILED,REVIEW,REJECTED.data— Contains the result for the specific step type. The key corresponds to the step type:dv,poa,form,phone,wallet, orspid. Only one key is present per webhook call.custom— Custom data associated with the flow result (see Custom Fields).flowStatus— The overall status of the flow (e.g.,COMPLETED,FAILED,REQUIRES_MANUAL_REVIEW).
Example: Document Verification Success
{
"resultId": "f49d3a83-3dac-464a-b97a-bd8f7f1fa9b9",
"event": "COMPLETED",
"data": {
"dv": {
"version": 0,
"id": "d65fa9a0-596e-4d7e-afd1-59a23bfb5a74",
"verificationRequestId": "e0da16b2-bebc-46ee-aa23-3d92a4dc818e",
"flowId": "2d8285d7-f4ba-42df-ab3f-681d9870d37a",
"flowStepId": "03559a0f-be8e-4ab7-964d-1ff4745d92a4",
"createdAt": "2025-04-25T19:32:14.558006634Z",
"customData": {},
"status": "PASSED",
"reasons": [],
"documentId": "f915626947e64baf9a1454c6e662ecd1",
"documentType": "Driving License",
"class": "web-mobile",
"platform": "iOS",
"browser": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)...",
"scoreBiometricSelfie": 99,
"errorMessage": null,
"processAdditionalData": {},
"identityEmail": "user@example.com"
}
},
"custom": {},
"flowStatus": "COMPLETED"
}
Example: Document Verification Failure
{
"resultId": "7fd1c306-7830-4261-b372-181f742055ef",
"event": "FAILED",
"data": {
"dv": {
"version": 0,
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"verificationRequestId": "d72b7afc-6841-4478-9d21-3e8dd3d26695",
"flowId": "2d8285d7-f4ba-42df-ab3f-681d9870d37a",
"flowStepId": "03559a0f-be8e-4ab7-964d-1ff4745d92a4",
"createdAt": "2025-04-25T10:05:51.851407Z",
"customData": {},
"status": "FAILED",
"reasons": ["DOCUMENT_EXPIRED", "LOW_QUALITY"],
"documentId": "abcc8e8b7b354cb9978c40b66de2bae3",
"documentType": "Driving License",
"class": "web-mobile",
"platform": "iOS",
"browser": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)...",
"scoreBiometricSelfie": 99,
"errorMessage": null,
"processAdditionalData": {},
"identityEmail": "user@example.com"
}
},
"custom": {},
"flowStatus": "FAILED"
}
For full details on all step-type payloads (DV, PoA, Form, Phone, Wallet, SPID), see the Webhook Payload page.
By following these integration steps, you can receive real-time verification results via webhook. This allows you to update your systems automatically as users complete verification flows on the Zyphe platform.