Watch Session Stream
Server-sent events relay for one session (M3 live relay).
Emits change notifications only — never record payloads; clients revalidate through the regular query endpoints on each event:
- event: records-changed — {"session_id"}; new/updated rows landed in the record log (published post-DB-commit).
- event: lifecycle — {"session_id", "state": "running"|"ended"}.
- event: interaction — {"session_id", "status": "pending"|"resolved"}.
- : heartbeat comment frames while idle (keep-alive).
Auth is the standard middleware (cookie sAccessToken, ApiKey, or Bearer) evaluated once at connect; scope is the credential's project. Browsers authenticate by cookie — EventSource cannot set headers — so a connect landing on an expired access token 401s like any other request. There is no interceptor to refresh-and-retry a stream, so the client must refresh the session itself and reopen (see the web hooks).
The stream has no replay/cursor semantics — EventSource reconnects and clients revalidate once on every open, which covers any missed notifications.
NOTE (spec surface): this route appears in OpenAPI for documentation, but Fern does not model SSE — consume it with a native EventSource (same-origin /api + cookie auth needs no custom headers), not the generated client.
Query parameters
Response
Successful Response