Watch live dashboard events
const url = 'http://127.0.0.1:7799/feed';const options = {method: 'GET', headers: {cookie: 'cotal_web_session=<cotal_web_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://127.0.0.1:7799/feed \ --cookie cotal_web_session=<cotal_web_session>Open a Server-Sent Events stream. Each frame has event:
| Event | JSON data |
|---|---|
roster |
Array of presence records, with optional dashboard progress. |
presence-view |
state and fresh, plus staleSince for a stale observer. |
membership |
Optional asOf and an array of members with live and durable channels. |
membership-read-failed |
An object with a reason string. |
message |
mode and msg, with subject-derived senderId and chat channel when available. |
Decoded payload schemas are also included under x-sse-events in the downloadable specification.
The message event forwards publisher JSON without wire-message validation. Treat msg.from as advisory; senderId is derived from the broker subject. A malformed publisher payload can still appear in the feed.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”An open UTF-8 SSE stream. Authentication and origin checks run before streaming begins.
Example
event: rosterdata: []
event: presence-viewdata: {"state":"current","fresh":true}Headers
Section titled “Headers”A valid one-use k query token is exchanged for a dashboard session. The response redirects to the same path without its query. A valid existing cookie takes precedence over k.
Headers
Section titled “Headers”The requested path without the query string.
Cotal_web_session=
No valid session, an invalid launch token, or a spent launch token. The readiness credential does not authorize these routes.
object
Example
{ "error": "unauthenticated"}Origin is checked before session authentication. An origin outside this listener’s allowed origins is refused.
object
Example
{ "error": "cross-origin"}These read routes accept no request body. An announced body is refused before it is read; the connection is closed.
object
Examplegenerated
{ "error": "example"}The request failed. The body names the failure; a failed read does not terminate the dashboard.
object
Examplegenerated
{ "error": "example"}