List recent webhook deliveries
Inspect what we sent, when, and what your endpoint said.
Inspect what we sent, when, and what your endpoint said.
This is the record that answers "my customer never got a webhook". Two shapes of question, two modes:
- With
call_idyou get EVERY row for that call — delivered, pending, failed and suppressed alike. This is the mode to use when a specific call is in dispute. - Without
call_idyou get the organisation's terminal FAILURES:failed(the four-attempt ladder was exhausted) andsuppressed(no request was made at all, andsuppressed_reasonsays why —not_subscribed,webhooks_disabled,no_callback_urlorurl_rejected, the last meaning the URL resolved into private address space at send time). Successful deliveries are not listed organisation-wide; ask for them per call.
Rows expire after 30 days. Only the callback HOST is shown, never the path
or query string, because a callback URL routinely carries your own token.
body_preview is the first 2000 characters of the body we sent and
body_bytes is its true size.
At most 500 rows are searched per request,
newest first; narrow with since or call_id rather than paging deeply.
Errors: 400 (bad event type, status or timestamp), 401, 403, 422, 429, 503.
Rate limit: 1000 requests per minute per organization (bucket default). Exceeding it returns 429 with Retry-After; the X-RateLimit-* response headers report your remaining allowance on every call.
v2/webhooks/deliveriesAuthorization
AuthorizationRequiredBearer <token>
Your Graine API key. Create one in the dashboard under Developers, or via POST /v2/api-keys. Send it as Authorization: Bearer <key>.
In: header
Query Parameters
call_idCall Id
Every delivery row for one call, whatever its status.
event_typeEvent Type
Filter by event type. Valid event types: all_processing_completed, call_completed, call_corrected, call_ringing, call_started, client_analysis_completed, platform_analysis_completed, recording_completed. Omitting event_types, or sending an empty list, resolves to all_processing_completed — there is no value that means "every event".
statusStatus
pending | delivered | failed | suppressed.
sinceSince
Only rows created at or after this ISO-8601 timestamp. A timezone offset is required.
organization_idOrganization Id
Must match the organisation the API key belongs to.
pagePage
1-indexed page number (max 10000 — narrow the window instead)
1Minimum: 1Maximum: 10000page_sizePage Size
Items per page (max 100)
20Minimum: 1Maximum: 100Response Body
200
A page of delivery rows, newest first.
dataRequiredData
This page of delivery rows, newest first.
paginationRequiredPagination
Where this page sits in the result set.
400
1000 — malformed input the schema could not reject: an unknown event type, a method other than POST/PUT, a reserved header name, or a callback_url pointing at a private, loopback or metadata address.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
401
1100 — missing, unknown or inactive API key. 1101 — a browser session token was presented instead of a gat_ key.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
403
1102 — the key is valid but lacks the scope this endpoint requires, or names another organisation. GET /v2/scopes reports which scopes the key holds.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
422
1001 — the body or query failed validation; the message names the first offending field.
errorRequiredinteger
Stable integer code from the error table. Branch on this, not on the message.
messageRequiredstring
One human-readable sentence. Wording may change; the code will not.
429
1300 — per-organisation rate limit exceeded. Carries Retry-After.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
503
1501 — the webhook subscription store is unreachable.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
504
1502 — an upstream did not respond in time.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
A page of delivery rows, newest first.

