Skip to main content

Event Feed

Poll GET /v1/events for a newest-first feed of platform events. The feed reads the same rows webhooks fan out from, so you can reconcile missed deliveries.

GET /v1/events is the pull-side counterpart to webhooks: a newest-first, read-only feed of everything that happened in the workspace. Document extractions, run completions and failures, review verdicts, delivery outcomes, and case resolutions all appear as events with their type, payload, and timestamp. Webhooks push these events to your server; the feed lets you pull them on your own schedule.

The feed reads the same rows webhooks are fanned out from, so it is the reconciliation tool for missed deliveries: if your endpoint was down and a webhook exhausted its retries, the event is still in the feed. A consumer that stores the id of the last event it processed can page forward with offset and event_type filters and close any gap. The route is also available at GET /v1/delivery/events; both paths serve the same handler.

GET/v1/events

Query parameters

event_typestringFilter by event type, for example `document.extracted` or `run.structuring.completed`.
limitintegerMaximum events to return (1 to 200). Default: 50
offsetintegerNumber of events to skip. Default: 0

Response

Response fields

dataarrayEvent objects, newest first.
data[].idstringEvent ID (numeric, as a string). Monotonically increasing, so it doubles as a cursor.
data[].event_typestringEvent type, for example `document.extracted` or `delivery.item.failed`.
data[].payloadobjectEvent-specific payload, the same object a webhook for this event carries.
data[].created_atstringISO 8601 timestamp of when the event was recorded.
totalintegerTotal matching events.
limitintegerApplied page size.
offsetintegerApplied offset.

curl

Response

{
  "data": [
    {
      "id": "98771",
      "event_type": "document.extracted",
      "payload": {
        "document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
        "filename": "invoice-0847.pdf"
      },
      "created_at": "2026-07-14T21:06:48.977Z"
    }
  ],
  "total": 1280,
  "limit": 20,
  "offset": 0
}
Webhook event names and feed event types are two vocabularies over the same activity: the feed uses internal signal types such as document.extracted and delivery.item.failed, while webhook configurations use the public names listed on the Events page. Filter the feed by the types you observe in your own responses.

A robust integration treats webhooks as the fast path and the feed as the source of truth: process webhooks as they arrive, and run a periodic sweep that pages the feed for anything the webhook path missed. Because event IDs are monotonically increasing, comparing the newest feed ID against the last processed ID tells you immediately whether there is a gap to close.