review.completed

Fires once when a review ends with every planned deep check done. The body is ReviewWebhookPayload, not WebhookPayload: switch on event and dedupe on event_id. A review's own deep checks fire no verification.* events.

postWebhookreview.completed

Payload

event'review.completed' | 'review.failed' | 'review.cancelled' required
event_idstring required
review_idstring required
status'completed' | 'failed' | 'cancelled' required
attemptinteger required
delivered_atstring required

Response

Your endpoint should return 2xx within 5 seconds. Non-2xx triggers retries at 10s / 60s / 600s (3 retries after the initial delivery, 4 attempts total).

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.