curl --request GET \
--url https://{host}/api/v1/webhooks/{id}/deliveries \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/api/v1/webhooks/{id}/deliveries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/webhooks/{id}/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"attempts": 123,
"call_uuid": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"delivery_id": "<string>",
"error": "<string>",
"event": "<string>",
"finished_at": "2023-11-07T05:31:56Z",
"id": 123,
"next_attempt_at": "2023-11-07T05:31:56Z",
"ok": true,
"redelivery_of": 123,
"status": "queued",
"status_code": 123
}
],
"limit": 123,
"offset": 123,
"total": 123
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}A webhook's deliveries
Newest first, paged, kept 14 days. Every event is written here before it is sent, so this is also the outbox: status queued (waiting, or being retried at next_attempt_at), sending, delivered, failed. Retries after 30 s, 5 min, 30 min, 2 h and 12 h; a webhook whose deliveries have all failed for three days is switched off (disabled_reason) and the organisation’s admins emailed.
curl --request GET \
--url https://{host}/api/v1/webhooks/{id}/deliveries \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/api/v1/webhooks/{id}/deliveries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/webhooks/{id}/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"attempts": 123,
"call_uuid": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"delivery_id": "<string>",
"error": "<string>",
"event": "<string>",
"finished_at": "2023-11-07T05:31:56Z",
"id": 123,
"next_attempt_at": "2023-11-07T05:31:56Z",
"ok": true,
"redelivery_of": 123,
"status": "queued",
"status_code": 123
}
],
"limit": 123,
"offset": 123,
"total": 123
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}Authorizations
Every request sends Authorization: Bearer <token>. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key ft_<id>_<secret>. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.
Path Parameters
Query Parameters
x <= 500queued, sending, delivered, failed