Stream organization events (SSE)
Events and webhooks
Stream organization events (SSE)
Open a long-lived org-scoped SSE stream.
GET
Stream organization events (SSE)
Passes through named bus events with a
: ping heartbeat every 15 s. The
full event catalog flows: graph.updated and the import.* /
identity.* families in-process, and worker-origin events
(job.completed, insight.proposed, contradiction.detected,
belief.superseded, basin.shifted, brain.trained) via the
database bridge. Subject-scoped events reach only the subject’s own stream;
org-readable events reach every member’s stream. A
per-organization cap of 5 concurrent streams applies: the sixth returns 429
too_many_streams with Retry-After. Last-Event-ID is accepted for
compatibility with resuming clients but is not replayed in v1.
Authorization
This route requires theread scope.
A missing or invalid credential returns 401 authentication_error. A valid credential without the scope returns 403 permission_denied, and the problem body names the exact scope required.
Headers
These are request conventions the contract does not declare as parameters, so they do not appear in the schema tables below.Success responses
Errors
Beyond the shared statuses, this route can answer with
too_many_streams. Every problem body names its own code, and the type URI always resolves to the matching page.
Every error is an RFC 9457 application/problem+json body carrying a stable code, a requestId, and a suggestedAction where Exo has one. See Errors.
Notes
- Five concurrent streams per organization. The sixth is 429
too_many_streamswithRetry-After. - v1 does not replay.
Last-Event-IDis accepted so resuming clients do not error, and it is ignored. A client that must not miss a transition should use a webhook. - Reach differs by event. Events about the organization reach every member. Events about a person reach that person only. See Events.