VIEWER role.
Common behaviour
Request a stream withAccept: text/event-stream and keep the connection open. The response is a sequence of events separated by blank lines.
data of the example above is shortened. The sections below show the full shape of each stream.
- Event ids. Each event has an
idthat counts from 0 within the stream, in the order the server delivers events. - Resuming. After a dropped connection, reconnect with the last id you saw in the
Last-Event-IDheader. The server replays the stream and skips everything up to that id, so nothing arrives twice. This works for the status, log and result streams; the event feed does not support it. - Keep-alive. An idle stream sends a comment line,
: ping, every 15 seconds so proxies do not close the connection. Ignore comment lines. - Ending. The status, log and result streams end when the run reaches a final state. The event feed has no end.
- Errors. A stream that cannot start answers with an ordinary JSON error before any event, for example
404for an unknown run or one that belongs to another session.
Stream the status of a run
GET /api/executions/{executionId}/status/stream
Sends a progress snapshot every time the run or one of its nodes changes. Each event’s data is the same object that GET /api/executions/{executionId} returns, so a client can use one parser for both. The stream completes when the run ends.
The deprecated path
GET /api/workflow/{sessionId}/status/{executionId}/stream does the same and also checks the session.
Stream the logs of a run
GET /api/sessions/{sessionId}/executions/{executionId}/logs
Sends the stored log lines of the run first, then live lines until the run reaches a final state. For a run that has already finished, it sends the stored lines and ends. The server subscribes to live lines before it reads the stored ones, so a line written while the history loads is neither lost nor sent twice. Each event’s data is one formatted line.
Stream structured log entries
GET /api/sessions/{sessionId}/executions/{executionId}/logs/entries
The same lines as JSON objects, for clients that filter by node or level. It behaves exactly like the text stream.
Stream the results of a run
GET /api/sessions/{sessionId}/executions/{executionId}/results
Sends what reaches the terminal nodes: kept events first, then new ones until the run ends. The same path returns JSON when you ask for application/json; see Read the result of a run.
Each event’s
data is a result event with kind (RESULT, NODE_END or EXECUTION_END), nodeId, sequence, payload (for RESULT), status (for the end events), truncated and timestamp. The stream ends after EXECUTION_END. A finished run whose results are no longer kept sends nothing and ends.
Stream events of all runs
GET /api/events/stream
A live feed of what happens across the server, for monitors and external supervisors. It does not replay past events, and a reader that cannot keep up misses events. It has no Last-Event-ID support and does not end on its own.
Each event’s
data is an envelope with the event type, its severity and the event itself.
Severity. A node or run that ends
FAILURE, TIMED_OUT or ABORTED is ERROR. One that ends CANCELLED is WARN. A node that ends UPSTREAM_FAILED stays INFO, because it only reflects the node before it. A control command that was not applied is WARN. A log line is ERROR if it contains words such as error, failed, failure, exception or What went wrong, WARN if it contains warn, warning or deprecat, and INFO otherwise.