Skip to content

Get a webhook delivery

The webhook_deliveries.get operation: GET /api/v1/webhook_deliveries/{id} in the REST API and the webhook_deliveries_get tool in the MCP server.

GET/api/v1/webhook_deliveries/{id}

Returns one webhook delivery with its attempts: when each was made, its outcome, the HTTP status your endpoint answered with and the start of the response body; and, while it is still being retried, nextAttemptAt.

At a glance

  • REST: GET /api/v1/webhook_deliveries/{id}
  • MCP tool: webhook_deliveries_get
  • Operation ID: webhook_deliveries.get
  • Scope: Brand
  • Permission: webhooks:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Authentication: API key with the webhooks:read scope
  • Since: M4

Request

Path parameters

FieldTypeDescription
idwhd_… ID

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
idwhd_… ID
object"webhook_delivery"
endpointIdwe_… ID
brandIdbrd_… ID
livemodeboolean
eventIdevt_… ID
eventTypestring
triggerone of event, test, redeliver
redeliveryOfwhd_… ID or null
statusone of pending, succeeded, failed, canceled
attemptinteger (at least 0)
maxAttemptsinteger (at least 1)
nextAttemptAtdate-time or null
responseCodeinteger or null
canceledReasonone of endpoint_disabled, endpoint_deleted or null
attemptsarray of object
attempts[].attemptinteger (at least 1)
attempts[].atdate-time
attempts[].outcomeone of succeeded, http_error, timeout, network_error, blocked
attempts[].responseCodeinteger or null
attempts[].responseExcerptstring or null
attempts[].durationMsinteger (at least 0) or null
attempts[].errorstring or null
createdAtdate-time
updatedAtdate-time

Examples

A delivery that succeeded on its second attempt

HTTP
GET /api/v1/webhook_deliveries/whd_01m4tx5nj8emwbyf7y9vcf47z2
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "id": "whd_01m4tx5nj8emwbyf7y9vcf47z2",
  "object": "webhook_delivery",
  "endpointId": "we_01m4tx5nj8emwbyf7y9vcf47z0",
  "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
  "livemode": false,
  "eventId": "evt_01m4tx5nj8emwbyf7y9vcf47z4",
  "eventType": "customer.created",
  "trigger": "event",
  "redeliveryOf": null,
  "status": "succeeded",
  "attempt": 2,
  "maxAttempts": 15,
  "nextAttemptAt": null,
  "responseCode": 200,
  "canceledReason": null,
  "attempts": [
    {
      "attempt": 1,
      "at": "2026-10-13T12:00:00.000Z",
      "outcome": "http_error",
      "responseCode": 503,
      "responseExcerpt": "Service Unavailable",
      "durationMs": 812,
      "error": null
    },
    {
      "attempt": 2,
      "at": "2026-10-13T12:01:00.000Z",
      "outcome": "succeeded",
      "responseCode": 200,
      "responseExcerpt": "ok",
      "durationMs": 95,
      "error": null
    }
  ],
  "createdAt": "2026-10-13T12:00:00.000Z",
  "updatedAt": "2026-10-13T12:01:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No delivery with this ID is visible to the request.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't see this brand's webhooks.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, scope_required, dry_run_not_supported, rate_limited, internal_error.