Registering a webhook
secret — store it securely. It is shown only once.
Signature verification
Every webhook delivery includes anX-Edpire-Signature header. Always verify it before processing:
Available events
Assessments with open-ended questions
The same signal is available on the REST surface:POST /assessments/{id}/submit returns
awaiting_manual_grading, and the results and submission endpoints return is_fully_graded.
Retry behavior
If your endpoint returns a non-2xx status, Edpire retries with exponential backoff:
After the initial delivery plus 4 retries, the delivery is abandoned and the webhook endpoint is marked as
failing. Use GET /api/v1/webhooks/deliveries to inspect delivery history and diagnose failures.
Best practices
Respond with 200 immediately
Respond with 200 immediately
Respond before processing. Move heavy logic to a background queue to avoid timeouts.
Handle idempotency
Handle idempotency
The same event can be delivered more than once. Always check whether you’ve already processed a given
submission_id before writing to your database.Log everything
Log everything
Log all incoming events for debugging. The
X-Edpire-Event header tells you the event type without parsing the body.Handle unknown events
Handle unknown events
New event types may be added in future versions. Ignore events you don’t recognize rather than erroring.