curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"delivery_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"event_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"endpoint_id": "c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01",
"limit": 50
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed"
payload = {
"delivery_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"event_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"endpoint_id": "c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01",
"limit": 50
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
delivery_id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
event_id: 'd4e5f6a7-b8c9-0123-4567-89abcdef0123',
endpoint_id: 'c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01',
limit: 50
})
};
fetch('https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed', 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-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'delivery_id' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
'event_id' => 'd4e5f6a7-b8c9-0123-4567-89abcdef0123',
'endpoint_id' => 'c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01',
'limit' => 50
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed"
payload := strings.NewReader("{\n \"delivery_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"event_id\": \"d4e5f6a7-b8c9-0123-4567-89abcdef0123\",\n \"endpoint_id\": \"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01\",\n \"limit\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"delivery_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"event_id\": \"d4e5f6a7-b8c9-0123-4567-89abcdef0123\",\n \"endpoint_id\": \"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01\",\n \"limit\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"delivery_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"event_id\": \"d4e5f6a7-b8c9-0123-4567-89abcdef0123\",\n \"endpoint_id\": \"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01\",\n \"limit\": 50\n}"
response = http.request(request)
puts response.read_body{
"status_code": 202,
"data": {
"replayed_count": 3
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Replay Failed Webhook Deliveries
Try sending your failed webhook notifications again.
Sometimes a notification can’t reach your server (for example, your server was briefly down). This endpoint takes those failed notifications and tries to send them again right away.
Choosing what to resend
You can add one or more of these optional filters to control what gets resent:
delivery_id— resend just one specific notificationevent_id— resend every failed notification for one specific eventendpoint_id— resend every failed notification for one specific webhooklimit— the most notifications to resend at once (default 100, up to 500)
If you don’t add any filters, the most recent failed notifications are
resent, up to the limit.
curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"delivery_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"event_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"endpoint_id": "c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01",
"limit": 50
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed"
payload = {
"delivery_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"event_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"endpoint_id": "c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01",
"limit": 50
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
delivery_id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
event_id: 'd4e5f6a7-b8c9-0123-4567-89abcdef0123',
endpoint_id: 'c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01',
limit: 50
})
};
fetch('https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed', 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-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'delivery_id' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
'event_id' => 'd4e5f6a7-b8c9-0123-4567-89abcdef0123',
'endpoint_id' => 'c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01',
'limit' => 50
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed"
payload := strings.NewReader("{\n \"delivery_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"event_id\": \"d4e5f6a7-b8c9-0123-4567-89abcdef0123\",\n \"endpoint_id\": \"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01\",\n \"limit\": 50\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"delivery_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"event_id\": \"d4e5f6a7-b8c9-0123-4567-89abcdef0123\",\n \"endpoint_id\": \"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01\",\n \"limit\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/webhooks/deliveries/replay-failed")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"delivery_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"event_id\": \"d4e5f6a7-b8c9-0123-4567-89abcdef0123\",\n \"endpoint_id\": \"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01\",\n \"limit\": 50\n}"
response = http.request(request)
puts response.read_body{
"status_code": 202,
"data": {
"replayed_count": 3
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Replay selector for failed webhook deliveries (platform API).
Provide at least one filter, or omit all to replay up to limit
most-recent failures.
Replay a single delivery by UUID.
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Replay all failed deliveries for a specific event.
"d4e5f6a7-b8c9-0123-4567-89abcdef0123"
Replay all failed deliveries for a specific endpoint.
"c3a1e8b2-4f6d-4a9c-b2e1-8f3d5a7c9e01"
Maximum number of deliveries to replay.
1 <= x <= 50050
Response
How many failed deliveries were queued to resend.
Standard response wrapper for single-object responses and errors.
Generic over the payload type. A route that declares
CommonResponse[SomeModel] gets the real data schema rendered in
OpenAPI/Swagger; a bare CommonResponse leaves data untyped.

