A webhook trigger's deliveries
const url = 'https://example.com/v1/webhooks/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/fires?limit=25';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/webhooks/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/fires?limit=25' \ --header 'Authorization: Bearer <token>'Newest first: each delivery the trigger received and what came of it: the run it started (started, or pending while it starts), or why it was skipped (paused, its project or tenant suspended, or its tenant closing) or refused (detail: signature-missing, signature-invalid, stale, secret-unavailable, unregistered, rate-limited, body-too-large, body-not-json, body-too-deep, or the owner’s lost access). A delivery that repeated an earlier one’s dedupe key counts on that one (duplicates). A fire keeps the event only until its run starts. Refusals and skipped deliveries past 20 a minute only count (the trigger’s suppressedRefusals).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”TriggerId — the trigger id (a UUID).
Query Parameters
Section titled “Query Parameters”1..100. Default 25.
Where the previous page ended: its nextCursor, as it came. A runtime that seals cursors takes one only for the same list, filters and caller, within a day; otherwise 400 bad-input, and the list starts again without it. Absent → first page.
Responses
Section titled “Responses”Page of deliveries.
object
One delivery to a webhook trigger and what came of it. A fire keeps the delivery’s event only until its run starts; then only the run has it.
object
pending while its run starts. skipped: no run started, and the event was dropped: the trigger was paused (paused); its project was suspended after the delivery was taken, before its run started (project-suspended); its run hadn’t started when its tenant was suspended, and the restore concluded it (tenant-suspended); or its tenant was suspended or closing as its run started (tenant-suspended, tenant-closing). refused: detail says why. failed: the run couldn’t start.
The run it started.
Why it was refused, skipped or failed: signature-missing, signature-invalid, stale, secret-unavailable, unregistered, paused, rate-limited, body-too-large, body-not-json, body-too-deep, or the owner’s lost access. A skip for a suspension or a close names project-suspended, tenant-suspended or tenant-closing in it.
Whether this fire counted toward the trigger’s auto-pause (5 in a row by default). false for a refusal for a limit, such as the tenant’s runs pending (detail starts rate-limited:): the limit passes, and the trigger isn’t at fault. Absent from a runtime that doesn’t say: refused and failed fires counted, and the others didn’t.
Later deliveries with the same dedupe key, which started nothing.
Example
{ "data": [ { "outcome": "pending" } ]}Missing / malformed / expired / revoked bearer token.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}No webhook trigger with that id.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}trigger-operation-unsupported: this deployment keeps no delivery history.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}