List deliveries and their stored payloads
const url = 'https://api.octaneai.com/v1/webhooks/example/deliveries?limit=20';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://api.octaneai.com/v1/webhooks/example/deliveries?limit=20' \ --header 'Authorization: Bearer <token>'The stored payloads of an endpoint created with include_pii carry contact details, so reading them needs profiles:read as well.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”One page of the endpoint’s deliveries, newest first, each with the payload as it was signed.
object
The deliveries, newest first
object
How many times it was sent
When the event was queued for this endpoint
The endpoint
The event, the webhook-id header
The delivery: one event to one endpoint
When it is sent next
object
The payload version
When the event happened
{object} exactly as it was signed and sent
object
The event id
The topic: quiz.started | quiz.finished | quiz.abandoned | identity.captured | quiz.published | experiment.started | experiment.ended | profile.created | profile.updated | export.completed | webhook.endpoint.disabled | ping
Pending | retrying | delivering | delivered | dead
Quiz.started | quiz.finished | quiz.abandoned | identity.captured | quiz.published | experiment.started | experiment.ended | profile.created | profile.updated | export.completed | webhook.endpoint.disabled | ping
Whether another page follows
Example
{ "data": [ { "attempts": 1, "created_at": "2026-09-07T09:11:58Z", "delivered_at": "2026-09-07T09:12:00Z", "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301", "event_id": "evt_6ba7b8109dad11d180b400c04fd430c8", "id": "whd_7c9e6679742540de944be07fc1f90ae7", "last_response": "ok", "last_status_code": 200, "next_attempt_at": "2026-09-07T09:12:00Z", "payload": { "api_version": "v1", "created": "2026-09-07T09:11:58Z", "data": { "object": { "answered_count": 1, "answers": { "image_choice-48su5": { "kind": "image", "label": "Skin type?", "option_ids": [ "dry" ], "page_key": "skin", "value": "dry", "values": [ "Dry" ] } }, "channel": "email", "completed_at": "2026-09-07T09:11:30Z", "country": "US", "device": { "browser": "Mobile Safari", "browser_version": "17.5", "class": "mobile", "family": "iPhone", "model": "iPhone", "os": "iOS", "os_version": "17.5", "vendor": "Apple" }, "ended_at": "2026-09-07T09:11:30Z", "formulas": [ { "component_key": "formula-tidtk", "kind": "formula", "label": "Hydration score", "page_key": "result", "value": 72 } ], "id": "sess_9b2d4a5e6f7a4b8c9d0e1f2a3b4c5d6e", "last_page": "result", "page_url": "https://shop.example.com/pages/quiz", "points": [ { "dimension_id": "dry", "name": "Dry", "total": 14 } ], "products_shown": [], "property_mappings": [], "quiz_id": "quiz_7c9e6679742540de944be07fc1f90ae7", "quiz_name": "Find your routine", "started_at": "2026-09-07T09:08:00Z", "utm_source": "newsletter", "version_id": "ver_15ce0be06b904d0180b1155da02a6c6f", "version_number": 2, "visitor_id": "vis_0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d" } }, "id": "evt_6ba7b8109dad11d180b400c04fd430c8", "type": "quiz.finished" }, "status": "delivered", "topic": "quiz.finished" }, { "attempts": 0, "created_at": "2026-09-07T09:11:58Z", "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301", "event_id": "evt_15ce0be06b904d0180b1155da02a6c6f", "id": "whd_15ce0be06b904d0180b1155da02a6c6f", "next_attempt_at": "2026-09-07T09:12:00Z", "payload": { "api_version": "v1", "created": "2026-09-07T09:11:58Z", "data": { "object": { "endpoint_id": "whe_3f2504e04f8911d39a0c0305e82c3301" } }, "id": "evt_15ce0be06b904d0180b1155da02a6c6f", "type": "ping" }, "status": "pending", "topic": "ping" } ], "has_more": false}The key is missing, malformed, revoked or expired.
The body of every non-2xx response.
object
What went wrong, for people
object
The input that failed, as a dotted path (body.label, query.from)
Why it failed
The same value as the Request-Id header; quote it to support
The HTTP status of the response
The machine-readable error code; the Errors guide lists every one
A stable URI naming the error, on this API’s public host
Example
{ "detail": "The API key is missing, malformed, revoked or expired", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "status": 401, "title": "invalid_api_key", "type": "https://api.octaneai.com/errors/invalid_api_key"}Headers
Section titled “Headers”Example
BearerThe store’s plan has no API access, or the key lacks the scope.
The body of every non-2xx response.
object
What went wrong, for people
object
The input that failed, as a dotted path (body.label, query.from)
Why it failed
The same value as the Request-Id header; quote it to support
The HTTP status of the response
The machine-readable error code; the Errors guide lists every one
A stable URI naming the error, on this API’s public host
Examples
{ "detail": "The API key does not carry the scope this route needs", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "required": [ "webhooks:manage" ], "status": 403, "title": "insufficient_scope", "type": "https://api.octaneai.com/errors/insufficient_scope"}{ "detail": "The merchant API is available on the Plus and Enterprise plans", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "status": 403, "title": "plan_required", "type": "https://api.octaneai.com/errors/plan_required"}Not found
The body of every non-2xx response.
object
What went wrong, for people
object
The input that failed, as a dotted path (body.label, query.from)
Why it failed
The same value as the Request-Id header; quote it to support
The HTTP status of the response
The machine-readable error code; the Errors guide lists every one
A stable URI naming the error, on this API’s public host
Example
{ "detail": "Not found", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "status": 404, "title": "not_found", "type": "https://api.octaneai.com/errors/not_found"}A request parameter is invalid.
The body of every non-2xx response.
object
What went wrong, for people
object
The input that failed, as a dotted path (body.label, query.from)
Why it failed
The same value as the Request-Id header; quote it to support
The HTTP status of the response
The machine-readable error code; the Errors guide lists every one
A stable URI naming the error, on this API’s public host
Example
{ "detail": "A request parameter is invalid.", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "status": 422, "title": "validation_error", "type": "https://api.octaneai.com/errors/validation_error"}The key’s or the store’s bucket is full; Retry-After says when to try again.
The body of every non-2xx response.
object
What went wrong, for people
object
The input that failed, as a dotted path (body.label, query.from)
Why it failed
The same value as the Request-Id header; quote it to support
The HTTP status of the response
The machine-readable error code; the Errors guide lists every one
A stable URI naming the error, on this API’s public host
Example
{ "detail": "Too many requests", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "retry_after": 1, "status": 429, "title": "rate_limited", "type": "https://api.octaneai.com/errors/rate_limited"}The request timed out.
The body of every non-2xx response.
object
What went wrong, for people
object
The input that failed, as a dotted path (body.label, query.from)
Why it failed
The same value as the Request-Id header; quote it to support
The HTTP status of the response
The machine-readable error code; the Errors guide lists every one
A stable URI naming the error, on this API’s public host
Example
{ "detail": "The request timed out.", "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "status": 504, "title": "timeout", "type": "https://api.octaneai.com/errors/timeout"}