Subscribe to one or more channels as `text/event-stream`.
const url = 'https://infra-hyphae.run/v0/projects/example/realtime/sse?channel=example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://infra-hyphae.run/v0/projects/example/realtime/sse?channel=example' \ --header 'Authorization: Bearer <token>'Frames are id: <seq>, event: <name>, data: <RealtimeEvent JSON>;
a : keep-alive comment every 15 s. Last-Event-ID replays, best
effort, events still in the channel’s in-memory ring (64 per channel);
there is no durable log. A subscriber that falls behind receives an
event: lagged frame and skips ahead. Bounds: at most 16 channels per
connection, 32 open connections per session (429), and the stream
ends after CLOUDD_REALTIME_IDLE_SECS (default 300) without an event.
Session owner only; project keys cannot subscribe in this phase.
The system channel carries project.woke, project.slept,
storage.object.stored, storage.object.deleted, snapshot.created,
project.restored, published by the routes that perform them.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”Query Parameters
Section titled “Query Parameters”Repeat the parameter or comma-separate for several channels.
Header Parameters
Section titled “Header Parameters”Responses
Section titled “ Responses ”Event stream.
Malformed or out-of-bounds input (invalid_request).
object
object
Example
{ "error": { "code": "invalid_request" }}Missing, malformed, duplicate, or unknown credential (authentication_required).
object
object
Example
{ "error": { "code": "invalid_request" }}Headers
Section titled “Headers”Unknown route, or a project the caller does not own (not_found).
object
object
Example
{ "error": { "code": "invalid_request" }}Too many open realtime connections for this session (conflict).
object
object
Example
{ "error": { "code": "invalid_request" }}