Redeliver Delivery
curl --request POST \
--url https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "webhook_redelivery",
"delivery_attempt_id": "dlv_9f3c1a7b2e4d6580",
"request_id": "req_4nRvXq2T"
}
Webhooks
Redeliver Delivery
Manually re-attempt a delivery for an existing event
POST
/
v1
/
webhooks
/
{id}
/
deliveries
/
{did}
/
redeliver
Redeliver Delivery
curl --request POST \
--url https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/webhooks/{id}/deliveries/{did}/redeliver")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "webhook_redelivery",
"delivery_attempt_id": "dlv_9f3c1a7b2e4d6580",
"request_id": "req_4nRvXq2T"
}
Credits: 0 per request.
Overview
Queues a new delivery attempt for the same underlying event as the original delivery. The new attempt carries a freshwebhook-timestamp (so freshness checks on your side pass) and a new
delivery_attempt_id, but the same webhook-id as the original, so your handler can still
dedupe on it. This endpoint is billable.
Requires the portfolios:manage scope.
Only terminal deliveries are redeliverable
Redelivery is accepted only when the delivery’s automatic retry chain has reached a terminal state:delivered, exhausted, or a failed
attempt with no scheduled retry. If the chain is still live (the attempt
is pending, or failed with an automatic retry still scheduled), the
request returns 409 with error type redelivery_conflict. The
automatic retry schedule (7 attempts over ~24 hours) is already working
that delivery; redelivering mid-chain would race it. Poll
GET /v1/webhooks/{id}/deliveries/{did}
until the attempt is terminal, then redeliver.
Repeated redelivery of the same terminal attempt is idempotent: the API
returns the existing queued attempt’s delivery_attempt_id instead of
creating a duplicate.
Path Parameters
string
required
Endpoint ID (
whk_*).string
required
Original delivery attempt UUID.
Response
string
Always
"webhook_redelivery".string
Opaque
dlv_* identifier for this specific attempt.string
Request identifier.
Code Examples
curl -X POST "https://api.signa.so/v1/webhooks/whk_2mR8vNkT/deliveries/018f9b2e-0000-7000-8000-000000000010/redeliver" \
-H "Authorization: Bearer sig_YOUR_KEY" \
-H "Idempotency-Key: redeliver-018f9b2e-2026-06-12"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const result = await signa.webhooks.redeliver(
"whk_2mR8vNkT",
"018f9b2e-0000-7000-8000-000000000010",
);
{
"object": "webhook_redelivery",
"delivery_attempt_id": "dlv_9f3c1a7b2e4d6580",
"request_id": "req_4nRvXq2T"
}
Related Endpoints
- List Deliveries - find the delivery to redeliver
- Test Webhook - send a synthetic ping instead of replaying a real event