One status check
data:
status: the current delivery state;updated_at: when the delivery last changed.
A safe polling loop
If your system cannot receive webhooks yet, pollGET /deliveries/{delivery_id} every 10–15 seconds.
- Save the last
statusandupdated_atvalues. - Fetch the event timeline only when either value changes.
- Stop polling at
delivered,failed, orcancelled. - Add random jitter when polling many deliveries so requests do not synchronize.
Node.js
Rate-limit handling
Every response includes:RateLimit-Limit: maximum requests in the current windowRateLimit-Remaining: requests left in the current windowRateLimit-Reset: Unix time in seconds when the window resets
429 RATE_LIMIT_EXCEEDED, stop making requests for the number of seconds in Retry-After. If that header is absent, wait until the Unix timestamp in RateLimit-Reset. For a temporary 5xx response, increase the delay before each retry and save X-Request-ID for diagnostics.
Paginating a list
Listing endpoints return one page at a time.meta explains whether another page exists:
Cursor-based list endpoints return this metadata:
has_more is true, pass next_cursor back unchanged:
has_more is false or next_cursor is null, you reached the final page.