Skip to main content
Version: v2.0

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"}.
  • : 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.

Request

Responses

Successful Response