Run reached the completed state.
Sent once a run settles successfully, after billing has committed, so displayedChargeUsd on the run is final. Delivery is at-least-once. Each attempt has a 5 second timeout; a 5xx, 408, 425, 429, connection error, or timeout is retried with exponential backoff (up to 6 attempts over roughly 9 hours, honouring a longer Retry-After). Any other 4xx or a redirect is treated as a permanent rejection and is not retried. Because an event can therefore arrive more than once, deduplicate on the edgaze-delivery-id header, which is stable across retries. Endpoints are delivered in parallel and ordering is not guaranteed. An endpoint whose deliveries fail 15 times consecutively is paused until it is re-enabled in the developer console. Return 2xx as soon as you have persisted the payload, and do the real work asynchronously.
Headers
Signature of this delivery, formatted t=<unix seconds>,v1=<hex hmac>. Signed with HMAC-SHA256 over the exact string {t}.{raw request body}, using your endpoint secret. Compare in constant time against the raw bytes you received, before JSON parsing: re-serializing the body changes the signature. Reject any delivery whose t is more than 300 seconds from your clock, otherwise a captured payload can be replayed indefinitely.
UUID of the endpoint that this delivery was sent to. Use it to select the right secret when one receiver serves several endpoints.
UUID of this delivery, repeated byte-for-byte on every retry of the same event. This is the deduplication key: record it once you have processed a delivery and return 2xx without reprocessing if it arrives again. Absent only on a manual test delivery, which is never retried.
1-indexed attempt number for this delivery. A value above 1 means an earlier attempt did not return 2xx.
Event type carried by the payload, so a receiver can route the delivery before parsing the body.
Payload
Response
Acknowledge receipt. Any 2xx settles the delivery. A 5xx, 408, 425, 429, timeout, or connection error is retried with backoff; any other 4xx or a redirect permanently fails the delivery.
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.