List webhook deliveries
const url = 'https://api.keliplay.com/v1/tenant/webhooks/deliveries?limit=200&offset=0&sort=createdAt&dir=asc&status=pending';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.keliplay.com/v1/tenant/webhooks/deliveries?limit=200&offset=0&sort=createdAt&dir=asc&status=pending' \ --header 'Authorization: Bearer <token>'Lists every delivery attempt record across your endpoints, newest first, with the payload that was sent.
Permission: settings.read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Items per page.
Items to skip before the page starts.
Match part of an event type, ignoring case.
Field to sort by.
Sort direction.
Only deliveries in this state.
Responses
Section titled “Responses”A page of deliveries.
object
object
The same value as the X-Keliplay-Delivery-Id header.
The body that was sent, { type, createdAt, data }.
object
pending: not tried yet.success: your endpoint answered 2xx.failed: the last try failed and another is scheduled.exhausted: no more tries will be made.
The HTTP status your endpoint returned.
A short note on why a try failed. Your endpoint’s response body is never stored.
Example
{ "deliveries": [ { "id": "0192f3a1-0000-7000-8000-0000000b1001", "endpointId": "0192f3a1-0000-7000-8000-0000000b0001", "eventType": "reward_granted", "payload": { "type": "reward_granted", "createdAt": "2026-10-12T14:03:22.000Z", "data": { "gameInstanceId": "0192f3a1-0000-7000-8000-0000000ca001", "grantId": "0192f3a1-0000-7000-8000-000000073001", "participantRef": "user_48213", "sessionId": "0192f3a1-0000-7000-8000-000000050001", "source": "rule", "expiresAt": "2026-11-11T14:03:22.000Z" } }, "status": "success", "attemptCount": 1, "lastAttemptedAt": "2026-10-12T14:03:23.000Z", "nextRetryAt": null, "responseStatus": 200, "responseBody": null, "createdAt": "2026-10-12T14:03:22.000Z" } ], "total": 1}The request is not valid. details lists each field that failed, where there is one.
object
object
Stable and safe to branch on.
invalid_request(400): the request is not valid.unauthorized(401): missing, malformed or revoked API key.upgrade_required(402): not in your plan, or a plan limit is reached.forbidden(403): the key lacks a permission, or the action is not allowed.not_found(404): nothing with that id in your account.conflict(409): clashes with the current state.confirmation_required(409): repeat withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "invalid_request", "message": "Invalid request json.", "details": [ { "path": "name", "message": "Too small, expected string to have >=1 characters" } ] }}The API key is missing, malformed or revoked.
object
object
Stable and safe to branch on.
invalid_request(400): the request is not valid.unauthorized(401): missing, malformed or revoked API key.upgrade_required(402): not in your plan, or a plan limit is reached.forbidden(403): the key lacks a permission, or the action is not allowed.not_found(404): nothing with that id in your account.conflict(409): clashes with the current state.confirmation_required(409): repeat withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "unauthorized", "message": "Invalid or revoked API key." }}The API key does not carry the permission this needs, or the request is not allowed.
object
object
Stable and safe to branch on.
invalid_request(400): the request is not valid.unauthorized(401): missing, malformed or revoked API key.upgrade_required(402): not in your plan, or a plan limit is reached.forbidden(403): the key lacks a permission, or the action is not allowed.not_found(404): nothing with that id in your account.conflict(409): clashes with the current state.confirmation_required(409): repeat withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "forbidden", "message": "Your role does not allow this (draws.run)." }}