---
title: Redeliver a webhook (POST /api/v2/webhook-endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliver) | HelpRange API
description: POST /api/v2/webhook-endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliver: The delivery log&#x27;s &quot;Resend&quot;: one immediate attempt with the same event id (deduplicate on it), no automatic retries after it.
url: https://www.helprange.com/developers/api/redeliver-webhook-delivery
---

POST

# Redeliver a webhook

`https://www.helprange.com/api/v2/webhook-endpoints/{endpoint_id}/deliveries/{delivery_id}/redeliver`

The delivery log's "Resend": one immediate attempt with the same event id (deduplicate on it), no automatic retries after it. 409 endpoint_disabled while the endpoint is off. Scope webhooks:manage; team administrators only (403 otherwise); live keys only – test keys get 400 livemode_required (the sandbox sends no webhooks).

**Plans:** Pro, Max, Unlimited, Deal Room Pass, trial. **Auth:** `Authorization: Bearer hr_live_…` (team key), `X-API-Key`, `Authorization: Api-Key <key>` or an OAuth `Bearer` token. **Scope:** `webhooks:manage`. **Operation id:** `redeliverWebhookDelivery`

## Parameters

| Name | In | Type | Description |
|---|---|---|---|
| `endpoint_id` required | path | integer | Webhook endpoint id (from List webhook endpoints). (min 1) |
| `delivery_id` required | path | integer | Delivery id (from List webhook deliveries). (min 1) |

**Header** `Idempotency-Key` (optional, up to 255 characters): retry with the same key and body within 24 hours and you get the first response back (`Idempotent-Replayed: true`) – the request is not run twice. Another body: `422 idempotency_key_reused`; still running: `409 idempotency_key_in_progress`. [More](https://www.helprange.com/developers/api#idempotency).

## Example request

```
curl -X POST https://www.helprange.com/api/v2/webhook-endpoints/3/deliveries/812/redeliver \
  -H "X-API-Key: $HELPRANGE_API_KEY"
```

```
const res = await fetch('https://www.helprange.com/api/v2/webhook-endpoints/3/deliveries/812/redeliver', {
  method: 'POST',
  headers: {'X-API-Key': process.env.HELPRANGE_API_KEY},
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status}: ${data.error || data.message || data.reason}`);
console.log(data);
```

```
import os

import requests

r = requests.post(
    'https://www.helprange.com/api/v2/webhook-endpoints/3/deliveries/812/redeliver',
    headers={'X-API-Key': os.environ['HELPRANGE_API_KEY']},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

The samples read the key from the `HELPRANGE_API_KEY` environment variable.

## Responses

| Status | Description |
|---|---|
| `200` | OK |
| `401` | Missing or invalid API key / OAuth token. Team keys: code invalid_key, key_revoked, key_expired or key_owner_removed. |
| `402` | Your plan does not include the REST API (the Free plan) or this feature (e.g. NDA needs Max). |
| `403` | The team API key lacks the scope this endpoint needs. |
| `404` | Not found – or not yours (the API never says which). |
| `405` | Wrong HTTP method for this endpoint. |
| `409` | The data room is frozen, the signed PDF is not ready yet, (webhooks) the team already has an endpoint / the endpoint is turned off, or (code idempotency_key_in_progress) a request with the same Idempotency-Key is still running – retry in a few seconds. |
| `422` | code idempotency_key_reused: this Idempotency-Key was already used in the last 24 hours with a different request (method, path or body). Use a new key for a new request. |
| `429` | A usage limit was reached – wait Retry-After seconds. |

Example response · 200

```
{
  "id": 812,
  "event_id": "evt_3f9c2b7e0d1a4c5b8e6f7a9d0c1b2e3f",
  "event_type": "document.opened",
  "status": "delivered",
  "test": false,
  "attempts": 2,
  "last_status_code": 200,
  "last_error": null,
  "last_duration_ms": 143,
  "created_at": "2026-11-15T09:12:03+00:00",
  "last_attempt_at": "2026-11-15T09:12:03+00:00",
  "next_attempt_at": null,
  "delivered_at": "2026-11-15T09:12:03+00:00",
  "payload": {
    "id": "evt_3f9c2b7e0d1a4c5b8e6f7a9d0c1b2e3f",
    "event": "document.opened",
    "api_version": "2026-11-15",
    "created_at": "2026-11-15T09:12:03.512345Z",
    "data": {}
  },
  "delivered": true
}
```

## Try it

**Uses your real account.** The request goes from your browser straight to `www.helprange.com` with your API key and acts as you – this POST **changes data**. The key stays in this page (in this tab's session storage only if you tick the box), is never put in a URL and is not sent to analytics. Do not paste a key on a shared computer.
 API key

  Remember in this tab

endpoint_id (path, required)

delivery_id (path, required)

```

```
