Watch events as they arrive — over Server-Sent Events or a WebSocket. Use it for live dashboards, tailing, and dev feedback.
Best-effort & lossy by design — the durable delivery guarantee is signed outbound webhooks. Use the stream to observe, not to guarantee receipt.
Server-Sent Events
Each event is an SSE frame; a control frame signals a gap if you resumed past the buffer:
In the browser
Resume
The buffer holds roughly the last 1,000 events (up to ~5 minutes). Resume from where you left off with the Last-Event-ID header (SSE sends it automatically on reconnect) or the ?after_seq= query parameter. If your resume point has already aged out, Hookie emits a stream-gap event with the range you missed, then continues live.
WebSocket
From the console
Signed-in users get the same stream over the session-authenticated /admin/api/stream endpoint — no ingest key required, same SSE and WebSocket behaviour, same resume. It is the endpoint to point a dashboard of your own at when you already have a browser session and would rather not mint an ingest key for it.
The console itself does not tail it. Its views read what has already landed: Datasets for routed records, and Observability for paged search across records, the raw submissions behind them, deliveries and AI runs — plus the correlation lookup that stitches one id’s whole chain together. Refresh to see new arrivals.
Limits
- Concurrent connections are capped per plan (Free: 1, Pro: 5, Team: 20).
- Authenticate with any active ingest key for the tenant (read-only tail; it never exposes stored data).