Skip to main content

Calls & Peers

CallAPI

Public API for a single call. Combines an event emitter over CallEvents with the Disposable contract and exposes the peers, broadcasts, and moderation actions a call host needs.

interface CallAPI {
__events: CallEvents;
broadcasts: Map<string, BroadcastAPI>;
id: string;
isDisposed: boolean;
isOwner: boolean;
peers: PeerAPI[];
state: active | closed | stall | error;
videoCodecGap: VideoCodecGapInfo | literal;
}

PeerAPI

Represents a remote connected user within a CallAPI. Exposes the peer's streams and identity, and emits per-stream and per-player events.

interface PeerAPI {
__events: PeerEvents;
appData: Record<string, unknown>;
call?: CallAPI;
displayName?: string;
isDisposed: boolean;
peerId?: string;
userId?: string;
}

ProducerStats

Producer statistics reported periodically by the SFU for an outbound media track.

interface ProducerStats {
bitrate: number;
frames: number;
height: number;
nowMS?: number;
ssrx?: number;
width: number;
}

VideoCodecGapInfo

The video-codec NEGOTIATION GAP for a call, computed once after the mediasoup Device.load. unreceivable lists the router VIDEO codecs (non-rtx) this browser's WebRTC stack did NOT negotiate as receivable (e.g. Safari cannot receive H264 Main/High); negotiated lists the device's negotiated video profiles. unreceivable empty = no gap.

interface VideoCodecGapInfo {
negotiated: object[];
unreceivable: object[];
}

CallEvents

Event map emitted by a CallAPI instance. Each entry's value type describes the payload supplied to the listener.

type CallEvents = {
accessDenied: object;
callClosed: object;
callEnded: void;
callId: object;
callJoinEndpoint: void;
callReady: boolean;
disposed: void;
dominantSpeaker: DominantSpeaker;
error: Error;
isConnected: boolean;
isConnecting: boolean;
peerAdded: object;
peerAtCapacity: boolean;
peerRemoved: object;
playerAdded: object;
playerRemoved: object;
producerStats: ProducerStats[];
sfuConnection: void;
streamAdded: object;
streamRemoved: object;
transportStateChange: object;
videoCodecGap: VideoCodecGapInfo;
videoConsumer: void;
viewerKicked: void;
websocketReconnect: void;
zeroBitrate: indexedAccess;
}

CallOptions

Input shape accepted by callOptionsSchema before parsing — fields with defaults are still optional here.

type CallOptions = input<query>
input

DominantSpeaker

Dominant-speaker payload inferred from DominantSpeakerSchema.

type DominantSpeaker = TypeOf<query>
TypeOf

PeerEvents

Event map emitted by a PeerAPI instance.

type PeerEvents = {
accessDenied: object;
disposed: void;
error: Error;
playerAdded: object;
playerRemoved: object;
streamAdded: object;
streamRemoved: object;
videoConsumer: void;
}

SFUJoinOptions

SFU join options inferred from SFUJoinOptionsSchema.

type SFUJoinOptions = TypeOf<query>
TypeOf

SFUUser

Parsed SFU user inferred from sfuUserSchema.

type SFUUser = TypeOf<query>
TypeOf