List webhook deliveries
curl --request GET \
--url https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.truthlocks.com/v1/webhooks/endpoints/{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://api.truthlocks.com/v1/webhooks/endpoints/{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 => [
"X-API-Key: <api-key>"
],
]);
$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.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"event_type": "<string>",
"status_code": 123,
"delivered_at": "<string>",
"success": true
}
]
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}Webhooks
List deliveries
Returns delivery history for a webhook endpoint.
GET
/
v1
/
webhooks
/
endpoints
/
{id}
/
deliveries
List webhook deliveries
curl --request GET \
--url https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.truthlocks.com/v1/webhooks/endpoints/{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://api.truthlocks.com/v1/webhooks/endpoints/{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 => [
"X-API-Key: <api-key>"
],
]);
$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.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truthlocks.com/v1/webhooks/endpoints/{id}/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"event_type": "<string>",
"status_code": 123,
"delivered_at": "<string>",
"success": true
}
]
}{
"code": "AUTH_REQUIRED",
"message": "Authentication required",
"http_status": 401
}Returns the most recent delivery attempts for a webhook endpoint (up to 50). Use this to monitor delivery health, debug failures, and verify that events are reaching your server.
Parameters
uuid
required
The ID of the webhook endpoint
Delivery statuses
| Status | Description |
|---|---|
pending | Delivery is queued and has not been attempted yet |
delivered | Your endpoint returned a 2xx status code |
failed | Delivery failed but may be retried |
dead | All retry attempts exhausted — delivery permanently failed |
Response fields
| Field | Type | Description |
|---|---|---|
id | uuid | Unique identifier for the delivery attempt |
endpoint_id | uuid | The webhook endpoint this delivery belongs to |
event_id | string | Unique event identifier — use this to deduplicate retried events |
event_type | string | Event type that triggered the delivery (e.g., attestation.created) |
payload_hash | string | SHA-256 hash of the delivered payload |
status | string | Current delivery status: pending, delivered, failed, or dead |
attempt_count | integer | Total number of delivery attempts so far |
next_attempt_at | string | ISO 8601 timestamp of the next retry, or null if no retry is scheduled |
last_error | string | Error message from the most recent failed attempt, or null if successful |
http_status | integer | HTTP status code returned by your endpoint, if available |
created_at | string | ISO 8601 timestamp when the delivery was first queued |
updated_at | string | ISO 8601 timestamp of the most recent status change |
Responses
Results are limited to the 50 most recent deliveries, sorted by creation time (newest first). Pagination is not currently supported.
⌘I

