Graphon Engine

Get webhook delivery

Read one delivery with the event’s exact JSON and every attempt.

GET/webhooks/{webhook}/deliveries/{event}

PermissionCluster key, or a scoped key with read on a namespace or collection that the webhook covers. Key scopes and actions.

  • Match a POST that your receiver logged by its batch_id (the webhook-id header) and sent_at.
  • Returns 404 when the webhook never queued the event, the event is older than 30 days, or the key cannot see it.

Path parameters

webhookstringrequired

Webhook ID with the whk_ prefix, or the webhook’s name.

eventstringrequired

Event ID with the evt_ prefix, from the event body or the delivery log.

Responses

200Success

A delivery whose first POST got 503 and whose retry got 204.

application/json

Response headers

x-engine-request-idstringrequired

The Engine request ID. Retain it when investigating a failed or unexpected request.

x-request-idstringrequired

The X-Request-Id you sent, echoed when it is a valid ID. Otherwise, the Engine request ID.

attempt_countintegerrequired

POSTs of the event’s batch since the event was last queued. A replay starts the count again.

attemptsarray<object>required

Every POST of every batch that held the event in the last 30 days, oldest first, replays included.

bodymap<string, JSON value>required

The event’s exact JSON inside its batch.

collectionstringrequiredaccepts null

Collection name that the event names, or null.

event_idstringrequired

The event’s evt_ ID. It is the same at every webhook and in every retry or replay.

event_typestringrequired

The event’s type, such as file.status_changed.

last_attemptobjectrequiredaccepts null

The last POST of the newest batch that held the event. Null before the first POST.

namespacestringrequiredaccepts null

Namespace name that the event names, or null.

next_attempt_atstring (date-time)requiredaccepts null

When the next POST of a retrying batch goes. Otherwise null.

occurred_atstring (date-time)required

Time of the status change, as an ISO 8601 UTC timestamp.

queued_atstring (date-time)required

When the event was queued for this webhook, or queued again by a replay.

statusstringrequired

pending (queued, or waiting for a retry), succeeded, or failed (a 3xx or 4xx answer, or the webhook turned off while the event waited).

pending
Queued, or waiting for a retry.
succeeded
The receiver answered 2xx to a batch that held the event.
failed
Engine will not send the event again unless you replay it.

Errors

Select an error in the response example to see its JSON body. See error handling for the common error format.

400invalid_request

A field, path, parameter, or conditional request rule is invalid.

What to do: Correct the request. Unknown fields are rejected.

401unauthenticated

The API key is missing, invalid, or revoked.

What to do: Send an active key in Authorization: Bearer or X-API-Key.

403forbidden

The key can see the resource but lacks permission for this operation.

What to do: Use a key with the required action or scope kind.

404not_found

The resource is absent, deleted, or outside this key’s scope.

What to do: Check the identifier and the key’s namespace and collection scope.

503temporarily_unavailable

A dependency, cluster readiness condition, or capacity limit prevents this operation.

What to do: Inspect retryable and details. Retry only when permitted, preserving the idempotency key for the same write.

500internal_error

An unexpected server failure prevented this request from completing.

What to do: Retain request_id for investigation. Follow retryable before retrying a write.

Was this page helpful?
View as Markdown