Configuration
Configure webhook endpoints in the Embed Portal under Webhooks. Up to 5 endpoints per environment, each with its own signing secret.Test webhooks
Use the Webhook Playground in the Embed Portal to send test webhooks with selectable event types and custom payloads. This verifies both connectivity and your signature verification logic.Event types
Webhooks are sent when a scoring job finishes. Returning an already
completed scoring job through idempotency does not send a new score.completed webhook. See Idempotency for duplicate submission behavior.
Payload: score.completed
Payload: score.failed
Payload: batch.completed
completed (all succeeded) or failed (at least 1 failed).
Signature verification
Webhooks are signed with HMAC-SHA256. Always verify signatures. Headers:Using the SDK (recommended)
Manual verification
Signature header format:t=<unix_seconds>,v1=<hex_digest>. The digest covers {timestamp}.{raw_body}.
IP whitelisting
Signature verification is sufficient for most integrations. If your security policy requires IP whitelisting on top, contact us through the Embed Portal for current webhook source IP ranges.Retry policy
- Up to 5 attempts with exponential backoff and jitter
- Delay range: 1 minute to 30 minutes
GET /v1/jobs/{jobId}/applications/{applicationId}/scoring-jobs/{scoringJobId}.
Manual retry of failed scoring jobs
Portal admins can retry permanently failed scoring runs from the Monitoring page. A successful retry resets the samescoringJobId back to pending, so your webhook consumer may receive score.failed followed by score.completed (or another score.failed) for the same ID.
Deduplication
Use theX-Webhook-Id header as a deduplication key. This ID is stable across retries. Webhooks may be delivered more than once.