Webhooks
Twitter webhook deliveries & retry history
Inspect a webhook’s 100 most recent tweet and profile event deliveries with attempts, HTTP statuses, errors, and timestamps. Listing deliveries is free.
- 200
- 400
- 401
- 404
- 429
GET
Twitter webhook deliveries & retry history
Free. This endpoint does not consume credits.
Path parameters
string
required
The webhook ID to retrieve deliveries for.
Headers
string
required
Your API key.
Operational handoff
Use this endpoint when your queue, CRM, warehouse, or alerting system needs to check webhook delivery status. It returns the 100 most recent delivery records for one webhook, newest first. FollownextCursor for older ones.
Map each delivery to a small incident row before you pass it on. Keep id, streamEventId, status, attempts, receiver status, timestamps, and the chosen action. Do not write the full response to logs.
This endpoint returns delivery attempt metadata only. It does not return the
webhook URL, event type filter, signing secret, raw payload body, raw signature,
or full request headers.
Do not depend on a nextRetryAt field. The response has none. Triage incidents from status, attempts, lastStatusCode, lastError, createdAt, and deliveredAt.
Store these fields for support and retry triage:
Delivery ID
Store
id for delivery-level idempotency and support lookup.Event join
Store
streamEventId to join back to the stored monitor event with
GET /events/{id}.Status route
Use
status to route pending, failed, and exhausted deliveries to the
right queue.Attempt count
Use
attempts to see how often Xquik tried a delivery. Retries continue
until your endpoint returns 2xx.Receiver result
Use
lastStatusCode to separate receiver errors such as 500 from
unreachable endpoints with status 0.Failure reason
Show
lastError as the most recent failure reason for the operator.Timing
Compare
createdAt and deliveredAt to measure delivery latency and
recovery time.Incident response handoff
Use one row per delivery when the receiver owner must act. Ignoredelivered rows, wait on pending, and act on failed. An exhausted row
means the webhook was paused or deleted.
Repeated failure
Warn after repeated
failed rows. Include attempts, lastStatusCode,
and lastError so the receiver owner can separate code errors from
reachability failures.No final failure
Xquik retries every
failed delivery until your endpoint returns 2xx.
No delivery ends early, even after 410 Gone.Event join
Store
streamEventId and link GET /api/v1/events/{id} so support can
inspect the monitor event that triggered the delivery.Receiver proof
After fixing the endpoint, send
POST /webhooks/{id}/test and attach the
signed test result to the incident before waiting for the next event.pending. Return 2xx for a delivery you will never accept. See the retry policy.
Fix the receiving endpoint first. Use POST /webhooks/{id}/test to confirm it accepts signed requests. Then call Resume Webhook to start sending waiting and rejected deliveries at once. Without it, a rejected delivery can wait up to 7 days.
Receiver backfill handoff
This endpoint returns 100 delivery rows per page for 1 webhook, newest first. Xquik resends failed deliveries on its own. Use stored event pages only to rebuild work your receiver lost.nextCursor after every event page. Continue
GET /api/v1/events?limit=100&cursor={nextCursor} until hasMore is false.
Then compare each event id with delivery streamEventId values before
replaying your own work. Add monitorId when replaying one account
monitor, or keywordMonitorId when replaying one keyword monitor.
Query parameters
integer
Maximum deliveries per page: 1 to 100, default 100.
string
nextCursor from the previous page. The after alias also works. Offset pagination is not
supported.Response
200 OK
array
List of delivery attempts, most recent first. Returns up to 100 deliveries per page.
Delivery object fields.
string
Unique delivery identifier.
string
ID of the stream event that triggered this delivery.
string
Current delivery status:
pending, delivered, failed, or exhausted.number
Total number of delivery attempts made. There is no attempt limit.
number
HTTP status code returned by your endpoint on the most recent attempt. Omitted if Xquik has made no attempt yet.
string
Error message from the most recent failed attempt. Omitted on success.
string
ISO 8601 timestamp of when Xquik queued the delivery.
string
ISO 8601 timestamp of successful delivery. Omitted if not yet delivered.
boolean
Whether more rows follow this page.
string
Pass it as
cursor for the next page. Present when hasMore is true.400 Invalid cursor
cursor is not one this list returned. Send the nextCursor of the previous page, or omit it.
401 Unauthenticated
x-api-key header value.
400 Invalid ID
404 Not found
429 Rate limited
Retry-After header before retrying.
Delivery statuses
pending
Xquik has not sent this delivery yet. It may wait while your endpoint is
failing.
delivered
Your endpoint returned
2xx. Delivery is complete.failed
The last attempt failed because the endpoint returned non-
2xx or the
network failed. Xquik retries with exponential backoff until your endpoint
returns 2xx.exhausted
You paused or deleted the webhook while this delivery waited. Resume it
to receive waiting deliveries.
2xx. Retries never stop on their own. Pausing or deleting the webhook stops them. Within 1 day, its waiting deliveries show exhausted. Xquik keeps queued events until all deliveries finish. Events expire 30 days after Xquik creates them.
Related. Webhooks Overview · Resume Webhook · Webhook Testing Guide