API Reference · Activity

Server-pushed realtime event stream (SSE)

ONE Server-Sent-Events connection per open workspace tab — the push replacement for polling. Load a `GET /pulse` snapshot first, then open this stream and apply the deltas as they arrive. Each frame is `id: <seq>`, `event: <type>`, `data: <json>`. Event types and their (minimal) payloads: - `activity` — a new audit row (the same shape `GET /activity` returns). - `task-update` — `{taskId, status}`; refetch the task for detail. - `ask-opened` / `ask-answered` — `{taskId, workloadId}`; refresh `/asks`. - `agent-busy` — `{key, busy, sessions?, tasks?}` (`key` matches the `/pulse` agent map: `daemon:<id>` / `master:<id>`). - `agent-sleep-state` — `{key, sleeping}` from tenant-api's own idle map; a sleeping daemon is never contacted by the browser. - `spec-changed` — `{}`; the Tenant CR spec changed, refetch it. - `secret-changed` — `{path}`; refetch the secrets list. `:heartbeat` comment frames arrive every ~20s to keep proxies open. Reconnect with the standard `Last-Event-ID` header (or `?lastEventId=`): the server replays the missed events from an in-memory ring, or — if the gap is too old — sends one `event: resync` frame, meaning refetch `/pulse` and resume. Connections are capped at a few hours; the browser `EventSource` reconnects transparently.

GET/v1/tenants/{name}/events/stream

Authorization

x-api-keystringrequired
Your per-workspace API key, e.g. llc_AbC123…. Also accepted as Authorization: Bearer <key>. Mint keys on your workspace's API keys page — each key belongs to one workspace.

Path parameters

namestringrequired
Workspace (tenant) name.

Response

200The event stream (kept open).

curl https://api.live-llm.com/v1/tenants/acme/events/stream \
  -H "x-api-key: $LIVELLM_KEY"
Try itGEThttps://api.live-llm.com/v1/tenants/{name}/events/stream
Fill required path param: name.
Example response200
The event stream (kept open).