🔔 Webhooks & EventsWebhook Endpoints

Redeliver an event to this endpoint

Send an event to this endpoint again, with its original payload, and to no other endpoint. A new webhook delivery is created and queued at once; its attempts and retries are separate from earlier deliveries. While a redelivery of the same event to this endpoint is still pending, calling this again returns that delivery (200) instead of creating another. The endpoint must be enabled and subscribed to the event's type. Send an Idempotency-Key to make a retried request safe.

POST/webhook-endpoints/{id}/redeliver

Send an event to this endpoint again, with its original payload, and to no other endpoint. A new webhook delivery is created and queued at once; its attempts and retries are separate from earlier deliveries. While a redelivery of the same event to this endpoint is still pending, calling this again returns that delivery (200) instead of creating another. The endpoint must be enabled and subscribed to the event's type. Send an Idempotency-Key to make a retried request safe.


Related endpoints

  • GET /webhook-endpoints — List webhook endpoints
  • POST /webhook-endpoints — Create webhook endpoint
  • GET /webhook-endpoints/{id} — Get webhook endpoint
  • PATCH /webhook-endpoints/{id} — Update webhook endpoint
  • DELETE /webhook-endpoints/{id} — Delete webhook endpoint
  • POST /webhook-endpoints/{id}/rotate-secret — Rotate signing secret

Common errors

  • 401 authentication_error — missing, invalid, expired, or revoked credential. Codes: authentication_failed, invalid_api_key, expired_api_key, api_key_revoked, session_invalid, merchant_required. Carries a WWW-Authenticate: Bearer challenge.
  • 404 resource_missing — the referenced resource does not exist or is not visible to your key.
  • 409 conflict — Idempotency-Key collision with a different body, or a concurrent state-transition conflict.

Idempotency

Pass an Idempotency-Key header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see the idempotency guide.

x-api-key<token>

Your RevKeen merchant API key. Create and manage keys in Dashboard → Settings → Developer. Use rk_sandbox_* for staging/test and rk_live_* for production. The same key may be sent as Authorization: Bearer <key> if that suits your HTTP client better. A missing, invalid, expired, or revoked key returns 401 with a WWW-Authenticate: Bearer challenge; a valid key without the required scope returns 403.

In: header

Path Parameters

id*string

Webhook endpoint ID

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

Stuck on an error response? Ask the RevKeen assistant to explain it.
curl -X POST "https://api.revkeen.com/v2/webhook-endpoints/11111111-1111-4111-8111-111111111111/redeliver" \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_id": "11111111-1111-4111-8111-111111111111"
  }'

Synthetic documentation data, validated against the response schema; not a live API result.

{  "data": {    "id": "550e8400-e29b-41d4-a716-446655440000",    "object": "webhook_delivery",    "endpoint_id": "7c1cbf21-0b6c-4c27-9d60-8a9f0a7e6d91",    "event_id": "1f8d9e0b-3a2e-4d9a-b0fe-1c2a3f4d5e6f",    "event_type": "invoice.paid",    "status": "pending",    "attempts": 2,    "max_attempts": 8,    "last_status_code": 502,    "last_error": "connect ETIMEDOUT",    "last_error_code": "ETIMEDOUT",    "last_duration_ms": 1532,    "last_attempt_at": "2019-08-24T14:15:22Z",    "next_retry_at": "2019-08-24T14:15:22Z",    "delivered_at": "2019-08-24T14:15:22Z",    "dead_lettered_at": "2019-08-24T14:15:22Z",    "dead_letter_reason": "string",    "created_at": "2026-09-01T12:00:00Z",    "updated_at": "2026-09-01T12:00:00Z"  }}

Put this endpoint to work