Skip to content
Webhook Deliveries

List webhook deliveries

GET
/webhook_deliveries
const url = 'https://api.kirimdev.com/v1/webhook_deliveries?subscription_id=wbs_01HXYZABCDEFGHJKMNPQRSTVWX&status=pending&event_type=message.received&created_after=2026-09-10T00%3A00%3A00.000Z&created_before=2026-09-11T00%3A00%3A00.000Z&limit=25&cursor=eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQ';
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);
}

List webhook delivery attempts newest first. Combine subscription, event, status, and timestamp filters to inspect failures, then use the returned opaque cursor for the next page.

subscription_id

Return deliveries for one webhook subscription.

string
/^wbs_[0-9A-HJKMNP-TV-Z]{26}$/
Example
wbs_01HXYZABCDEFGHJKMNPQRSTVWX

Return deliveries for one webhook subscription.

status

Filter by the latest delivery state.

string
Allowed values: pending succeeded failed dead
Example
dead

Filter by the latest delivery state.

event_type

Filter by exact webhook event type.

string
>= 1 characters <= 64 characters
Example
message.received

Filter by exact webhook event type.

created_after

Return deliveries created strictly after this ISO 8601 instant.

string format: date-time
Example
2026-09-10T00:00:00.000Z

Return deliveries created strictly after this ISO 8601 instant.

created_before

Return deliveries created strictly before this ISO 8601 instant.

string format: date-time
Example
2026-09-11T00:00:00.000Z

Return deliveries created strictly before this ISO 8601 instant.

limit

Number of items to return. Defaults to 25; minimum 1 and maximum 100.

string
default: 25 /^\d+$/
Example
25

Number of items to return. Defaults to 25; minimum 1 and maximum 100.

cursor

Opaque continuation token from the previous response’s next_cursor. Pass it unchanged and keep all other filters the same.

string
>= 1 characters
Example
eyJpZCI6IjAxSFhZWkFCQ0RFRkdISktNTlBRUlNUVldYIiwidHMiOiIyMDI2LTA5LTEwVDA5OjAwOjAwLjAwMFoifQ

Opaque continuation token from the previous response’s next_cursor. Pass it unchanged and keep all other filters the same.

Delivery list

Media type application/json
object
data
required

Items in this page, ordered as documented by the operation.

Array<object>
object
id
required
string
object
required
string
Allowed values: webhook_delivery
subscription_id
required
string
event_type
required
string
event_id
required
string
status
required
string
Allowed values: pending succeeded failed dead
attempt_count
required
integer
last_attempt_at
required
string | null format: date-time
next_attempt_at
required
string | null format: date-time
response_status
required
integer | null
response_body_snippet
required

Body returned by YOUR endpoint, truncated. Null when the endpoint sent no body or was never reached — check error_code in that case.

string | null
duration_ms
required
integer | null
error_code
required

Why the last attempt failed. Null on success. http_error means your endpoint answered with a non-2xx status. timeout and connection_error mean it never answered. The remaining values mean we declined to send.

string | null
Allowed values: timeout connection_error http_error subscription_inactive subscription_deleted ssrf_blocked no_signing_secret
error_message
required

Human-readable detail for error_code, truncated to 200 characters.

string | null
replayed_from
required
string | null
payload
created_at
required
string format: date-time
has_more
required

Whether another page is available.

boolean
next_cursor
required

Pass this value unchanged as cursor to fetch the next page. null marks the final page.

string | null
request_id
required

Unique request identifier to include when contacting support.

string
Example
{
"data": [
{
"id": "wbd_01HXYZABCDEFGHJKMNPQRSTVWX",
"object": "webhook_delivery",
"status": "pending",
"error_code": "timeout"
}
],
"has_more": false,
"next_cursor": null,
"request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"
}

Validation failure

Media type application/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found conflict rate_limit_error api_error
code
required
string
message
required

Human-readable explanation of the error.

string
param

Request field associated with the error, when applicable.

string
request_id
required

Unique request identifier to include when contacting support.

string
Examples
Example default

A field value is invalid.

{
"error": {
"type": "invalid_request_error",
"code": "invalid_field_value",
"message": "A field value is invalid.",
"request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"
}
}

Authentication failure

Media type application/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found conflict rate_limit_error api_error
code
required
string
message
required

Human-readable explanation of the error.

string
param

Request field associated with the error, when applicable.

string
request_id
required

Unique request identifier to include when contacting support.

string
Examples
Example default

The provided API key is invalid.

{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The provided API key is invalid.",
"request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"
}
}

Rate limit exceeded

Media type application/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found conflict rate_limit_error api_error
code
required
string
message
required

Human-readable explanation of the error.

string
param

Request field associated with the error, when applicable.

string
request_id
required

Unique request identifier to include when contacting support.

string
Examples
Example default

Rate limit exceeded.

{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded.",
"request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"
}
}

Internal server error

Media type application/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found conflict rate_limit_error api_error
code
required
string
message
required

Human-readable explanation of the error.

string
param

Request field associated with the error, when applicable.

string
request_id
required

Unique request identifier to include when contacting support.

string
Examples
Example default

An unexpected error occurred.

{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "An unexpected error occurred.",
"request_id": "req_01HXYZABCDEFGHJKMNPQRSTVWX"
}
}