AgentMessage
Webhooks

Replay a webhook delivery

POST
/v1/webhooks/deliveries/{id}/replay

Re-enqueue the original event for delivery to its endpoint. The replayed delivery carries the same data as the original attempt; publish-time filters are not re-evaluated. The replay arrives with a fresh event id (evt_<uuid>), so receivers should dedupe on the event id. Treat a replay the same as any other delivery.

You can pass an optional reason, which is recorded with the replay.

This endpoint is rate limited per organization (10 per minute by default). Bursts return 429 RATE_LIMITED with a Retry-After header. Listing and reading deliveries are not throttled.

If the original event has aged out of retention, there is nothing to replay and the endpoint returns 410 GONE with code: EVENT_EXPIRED.

Requires the webhooks:write scope.

AuthorizationBearer <token>

Authenticate by sending your API key as a bearer token: Authorization: Bearer am_live_.... Every request is automatically scoped to the organization that owns the key and to the scopes granted to that key.

In: header

Path Parameters

id*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/webhooks/deliveries/497f6eca-6276-4993-bfeb-53cbbbba6f08/replay" \  -H "Content-Type: application/json" \  -d '{}'
{
  "delivery_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3d4",
  "endpoint_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2a3b4",
  "event_type": "brand.vetted",
  "new_event_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2c0d0",
  "audit_log_id": "0190a1b2-c3d4-e5f6-a7b8-c9d0e1f2c0d1",
  "enqueued_at": "2026-04-29T14:35:00Z"
}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "authentication failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "missing required scope",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "not found",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "EVENT_EXPIRED",
    "message": "source event has been pruned and cannot be replayed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "validation failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
    "details": {
      "to": "must be E.164",
      "body": "must be 1..1600 chars"
    }
  }
}
{
  "success": false,
  "error": {
    "code": "RATE_LIMITED",
    "message": "rate limited",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}