readyDocs Open the appOpen the app

Webhook deliveries

Ready logs every POST it makes to your webhook, with what your endpoint answered. Use the log to find events your endpoint missed and send them again. Test keys can read the log but can’t resend (403 test_key_not_allowed).

#List webhook deliveries

Every POST Ready made to your webhook in the last 30 days, newest first: first tries, retries and resends, with the answer your endpoint gave. Test events are not listed. When your webhook takes your sub-accounts’ events, their copies are listed too. Needs the manage_integrations permission, because the bodies hold your contacts’ numbers and texts.

Query parameters

eventstring
Only this event, one of the webhook events.
resultenum
succeeded or failed.
sub_account_idstring
A sub-account’s id for its events only, or main for your own account’s.
qstring
Search the event id, event name, response code, error, sub-account name and body. A phone number in any format matches by its digits. Up to 200 characters.
limitintegerDefault 50
1 to 100.
before_idinteger
The next page: pass the next_before_id of the last answer.
Returns
dataobject[]
One per POST: id, event_id (the X-Ready-Event-Id it carried), event, attempt, trigger (live, retry or resend), url, succeeded, response_code, error, duration_ms, sub_account ({ "id", "name" } or null) and created_at.
next_before_idinteger | null
Pass it as before_id for the next page. null on the last page.
Errors
HTTPCodeWhen
400invalid_fieldA query value isn’t one listed above.
403permission_deniedThe key’s user lacks manage_integrations.

#Get a webhook delivery

One delivery from the list, with what Ready sent and what your endpoint answered. Needs the manage_integrations permission.

Returns
dataobject
The fields of a list item, plus request_headers, request_body (the exact body that was signed), response_body, and event_delivered: true once any try of this event succeeded.
Errors
HTTPCodeWhen
404not_foundNo delivery with this id on your account.

#Resend a webhook delivery

Sends a failed event to your webhook again now, with the same body and the same X-Ready-Event-Id. Each call is one more try, listed as a new delivery. Takes no body. Needs the manage_integrations permission and a live key.

Returns
dataobject
id (the new delivery), attempt, event_id, succeeded, response_code, duration_ms and error. A failed resend still answers 200 with succeeded: false. A resend sends the original body, so its timestamp is the original event time: a receiver that rejects old timestamps must allow up to 30 days, and should drop repeats by X-Ready-Event-Id instead.
Errors
HTTPCodeWhen
404not_foundNo delivery with this id on your account.
409delivery_succeededThe event already got through.
409retry_pendingReady is still retrying it on its own. Wait for that retry.
409webhook_not_setNo webhook URL is saved. Save one with PUT /v1/webhooks, then resend.
409webhook_offYour webhook is off (enabled: false). Turn it on with PUT /v1/webhooks and "enabled": true, then resend.
409event_offYour webhook no longer takes this event. Add it to events with PUT /v1/webhooks, then resend.
429rate_limitedToo many resends at once. Wait and try again.