Watch Session Stream
GET/sessions/streams/watch
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"}.: heartbeatcomment 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.
Request
Responses
- 200
- 422
Successful Response
Validation Error