Skip to navigation

Live events

Use GET https://api.bibleit.app/v1/lives/{live_id}/events with live.get. Service tokens observe their organization; finite personal and delegated tokens observe only their owner’s personal Lives. This operator resource does not consume viewer seats.

Omit after for an immediate live.snapshot, including on reconnect. Responses have schema_version: 1, type, resource_type: "live", resource_id, Live sequence, opaque cursor and data. Snapshot data contains current safe Live, display, queue, per-Live viewer settings and audience-safe Studio design. Queue is null in presentation mode; presentation data excludes editable documents.

Send the previous cursor as after, with wait=0..25 seconds (default 25). A current difference returns live.changed; otherwise the poll waits and returns stream.heartbeat with null data if unchanged at the deadline. Repeat after each response. Allow timeout margin for normal server queue/response latency, and use an independent HTTP connection for writes if your client queues requests behind an outstanding poll.

The cursor compares current state; it is not a durable log position or an HTTP ETag. Studio revision changes can change the cursor without changing the Live sequence. Notifications may coalesce or be missed; no replay, gap-free delivery or exactly-once guarantee is promised. Reconnect without after to resynchronize, and check schema_version before interpreting an envelope.

Watches share the 50-per-Live operator cap with browser management connections, separately from audience capacity. Each HTTP poll uses admission budgets. Current credential identity, scopes, ownership and processing policy are checked after waits. Rotation, expiry or revocation can return 401; denied authority 403; movement/deletion 404 (or an already-revoked watch 403); dependencies 503. Idle authorization is checked every five seconds by default and at the poll deadline. No database transaction is held while waiting.