Skip to main content
This reference documents every webhook event FaceSign sends, including payload schemas, delivery timing, and retry behavior.
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 a media field include:
Media URLs are signed and expire 15 minutes after generation. Download and store any media you need immediately upon receiving the webhook.

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 with videoAIAnalysisEnabled: 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.
After all retries are exhausted, the event is dropped. Monitor your endpoint health to avoid missing events.

Idempotency

Webhooks may be delivered more than once. Every event has a unique id field. Use this id to deduplicate events in your handler:
  1. Before processing, check whether you have already handled an event with this id.
  2. If yes, return 200 immediately and skip processing.
  3. If no, process the event and record the id as handled.
Store processed event IDs in a persistent store (database, Redis) rather than in-memory, so deduplication survives application restarts.

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