Retry Delivery
curl --request POST \
--url https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry', 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.flowiq.live/v1/webhooks/deliveries/{id}/retry",
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.flowiq.live/v1/webhooks/deliveries/{id}/retry"
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.flowiq.live/v1/webhooks/deliveries/{id}/retry")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry")
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{
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"webhook_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"platform": "whatsapp",
"event_type": "message_received",
"event_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"attempts": 123,
"max_attempts": 8,
"next_attempt_at": "2023-11-07T05:31:56Z",
"last_attempt_at": "2023-11-07T05:31:56Z",
"last_status_code": 123,
"last_error": "HTTP 503",
"last_duration_ms": 123,
"delivered_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
},
"attempted": true
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Delivery log
Retry Delivery
Send this event to the webhook again now, with the same body and event_id. Works for delivered, failed and dead deliveries. Scope: write.
POST
/
v1
/
webhooks
/
deliveries
/
{id}
/
retry
Retry Delivery
curl --request POST \
--url https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry', 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.flowiq.live/v1/webhooks/deliveries/{id}/retry",
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.flowiq.live/v1/webhooks/deliveries/{id}/retry"
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.flowiq.live/v1/webhooks/deliveries/{id}/retry")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flowiq.live/v1/webhooks/deliveries/{id}/retry")
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{
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"webhook_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"platform": "whatsapp",
"event_type": "message_received",
"event_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"attempts": 123,
"max_attempts": 8,
"next_attempt_at": "2023-11-07T05:31:56Z",
"last_attempt_at": "2023-11-07T05:31:56Z",
"last_status_code": 123,
"last_error": "HTTP 503",
"last_duration_ms": 123,
"delivered_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
},
"attempted": true
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Send this event to its webhook again, now, with the same body and
Needs the
event_id (so your deduplication still works). Use it after fixing your server, for dead deliveries, or to replay an event while developing. The response is the delivery after the attempt.
Basic Usage
curl -X POST "https://api.flowiq.live/v1/webhooks/deliveries/c0a1f3d2-5e6b-4a7c-9d8e-1f2a3b4c5d6e/retry" \
-H "Authorization: Bearer fiq_YOUR_API_KEY"
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The delivery id |
Response
Success (200)
{
"organization_id": "a4234f32-…",
"data": {
"id": "c0a1f3d2-5e6b-4a7c-9d8e-1f2a3b4c5d6e",
"event_type": "message_received",
"status": "delivered",
"attempts": 4,
"last_status_code": 200,
"last_error": null,
"delivered_at": "2026-10-27T01:02:11.000Z",
"…": "…"
},
"attempted": true
}
Errors
| Status | When |
|---|---|
404 | No such delivery on your account (not_found) |
409 | An attempt is running right now (delivery_in_flight); try again in a minute |
403 | The key has no write scope |
write scope. Accepts an Idempotency-Key.Authorizations
Your FlowIQ organisation API key (Settings → API Keys), sent as a bearer token. Format: Bearer fiq_YOUR_API_KEY
Path Parameters
Delivery id

