LiveKit Signaling Protocol (WebSocket) is one of 6 APIs that LiveKit publishes on the APIs.io network, described by an AsyncAPI event-driven specification.
Tagged areas include WebSocket, Signaling, WebRTC, Protobuf, and AsyncAPI. The published artifact set on APIs.io includes API documentation and an AsyncAPI specification.
This event API exposes
2 operations
across 1 channel,
and defines 133 schemas.
It is described by AsyncAPI 2.6.0, at version 1.0.0.
The API connects through a single server, wss://{host}/rtc (wss).
The identity and technical contract details declared by the specification.
OfferRequest
message
Client sends an SDP offer to the publisher peer connection.
AnswerRequest
message
Client SDP answer in response to a server-sent subscriber offer.
TrickleRequest
message
ICE candidate exchanged in either direction.
AddTrack
message
Request to publish a new track.
MuteTrack
message
Mute or unmute a published track.
UpdateSubscription
message
Subscribe to or unsubscribe from one or more tracks.
UpdateTrackSettings
message
Adjust quality/dimensions/fps of subscribed tracks.
Leave
message
Client requests session termination.
UpdateLayers
message
Update published video track dimensions (deprecated).
UpdateSubscriptionPermission
message
Update which participants can subscribe to which of this participant's tracks.
SyncState
message
Synchronize subscription / publish state when resuming a session.
Simulate
message
Trigger a client validation scenario on the server.
PingLegacy
message
Legacy client keep-alive ping (int64 timestamp, deprecated by pingreq).
UpdateMetadata
message
Update local participant metadata, name, or attributes.
Ping
message
Client keep-alive ping (current, supersedes legacy int64 ping).
UpdateLocalAudioTrack
message
Update audio feature flags (DTX, RED, stereo, etc.) on a published audio track.
UpdateLocalVideoTrack
message
Update dimensions for a published video track.
PublishDataTrack
message
Publish a new data track.
UnpublishDataTrack
message
Remove a previously published data track.
UpdateDataSubscription
message
Subscribe or unsubscribe from data tracks.
Join
message
Server confirms the client has joined the room.
AnswerResponse
message
Server SDP answer to the publisher offer.
OfferResponse
message
Server SDP offer for the subscriber peer connection.
TrickleResponse
message
Server-sent ICE candidate.
Update
message
Notification of remote participants joining, leaving, or changing.
TrackPublished
message
Confirms a track publication and returns the assigned track info.
LeaveResponse
message
Server instructs the client to disconnect, resume, or reconnect.
MuteResponse
message
Server-initiated mute/unmute notification.
SpeakersChanged
message
Delta list of active speakers.
RoomUpdate
message
Room metadata change.
ConnectionQuality
message
Connection quality updates for one or more participants.
StreamStateUpdate
message
Track-level stream state (active or paused) updates.
SubscribedQualityUpdate
message
Updates the set of enabled video qualities for a subscribed track.
SubscriptionPermissionUpdate
message
Notification that a participant's subscription permission to a track has changed.
RefreshToken
message
Server-issued replacement access token before the current token expires.
TrackUnpublished
message
A previously published track has been unpublished.
PongLegacy
message
Legacy server pong (int64 timestamp, deprecated by pongresp).
Reconnect
message
Sent during a successful WebSocket resume with updated ICE servers and config.
Pong
message
Server response to client Ping (current).
SubscriptionResponse
message
Result of a subscription operation (success or error).
RequestResponse
message
Server response to a request identified by requestid (mute, addtrack, etc.).
TrackSubscribed
message
Notification that a subscribed track is now ready for media.
RoomMoved
message
The participant has been migrated to a different room/server.
MediaSectionsRequirement
message
Required number of audio and video media sections for the publisher.
SubscribedAudioCodecUpdate
message
Updates the audio codec subscription preferences for a track.
PublishDataTrackResponse
message
Server response after publishing a data track.
UnpublishDataTrackResponse
message
Server response after unpublishing a data track.
DataTrackSubscriberHandles
message
Mapping from incoming packet handles to subscribed data track SIDs.
SessionDescription
object
WebRTC session description (SDP).
4 properties
TrickleRequest
object
A trickled ICE candidate destined for one of the peer connections.
3 properties
SignalTarget
string
Identifies which peer connection a signal is targeted at.
SimulcastCodec
object
Codec configuration for a simulcast track.
4 properties
VideoLayerMode
string
VideoLayer.Mode from livekitmodels.proto.
AddTrackRequest
object
Request to publish a track.
18 properties
MuteTrackRequest
object
2 properties
UpdateSubscription
object
3 properties
ParticipantTracks
object
2 properties
UpdateTrackSettings
object
7 properties
UpdateLocalAudioTrack
object
2 properties
UpdateLocalVideoTrack
object
3 properties
UpdateVideoLayers
object
2 properties
UpdateParticipantMetadata
object
4 properties
PublishDataTrackRequest
object
3 properties
PublishDataTrackResponse
object
1 property
UnpublishDataTrackRequest
object
1 property
UnpublishDataTrackResponse
object
1 property
UpdateDataSubscription
object
1 property
UpdateDataSubscriptionUpdate
object
Single entry in UpdateDataSubscription.updates.
3 properties
DataTrackSubscriptionOptions
object
Subscriber options for a data track (see livekitmodels.proto).
DataTrackInfo
object
Descriptor for a data track (see livekitmodels.proto).
DataTrackSubscriberHandles
object
Maps subscriber handles in incoming packets to the track SIDs they belong to.
1 property
PublishedDataTrack
object
3 properties
JoinResponse
object
Sent by the server in response to a join.
15 properties
ReconnectResponse
object
4 properties
LeaveRequest
object
Either client- or server-initiated session termination.
4 properties
LeaveAction
string
Action a client should take on receiving a LeaveRequest.
RoomMovedResponse
object
4 properties
TrackPublishedResponse
object
2 properties
TrackUnpublishedResponse
object
1 property
TrackSubscribed
object
1 property
ParticipantUpdate
object
1 property
SpeakersChanged
object
1 property
SpeakerInfo
object
3 properties
RoomUpdate
object
1 property
ConnectionQualityInfo
object
3 properties
ConnectionQualityUpdate
object
1 property
StreamStateInfo
object
3 properties
StreamStateUpdate
object
1 property
SubscribedQuality
object
2 properties
SubscribedCodec
object
2 properties
SubscribedQualityUpdate
object
3 properties
SubscribedAudioCodec
object
Audio codec subscription preference (see livekitmodels.proto).
SubscribedAudioCodecUpdate
object
2 properties
TrackPermission
object
4 properties
SubscriptionPermission
object
2 properties
SubscriptionPermissionUpdate
object
3 properties
SyncState
object
8 properties
DataChannelReceiveState
object
2 properties
DataChannelInfo
object
3 properties
SimulateScenario
object
oneof of simulated scenarios for client validation.
9 properties
RegionSettings
object
1 property
RegionInfo
object
3 properties
SubscriptionResponse
object
2 properties
RequestResponse
object
Server response to a client request identified by requestId.
11 properties
RequestResponseReason
string
MediaSectionsRequirement
object
2 properties
ICEServer
object
3 properties
ConnectionSettings
object
5 properties
JoinRequest
object
Client-side initial join payload (when not using legacy WS query params alone). Some transports wrap this in WrappedJoinRequest with optional compression.
10 properties
WrappedJoinRequest
object
2 properties
Room
object
Room descriptor (livekitmodels.proto Room).
ParticipantInfo
object
Participant descriptor (livekitmodels.proto ParticipantInfo).
TrackInfo
object
Track descriptor (livekitmodels.proto TrackInfo).
Codec
object
Codec configuration entry (livekitmodels.proto Codec).
VideoLayer
object
Spatial layer info for a video track (livekitmodels.proto VideoLayer).
ClientInfo
object
Client platform and capability info (livekitmodels.proto ClientInfo).
ClientConfiguration
object
Server-provided client settings (livekitmodels.proto ClientConfiguration).
ServerInfo
object
Server version, region, and edition info (livekitmodels.proto ServerInfo).
DisconnectReason
string
livekitmodels.proto DisconnectReason.
ReconnectReason
string
livekitmodels.proto ReconnectReason.
SubscriptionError
string
livekitmodels.proto SubscriptionError.
EncryptionType
string
livekitmodels.proto Encryption.Type.
BackupCodecPolicy
string
livekitmodels.proto BackupCodecPolicy.
AudioTrackFeature
string
livekitmodels.proto AudioTrackFeature.
PacketTrailerFeature
string
livekitmodels.proto PacketTrailerFeature.
The full machine-readable AsyncAPI contract behind this narrative.
Other APIs LiveKit publishes across the network.