GET /api/v1/customers/kyc/liveliness/output instead.
Events
in_progress never fires a webhook — only terminal transitions do.
Delivery
- Signature:
HMACSHA512(key = your webhook secret, message = raw request body bytes), hex-encoded, lowercase. Recompute it over the exact bytes received (before any re-serialization) and compare to thex-embedly-signatureheader to verify authenticity. - Timeout: 10 seconds per attempt.
- Retries: up to 5 attempts total on non-2xx response or timeout. Production backoff: 5 min → 5 min → 60 min → 240 min after attempts 1–4 (attempt 5 is final — no further retry). Staging/Development use a flat 2-minute delay between every retry. After the 5th failed attempt the event is marked
Failedand not retried again. - Delivery is at-least-once — treat handlers as idempotent; use
data.submissionId+eventto dedupe if you log deliveries on your side.
Payload
customer.liveness.declined / customer.liveness.needs_review, failureReason is populated when HyperVerge supplied one: