Events

Subscribe to the real-time event stream

Server-Sent Events (text/event-stream) feed of newly indexed events. Each message's data is the fully decoded event as JSON and its id is the monotonic events.id. Reconnecting clients resume from Last-Event-ID (or the last_event_id query param) without gaps. A cursor beyond the current tip (e.g. one stored before an event-log reset) is clamped to the tip and the stream resumes live. objects (comma-separated ids, at most 100) delivers only the events whose payload names one of them. While kinds or objects passes events over, the stream sends its position as an id: line with no data:, so a reconnect resumes past them.

The stream opens with a retry: directive; honour it. The response is ended deliberately whenever the backlog cannot be replayed, and a client that reconnects immediately instead will spend an outage in a connect/close loop and can exhaust its events:read rate limit. A 429 is fatal to EventSource — per the HTML spec it stops reconnecting for good — so size that scope's limit above your expected subscriber count.

The response also ends after at most 10 minutes, and when the API key expires; reconnecting with Last-Event-ID resumes where it stopped, and re-checks the key. A key may hold 10 streams open at once; another is refused with 429. When the server is at capacity a stream is refused with 503 and a Retry-After. EventSource treats both as final too.

Required API-key scope: events:read.

get /events/stream

Authorizations

x-api-key string header required

Talus API Key in the form key_id.secret. The API also accepts Authorization: ApiKey <key_id.secret>, but the docs UI is configured to send x-api-key.

Query Parameters

kinds string | null

Comma-separated event kind names to subscribe to (e.g. WalkAdvancedEvent,DAGCreatedEvent). The trailing Event suffix is optional. Every name must be in the decodable event catalog; an unknown one is rejected rather than silently matching nothing. Omit to receive every event kind.

objects string | null

Comma-separated object ids, at most 100. Delivers only the events whose decoded payload names one of them anywhere (an execution, a task, an agent, a DAG), so a client can follow its own objects without receiving the whole network.

last_event_id integer | null

Resume from this events.id (exclusive). The Last-Event-ID request header takes precedence when present.

200

An open text/event-stream of decoded events.

400

kinds names an event absent from the decodable catalog, or objects is not a list of at most 100 object ids.

401

Missing or invalid API key.

403

API key lacks the events:read scope.

429

Rate limit exceeded, or the key already holds its most open streams (STREAM_LIMIT_EXCEEDED).

503

The server holds its most open streams (STREAM_CAPACITY_EXCEEDED); retry after Retry-After.