List Webhook Deliveries
curl --request GET \
--url https://app.tuco.ai/api/webhooks/{id}/deliveries \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tuco.ai/api/webhooks/{id}/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.tuco.ai/api/webhooks/{id}/deliveries', 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://app.tuco.ai/api/webhooks/{id}/deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://app.tuco.ai/api/webhooks/{id}/deliveries"
req, _ := http.NewRequest("GET", 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.get("https://app.tuco.ai/api/webhooks/{id}/deliveries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tuco.ai/api/webhooks/{id}/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"deliveries": [
{
"id": "<string>",
"event": "<string>",
"eventId": {},
"deliveryId": {},
"messageId": {},
"status": "<string>",
"responseStatus": {},
"error": {},
"latencyMs": 123,
"attemptCount": 123,
"isTest": true,
"isReplayOf": {},
"url": "<string>",
"createdAt": "<string>"
}
],
"nextCursor": {}
}Webhooks
List Webhook Deliveries
List every delivery Tuco made to one webhook in the last 30 days: event, your endpoint’s status code, latency and attempts. Cursor-paginated.
GET
/
api
/
webhooks
/
{id}
/
deliveries
List Webhook Deliveries
curl --request GET \
--url https://app.tuco.ai/api/webhooks/{id}/deliveries \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tuco.ai/api/webhooks/{id}/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.tuco.ai/api/webhooks/{id}/deliveries', 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://app.tuco.ai/api/webhooks/{id}/deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://app.tuco.ai/api/webhooks/{id}/deliveries"
req, _ := http.NewRequest("GET", 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.get("https://app.tuco.ai/api/webhooks/{id}/deliveries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tuco.ai/api/webhooks/{id}/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"deliveries": [
{
"id": "<string>",
"event": "<string>",
"eventId": {},
"deliveryId": {},
"messageId": {},
"status": "<string>",
"responseStatus": {},
"error": {},
"latencyMs": 123,
"attemptCount": 123,
"isTest": true,
"isReplayOf": {},
"url": "<string>",
"createdAt": "<string>"
}
],
"nextCursor": {}
}Newest first. Deliveries are kept for 30 days. Includes live events, tests and replays.
Authentication
Authorization: Bearer tuco_xxxxxxxxxxxxx
Path parameters
string
required
Webhook ID.
Query parameters
number
default:"25"
Page size, 1–100.
string
success or failed.string
Only this event, e.g.
message.sent.string
nextCursor from the previous page.Response
array
Show delivery
Show delivery
string
Delivery id. Use it to get or replay the delivery.
string
Event type.
string | null
X-Tuco-Event-Id that was sent.string | null
X-Tuco-Delivery-Id that was sent.string | null
Tuco message id, when the event has one.
string
success (your endpoint returned 2xx) or failed.number | null
Your endpoint’s final HTTP status.
null on a timeout or network error.string | null
Why it failed.
number
Total time including the retry.
number
1, or 2 when Tuco retried.
boolean
Sent by the test endpoint.
string | null
For a replay: the id of the original delivery.
string
Endpoint URL it was sent to.
string
ISO 8601 UTC.
string | null
Pass as
cursor for the next page. null on the last page.| Status | When |
|---|---|
200 | OK |
400 | Invalid limit, status or cursor |
401 | Missing or invalid API key |
404 | Webhook not found in your workspace |
Example
curl "https://app.tuco.ai/api/webhooks/680a1b2c3d4e5f6789012345/deliveries?status=failed&limit=2" \
-H "Authorization: Bearer tuco_xxxxxxxxxxxxx"
{
"deliveries": [
{
"id": "6ad14a1e2f9c4b0012ab34cd",
"event": "message.sent",
"eventId": "evt_3f1c9a7e52b04d8a9c61e0f2",
"deliveryId": "dlv_8b2d4e6f10a3c5e7f9b1d3a5",
"messageId": "6ad119046e345bcbe00cd99b",
"status": "failed",
"responseStatus": 503,
"error": "HTTP 503: Service Unavailable",
"latencyMs": 5231,
"attemptCount": 2,
"isTest": false,
"isReplayOf": null,
"url": "https://hooks.example.com/tuco",
"createdAt": "2026-10-16T09:12:44.512Z"
}
],
"nextCursor": "6ad14a1e2f9c4b0012ab34cd"
}