One event on its way to one destination, with its state, attempts, and what it sent.

One event on its way to one destination. Read one delivery on its own to get every attempt and the request it sent as well. Deliveries are kept for 30 days with their events.

{
  "id": "01m3my2b448ze30bp4dhxfa4wd",
  "eventId": "01m3my2b42vahrbx8zt4fw84wc",
  "destinationId": "01m3m5gpbttxs7xnhk0jgyt4wa",
  "connectionId": "01m3m5hezf7epksb7f8qbww4wb",
  "trigger": "event",
  "status": "retrying",
  "attempts": 2,
  "dueAt": "2026-09-28T14:09:54.612337Z",
  "firstAttemptAt": "2026-09-28T14:08:24.410092Z",
  "finishedAt": null,
  "lastStatusCode": 503,
  "lastError": "the destination answered 503",
  "lastErrorClass": "http",
  "createdAt": "2026-09-28T14:08:19.322803Z"
}

Fields

idstringRequired

The delivery’s ID, 26 lowercase letters and digits. Each attempt sends it as the X-Hooks-Delivery-Id header.

eventIdstringRequired

The ID of the event it carries.

destinationIdstringRequired

The ID of the destination it goes to.

connectionIdstring | nullRequired

The ID of the connection that made it, or null once that connection is deleted.

triggerstringRequired

event when a webhook arrived, or resend when a delivery was sent again.

statusDeliveryStatusRequired

pending, sending, retrying, delivered, failed, or cancelled. See space.hooks.deliveries for what each means.

attemptsintegerRequired

How many attempts have been made.

dueAtstring | nullRequired

When the next attempt is due, as an ISO 8601 date and time, or null when it has finished.

firstAttemptAtstring | nullRequired

When the first attempt started, or null before it.

finishedAtstring | nullRequired

When it was delivered, failed, or was cancelled, or null while it is still going.

lastStatusCodeinteger | nullRequired

The HTTP status the destination last answered with, or null when it gave no answer.

lastErrorstringRequired

Why the last attempt failed, or an empty string.

lastErrorClassstringRequired

The kind of failure, or an empty string:

  • http: the destination answered, but not with 2xx
  • redirect: the destination answered with a redirect, which is not followed
  • timeout: no answer within the destination’s timeoutSeconds
  • dns: the destination’s host name could not be found
  • tls: the secure connection could not be made
  • connect: the connection could not be made
  • blocked: the URL leads to a private or reserved network address
  • request: the request could not be sent
  • lost: the attempt stopped before it finished, so it is tried again
  • transformation: the connection’s transformation failed
  • cancelled: the delivery was cancelled
createdAtstringRequired

When the delivery was made, as an ISO 8601 date and time.

With attempts

space.hooks.deliveries.get() returns a DeliveryDetail: every field above, and these two.

{
  "attemptList": [
    {
      "number": 1,
      "startedAt": "2026-09-28T14:08:24.410092Z",
      "durationMs": 202,
      "statusCode": 503,
      "errorClass": "http",
      "error": "the destination answered 503",
      "responseExcerpt": "Service unavailable"
    }
  ],
  "sent": {
    "headers": [
      { "name": "Content-Type", "value": "application/json" },
      { "name": "X-Order-Id", "value": "DSM-10482" }
    ],
    "body": "{\"orderId\":\"DSM-10482\",\"amountTzs\":45000}",
    "bodyEncoding": "text"
  }
}
attemptListobject[]Required

Every attempt, first to last. Each has its number from 1, startedAt, durationMs, the statusCode it got or null, the errorClass and error when it failed, and a responseExcerpt: the start of the destination’s answer.

sentSentRequest | nullRequired

The headers and body the connection’s transformation made, sent on every attempt, with bodyEncoding set to text or base64. The destination’s authentication and signing headers are not shown. null when there was no transformation, or before the first attempt.

Returned by

Last updated