How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

LiveKit Signaling Protocol (WebSocket)

Bi-directional WebSocket signaling protocol used by LiveKit clients to coordinate WebRTC sessions with the SFU. Clients send `SignalRequest` protobuf messages and receive `SignalResponse` protobuf messages over a single `/rtc` WebSocket connection.

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).

2 operations 1 channels 133 schemas

Metadata

The identity and technical contract details declared by the specification.

Specification
AsyncAPI 2.6.0
API Version
1.0.0
Base URL
wss://your-project.livekit.cloud/rtc
License
Resource Areas
1

Channels & Operations 2

Across 1 channel, the API surfaces 2 operations. Each is listed below with its action, channel, parameters, and response codes.

Channels 2
SUB
/rtc
Server-to-client signal messages (SignalResponse oneof variants).
receiveSignalResponse body
PUB
/rtc
Client-to-server signal messages (SignalRequest oneof variants).
sendSignalRequest body

Messages & Schemas 133

The contract defines 133 schemas that model the data carried by its messages. The most detailed are AddTrackRequest (18 properties), JoinResponse (15 properties), RequestResponse (11 properties), JoinRequest (10 properties). Each schema is shown below with its type and property counts.

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
StreamState
string
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
CandidateProtocol
string
Ping
object
2 properties
Pong
object
2 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).
TrackType
string
TrackSource
string
VideoQuality
string
ConnectionQuality
string
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.

Specification

The full machine-readable AsyncAPI contract behind this narrative.

Source

livekit-asyncapi.yml Raw ↑

Other APIs LiveKit publishes across the network.

LiveKit RoomService API
LiveKit Egress API
LiveKit Ingress API
LiveKit SIP (Telephony) API
LiveKit Agents API
Where this information came from

This is an independent, third-party profile of LiveKit Signaling Protocol (WebSocket), published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.