For a guide on setting up webhook endpoints and handling events in your application, see Webhooks.
Common payload structure
Every webhook event includes these fields:Media object
Events with amedia field include:
Event types
session.status
Fires whenever a session’s status changes. You receive this event for every transition in the lifecycle:created, inProgress, incomplete, and complete.
When it fires: On every status change.
Payload:
The payload does not include the new status value. Fetch the session via
GET /sessions/:id to read the current status and report data.media.user_photo
Fires when a user’s selfie or face capture photo is ready for download. When it fires: After a face capture completes during the session. Payload:media.document_photo
Fires when a scanned document photo is ready for download. When it fires: After the user completes a document scan node. Payload:media.user_video
Fires when the full session recording video is processed and ready for download. When it fires: After the session ends and the video has been prepared. Payload:analysis.video
Fires when post-session video AI analysis completes. This event only fires for sessions withvideoAIAnalysisEnabled: true.
When it fires: 5—20 seconds after the session ends.
Payload:
The analysis results are not included in the webhook payload. Fetch the session via
GET /sessions/:id to read the videoAIAnalysis field on the report.analysis.screenshot
Fires when screenshot-based AI analysis completes. When it fires: Shortly after the session ends, once screenshot analysis has been processed. Payload:settings.avatars
Fires when the list of available avatars changes on the FaceSign platform. This is a platform-level event, not tied to a specific session. When it fires: When avatars are added, removed, or updated. Payload:settings.langs
Fires when the list of available languages changes on the FaceSign platform. When it fires: When supported languages are added or removed. Payload:Event summary
Retry behavior
FaceSign retries failed webhook deliveries using exponential backoff:
Response handling:
- HTTP 200 — Event acknowledged. No retry.
- HTTP 4xx — Client error. FaceSign does not retry (the payload is considered invalid by your endpoint).
- HTTP 5xx — Server error. FaceSign retries according to the schedule above.
Idempotency
Webhooks may be delivered more than once. Every event has a uniqueid field. Use this id to deduplicate events in your handler:
- Before processing, check whether you have already handled an event with this
id. - If yes, return
200immediately and skip processing. - If no, process the event and record the
idas handled.
Next steps
Add Webhooks
Set up webhook endpoints in your application
Reports & Outcomes
Understand the session report data you receive
Errors
API error codes and troubleshooting