For the complete documentation index, see llms.txt. This page is also available as Markdown.

Zoom Session Events (SSE)

Real-time Server-Sent Event stream for live Zoom session bot status and transcript updates.

The Scribe API exposes a live event stream for active Zoom sessions. The stream delivers bot lifecycle updates and transcript segments in real time so the client does not need to poll.

Opening the Stream

GET /sessions/{session_id}/events

The endpoint requires the same provider-JWT authentication used by other Scribe session endpoints. Because an Authorization header is required, use fetch streaming rather than the browser EventSource API.

The response content type is text/event-stream.

Path Parameters

Parameter
Type
Description

session_id

string (UUID)

The session to stream events for. Must be an active Zoom session owned by the authenticated provider.

Request Headers

Header
Required
Description

Authorization

Yes

Provider JWT bearer token.

Last-Event-ID

No

The id of the last event the client received. When present, the server replays recent events from that offset so no frames are lost on reconnect.

Event Types

Each SSE frame is delivered as event: <type>\ndata: <json>\n\n. Frames include an id field that clients should store for reconnect replay.

Event
Description
Terminal

bot_status

Bot lifecycle state change.

Yes, when state is done or error.

transcript_segment

A finalized transcript utterance.

No

interim_transcript

An in-progress (not yet final) transcript hypothesis for the same ordinal. Replaced by the subsequent transcript_segment with the same ordinal.

No

transcript_finalized

Emitted once when the full transcript is complete. Empty payload ({}).

No

ping

Keepalive frame with an empty payload ({}).

No

bot_status Payload

Field
Type
Description

state

string

One of: joining, waiting_for_host, waiting_for_participant, playing_disclosure, listening, paused, idle, leaving, done, error.

reason

string or null

A machine-readable reason on non-happy-path transitions (e.g. join_timeout, upstream_unavailable).

When state is done or error, the stream closes immediately after the frame. Clients should stop reconnecting.

transcript_segment / interim_transcript Payload

Field
Type
Description

ordinal

integer

Monotonically increasing segment index. Use this to deduplicate or replace interim with final.

speaker

string or null

Speaker label, when available.

text

string

The transcript text.

timestamp

string

Timestamp of the utterance.

Reconnect Behavior

If the connection drops, open a new GET request with Last-Event-ID set to the last received event id. The server replays recent events from that offset. The stream is stateless from the client's perspective - all replay state is managed server-side.

Error Responses

Status
Description

401

Missing or invalid authentication.

403

The authenticated provider does not own this session.

404

No live Zoom event stream exists. Returned for non-Zoom sessions, unknown session IDs, sessions that have already completed, or sessions without an active bot.

503

The live event stream is temporarily unavailable. Retry after a short delay.

If the upstream event source fails mid-stream, the server emits a terminal bot_status frame with state: "error" and reason: "upstream_unavailable", then closes the stream. The client should reconnect with its stored Last-Event-ID.

Example

Last updated

Was this helpful?