Skip to content

Redeliver a webhook

The webhook_deliveries.redeliver operation: POST /api/v1/webhook_deliveries/{id}/redeliver in the REST API and the webhook_deliveries_redeliver tool in the MCP server.

POST/api/v1/webhook_deliveries/{id}/redeliver

Sends a finished delivery's event to its endpoint again, as a new delivery with trigger: "redeliver" and redeliveryOf set: the same body and event id (deduplicate on it), signed anew. It is attempted once, right after the call, also when the endpoint is disabled; read the outcome with webhook_deliveries.get.

Use it after fixing a receiver, for events whose retries ran out or that were canceled while the endpoint was disabled. A delivery that is still being retried can't be redelivered.

At a glance

  • REST: POST /api/v1/webhook_deliveries/{id}/redeliver
  • MCP tool: webhook_deliveries_redeliver
  • Operation ID: webhook_deliveries.redeliver
  • Scope: Brand
  • Permission: webhooks:write
  • Risk tier: write
  • Dry run: Supported (send Ownrecord-Dry-Run: true)
  • Idempotency: Idempotency-Key required
  • Modes: Test and live
  • Authentication: API key with the webhooks:write scope
  • Since: M4

Request

Path parameters

FieldTypeDescription
idwhd_… ID

Body

This operation takes no body.

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

Redeliver a failed delivery

HTTP
POST /api/v1/webhook_deliveries/whd_01m4tx5nj8emwbyf7y9vcf47z2/redeliver
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14

Response (200):

JSON
{
  "id": "whd_01m4tx5nj8emwbyf7y9vcf47z3",
  "object": "webhook_delivery",
  "endpointId": "we_01m4tx5nj8emwbyf7y9vcf47z0",
  "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
  "livemode": false,
  "eventId": "evt_01m4tx5nj8emwbyf7y9vcf47z4",
  "eventType": "customer.created",
  "trigger": "redeliver",
  "redeliveryOf": "whd_01m4tx5nj8emwbyf7y9vcf47z2",
  "status": "pending",
  "attempt": 0,
  "maxAttempts": 1,
  "nextAttemptAt": "2026-10-14T10:30:00.000Z",
  "responseCode": null,
  "canceledReason": null,
  "attempts": [],
  "createdAt": "2026-10-14T10:30:00.000Z",
  "updatedAt": "2026-10-14T10:30:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
webhook_delivery_in_progress409The delivery is still pending (being retried).Wait until it succeeds or fails (see nextAttemptAt), then redeliver it if you need to.
resource_not_found404No delivery with this ID is visible to the request, or its endpoint was deleted.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't redeliver 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, invalid_json, unsupported_media_type, authentication_required, api_key_invalid, scope_required, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, approval_required, approval_rejected, approval_expired, stale_approval, approval_policy_denied, rate_limited, internal_error.