Skip to content
API console (try a request with your own key)Get early access

List a webhook endpoint's deliveries

GET
/v1/webhooks/{webhookId}/deliveries
#!/usr/bin/env bash
set -euo pipefail
API=https://api.speccapture.com
AUTH="Authorization: Bearer $SPECCAPTURE_API_KEY"
WEBHOOK_ID=0f8fad5b-d9cb-469f-a165-70867728950e # the webhookId from adding the endpoint
log=$(curl -sS --fail-with-body "$API/v1/webhooks/$WEBHOOK_ID/deliveries?limit=20" \
-H "$AUTH") || { echo "$log" >&2; exit 1; }
jq -r '.data[] as $delivery | ("\($delivery.createdAt) \($delivery.eventType) \($delivery.status) after \($delivery.attempts) attempts", if $delivery.lastError != null then " \($delivery.lastError)" else empty end)' <<<"$log"

Each event sent to the endpoint, newest first: its event id (the webhook-id header), type, job, the url it went to, status (pending, delivered or dead), attempts, what the endpoint last answered and when, when the next attempt is due, the last error in words, and when it was queued and delivered. Never a body or a signature. Page with limit and cursor (the previous page’s nextCursor), narrow with createdAfter and createdBefore (when an event was queued) and status. Another workspace’s endpoint, or a deleted one, is 404 not_found.

webhookId
required
string format: uuid
limit
integer format: int32

How many items the page holds: 1 to 200, 50 when left out.

cursor
string

The previous page’s nextCursor, exactly as it came: the list continues just after that page’s last item, so items made or removed meanwhile never shift a page. Leave it out for the first page.

createdAfter
string format: date-time

Only items queued strictly after this date and time (ISO 8601, such as 2026-10-14T09:30:00Z; without an offset it is UTC).

createdBefore
string format: date-time

Only items queued strictly before this date and time (ISO 8601, such as 2026-10-14T09:30:00Z; without an offset it is UTC).

status
Allowed values: pending delivered dead

Only items with this status.

OK

Media typeapplication/json
object
data
required
Array<object>
object
deliveryId
required
integer format: int64
eventId
required
string
eventType
required
string
jobId
required
string format: uuid
url
required
string
status
required
Allowed values: pending delivered dead
attempts
required
integer format: int32
lastResponseCode
required
null | integer format: int32
lastAttemptAt
required
null | string format: date-time
nextAttemptAt
required
null | string format: date-time
lastError
required
null | string
createdAt
required
string format: date-time
deliveredAt
required
null | string format: date-time
hasMore
required
boolean
nextCursor
required
null | string

Bad Request: a problem with a stable code. See Errors for every code and what to do about it.

Media typeapplication/problem+json

Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.

object
type

A link to the code’s entry in the docs.

null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code

What went wrong, as a stable code to branch on: a published code never changes meaning.

string
traceId

This request’s trace: quote it when asking for help.

string

Not Found: a problem with a stable code. See Errors for every code and what to do about it.

Media typeapplication/problem+json

Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.

object
type

A link to the code’s entry in the docs.

null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code

What went wrong, as a stable code to branch on: a published code never changes meaning.

string
traceId

This request’s trace: quote it when asking for help.

string