Skip to main content
WSS
bearerAuth
type:http

API key authentication. Include your API key in the Authorization header as 'Bearer <api_key>'.

Browsers cannot set an Authorization header on a WebSocket upgrade. They can send the same credential as the subprotocol pair Sec-WebSocket-Protocol: access_token, <api_key>; the Sec-WebSocket-Protocol header under each channel's bindings has the full format.

headers
type:object
query
type:object
Video (bytes)

Binary video segment sent by the client for analysis. Each segment must not exceed 32MB. Accepts the following formats: mp4, avi, mov, mkv, mpeg-ts, mpeg-2-ts, webm.

Session Close
type:object

Inbound session.close text frame.

Session Config
type:object

Optional caller-supplied session configuration. This message can be sent at any time to update the configuration.

Conversation Quality Updated
type:object

Carries Conversation Quality Index values for the most recently closed cadence period. Emitted at most once per period and only when the caller has set at least one CQI include flag on the session-config message. data.overall is cumulative across the whole session up to the end of the just-closed period and is included whenever include: ["conversation_quality_overall"] was supplied. data.timeline carries a single entry covering the just-closed period and is included whenever include: ["conversation_quality_timeline"] was supplied — periods with no analyzer-reported signals still emit the timeline; its scores reflect any engagement contribution and fall back to all-50 defaults when nothing contributes, so the requested section is always present.

Coverage Degraded
type:object

Reports that one or more analysis windows were analyzed with partial visual coverage. Emitted when a window decodes materially less video than the window span while its audio runs to the end — typically a stream whose keyframe interval exceeds the analysis window (a static screen share, a long-GOP encoder). This is an informational notice, not an error: the session stays open, the windows were analyzed (audio plus whatever video decoded) and are billed normally. data.ranges lists the affected time ranges in absolute session-cumulative seconds; data.reason is currently always video_gap.

Coverage Dropped
type:object

Reports time ranges no analysis covers. Emitted when the analysis pipeline saturates under backpressure and has to skip buffered video, and when the incoming stream itself skipped ahead — a client stall whose media never arrived while its recorder clock kept running, so the stream resumed with a jump in its timestamps. This is an informational notice, not an error: the session stays open, subsequent windows continue uninterrupted, and the uncovered portions of the video are not billed. data.ranges lists the affected time ranges in absolute session-cumulative seconds.

Engagement Updated
type:object

Reports a change in engagement state. Emitted once when engagement is first established for the session, and again only when the detected engagement level differs from the most recently emitted level. data.start uses absolute session-cumulative time.

Error
type:object

Reports an error encountered while processing the stream. data.code carries the machine-readable error id (sub-type), and data.segment identifies the incoming caller segment when the failure maps to a specific chunk (size validation, quota); analysis-time failures that do not map to one chunk carry data.segment: null.

Session Closing
type:object

Acknowledges that an inbound session.close text frame was accepted. From this point the server rejects new binary video frames, finishes analyzing the video it already accepted (emitting the normal result envelopes in order), emits final lifecycle envelopes for still-open analysis state, sends session.ended, and closes the WebSocket. data.max_drain_seconds is the maximum time the caller should wait for session.ended after this acknowledgment; the session closes earlier when the accepted work finishes sooner.

Session Ended
type:object

The final message of a gracefully closed session. Emitted after every already-accepted analysis window has drained (or the max_drain_seconds deadline advertised on session.closing expired) and after the final lifecycle envelopes for still-open analysis state. No further analysis messages follow; the server closes the WebSocket (close code 1000) immediately after sending it.

Session Ready
type:object

Acknowledges that the v1 stream session is established. Emitted exactly once per session, immediately after the server accepts the WebSocket handshake. Carries the session-level contract (idle / max-duration timeouts, segment size and duration constraints, supported session-config options) so the caller can adapt its producer side without round-tripping rejections. Sessions that fail to fully establish close without this envelope; a client that has not seen session.ready must assume the session is not ready to receive video.

Session Updated
type:object

Acknowledges that an inbound stream_session_config_v1 text frame was accepted. Carries the consolidated post-apply config (include).

Signal Detected
type:object

Reports that a social signal has transitioned from inactive to active. Emitted once when the signal type is first detected for the session, and again only when the signal becomes active after a prior signal.ended. data.start uses absolute session-cumulative time.

Signal Ended
type:object

Reports that a previously active social signal is no longer active. Emitted when a signal type that was active in the previous analyzed window is not present in the current window. data.end uses absolute session-cumulative time.

Signal Updated
type:object

Reports that an already-active social signal experienced a change in probability. Emitted when an active signal type's probability has changed from the previous value reported for that signal type (either signal.detected or a prior signal.updated). data.start uses absolute session-cumulative time.