Table of Contents

Namespace LiveKit.Proto

Classes

ActiveSpeakersChanged
ApmProcessReverseStreamRequest
ApmProcessReverseStreamResponse
ApmProcessStreamRequest
ApmProcessStreamResponse
ApmSetStreamDelayRequest
ApmSetStreamDelayResponse
AttributesEntry
AudioDeviceInfo

Information about an audio device.

AudioEncoding
AudioFrameBufferInfo
AudioFrameReceived
AudioFrameReflection

Holder for reflection information generated from audio_frame.proto

AudioPlayoutStats
AudioResamplerInfo
AudioSourceInfo
AudioSourceOptions
AudioSourceStats
AudioStreamEOS
AudioStreamEvent
AudioStreamFromParticipantRequest
AudioStreamFromParticipantResponse
AudioStreamInfo
BufferInfo
ByteStreamInfo
ByteStreamOpenCallback
ByteStreamOpenRequest

Opens an outgoing stream. Call must be balanced with a StreamCloseRequest.

ByteStreamOpenResponse
ByteStreamOpened
ByteStreamReaderChunkReceived
ByteStreamReaderEOS
ByteStreamReaderEvent
ByteStreamReaderReadAllCallback
ByteStreamReaderReadAllRequest

Reads an incoming byte stream in its entirety.

ByteStreamReaderReadAllResponse
ByteStreamReaderReadIncrementalRequest

Reads an incoming byte stream incrementally.

ByteStreamReaderReadIncrementalResponse
ByteStreamReaderWriteToFileCallback
ByteStreamReaderWriteToFileRequest

Writes data from an incoming stream to a file as it arrives.

ByteStreamReaderWriteToFileResponse
ByteStreamWriterCloseCallback
ByteStreamWriterCloseRequest

Closes a stream writer.

ByteStreamWriterCloseResponse
ByteStreamWriterWriteCallback
ByteStreamWriterWriteRequest

Writes data to a stream writer.

ByteStreamWriterWriteResponse
CandidatePairStats
CaptureAudioFrameCallback
CaptureAudioFrameRequest

Push a frame to an AudioSource The data provided must be available as long as the client receive the callback.

CaptureAudioFrameResponse
CaptureVideoFrameRequest

Push a frame to a VideoSource

CaptureVideoFrameResponse
CertificateStats
ChatMessage
ChatMessageReceived
ClearAudioBufferRequest
ClearAudioBufferResponse
CodecStats
ConnectCallback
ConnectCallback.Types

Container for nested types declared in the ConnectCallback message type.

ConnectCallback.Types.ParticipantWithTracks
ConnectCallback.Types.Result
ConnectRequest

Connect to a new LiveKit room

ConnectResponse
Connected
ConnectionQualityChanged
ConnectionStateChanged
CreateAudioTrackRequest

Create a new AudioTrack from a AudioSource

CreateAudioTrackResponse
CreateVideoTrackRequest

Create a new VideoTrack from a VideoSource

CreateVideoTrackResponse
DataChannelBufferedAmountLowThresholdChanged
DataChannelStats
DataPacketReceived
DataStream
DataStream.Types

Container for nested types declared in the DataStream message type.

DataStream.Types.ByteHeader

header properties specific to byte or file streams

DataStream.Types.Chunk
DataStream.Types.Header

main DataStream.Header that contains a oneof for specific headers

DataStream.Types.TextHeader

header properties specific to text streams

DataStream.Types.Trailer
DataStreamChunkReceived
DataStreamHeaderReceived
DataStreamReflection

Holder for reflection information generated from data_stream.proto

DataStreamTrailerReceived
DataTrackError
DataTrackFrame

A frame published on a data track.

DataTrackInfo

Information about a published data track.

DataTrackOptions

Options for publishing a data track.

DataTrackPublished

A remote participant published a data track.

DataTrackReflection

Holder for reflection information generated from data_track.proto

DataTrackStreamEOS

Stream has ended.

DataTrackStreamEvent

Event emitted on an active stream.

DataTrackStreamFrameReceived

A frame was received.

DataTrackStreamReadRequest

Signal readiness to handle the next frame.

This allows the client to put backpressure on the internal receive buffer. Sending this request will cause the next frame to be sent via DataTrackStreamFrameReceived once one is available.

DataTrackStreamReadResponse
DataTrackSubscribeOptions

Reserved for future subscription options.

DataTrackUnpublished

A remote participant unpublished a data track.

DisconnectCallback
DisconnectRequest

Disconnect from the a room

DisconnectResponse
Disconnected
DisposeCallback
DisposeRequest

Stop all rooms synchronously (Do we need async here?). e.g: This is used for the Unity Editor after each assemblies reload. TODO(theomonnom): Implement a debug mode where we can find all leaked handles?

DisposeResponse
E2EeReflection

Holder for reflection information generated from e2ee.proto

E2eeManagerGetFrameCryptorsRequest
E2eeManagerGetFrameCryptorsResponse
E2eeManagerSetEnabledRequest
E2eeManagerSetEnabledResponse
E2eeOptions
E2eeRequest
E2eeResponse
E2eeStateChanged
EditChatMessageRequest
EnableRemoteTrackPublicationRequest

Enable/Disable a remote track publication

EnableRemoteTrackPublicationResponse
EnableRemoteTrackRequest

Enable/Disable a remote track

EnableRemoteTrackResponse
FfiEvent

To minimize complexity, participant events are not included in the protocol. It is easily deducible from the room events and it turned out that is is easier to implement on the ffi client side.

FfiOwnedHandle

Safety

The foreign language is responsable for disposing handles Forgetting to dispose the handle may lead to memory leaks

Dropping a handle doesn't necessarily mean that the object is destroyed if it is still used on the FfiServer (Atomic reference counting)

When refering to a handle without owning it, we just use a uint32 without this message. (the variable name is suffixed with "_handle")

FfiReflection

Holder for reflection information generated from ffi.proto

FfiRequest

This is the input of livekit_ffi_request function We always expect a response (FFIResponse, even if it's empty)

FfiResponse

This is the output of livekit_ffi_request function.

FlushSoxResamplerRequest
FlushSoxResamplerResponse
FrameCryptor
FrameCryptorSetEnabledRequest
FrameCryptorSetEnabledResponse
FrameCryptorSetKeyIndexRequest
FrameCryptorSetKeyIndexResponse
FrameMetadata
GetAudioDevicesRequest

Get available audio devices.

Returns lists of available recording (microphone) and playout (speaker) devices.

Platform Notes

  • Desktop (Windows/macOS/Linux): Returns all available devices with names and GUIDs.
  • Mobile (iOS/Android): Returns only one "default" device with empty name and GUID. Device enumeration is not meaningful on mobile - use for device count only.
GetAudioDevicesResponse
GetKeyRequest
GetKeyResponse
GetSessionStatsCallback
GetSessionStatsCallback.Types

Container for nested types declared in the GetSessionStatsCallback message type.

GetSessionStatsCallback.Types.Result
GetSessionStatsRequest
GetSessionStatsResponse
GetSharedKeyRequest
GetSharedKeyResponse
GetStatsCallback
GetStatsRequest
GetStatsResponse
HandleReflection

Holder for reflection information generated from handle.proto

IceCandidateStats
IceServer
InboundRtpStreamStats
KeyProviderOptions
LoadAudioFilterPluginRequest

Audio Filter Plugin

LoadAudioFilterPluginResponse
LocalDataTrackIsPublishedRequest

Checks if the track is still published.

LocalDataTrackIsPublishedResponse
LocalDataTrackTryPushError
LocalDataTrackTryPushRequest

Try pushing a frame to subscribers of the track.

LocalDataTrackTryPushResponse
LocalDataTrackUnpublishRequest

Unpublishes the track.

LocalDataTrackUnpublishResponse
LocalTrackMuteRequest

Mute/UnMute a track

LocalTrackMuteResponse
LocalTrackPublished
LocalTrackRepublished

Fired when the SDK auto-republishes a local track during a full reconnect. The FfiPublication handle is preserved across the cycle — language bindings should look up the existing publication object by previous_sid (its old SID), update its TrackPublicationInfo in place with info, and rekey it under the new SID. Apps holding a cached reference to the publication continue to see a valid object whose reads/writes hit current state.

LocalTrackSubscribed
LocalTrackUnpublished
LogBatch
LogRecord
MediaSourceStats
NewApmRequest
NewApmResponse
NewAudioResamplerRequest

Create a new AudioResampler

NewAudioResamplerResponse
NewAudioSourceRequest

Create a new AudioSource

NewAudioSourceResponse
NewAudioStreamRequest

Create a new AudioStream AudioStream is used to receive audio frames from a track

NewAudioStreamResponse
NewPlatformAudioRequest

Create a new PlatformAudio instance.

This enables the platform ADM for microphone capture and speaker playout. If another PlatformAudio instance exists, this reuses the same underlying ADM.

The returned handle must be kept alive while platform audio is needed. When all handles are released, the ADM is automatically disabled.

NewPlatformAudioResponse
NewSoxResamplerRequest
NewSoxResamplerResponse
NewVideoSourceRequest

Create a new VideoSource VideoSource is used to send video frame to a track

NewVideoSourceResponse
NewVideoStreamRequest

Create a new VideoStream VideoStream is used to receive video frames from a track

NewVideoStreamResponse
OutboundRtpStreamStats
OwnedApm
OwnedAudioFrameBuffer
OwnedAudioResampler
OwnedAudioSource
OwnedAudioStream
OwnedBuffer
OwnedByteStreamReader

A reader for an incoming stream.

OwnedByteStreamWriter
OwnedDataTrackStream

Handle to an active data track subscription.

Dropping the handle will unsubscribe from the track.

OwnedLocalDataTrack
OwnedParticipant
OwnedPlatformAudio

Owned PlatformAudio handle with info.

OwnedRemoteDataTrack
OwnedRoom
OwnedSoxResampler
OwnedTextStreamReader

A reader for an incoming stream.

OwnedTextStreamWriter
OwnedTrack
OwnedTrackPublication
OwnedVideoBuffer
OwnedVideoSource
OwnedVideoStream
Panic
ParticipantActive
ParticipantAttributesChanged
ParticipantConnected
ParticipantDisconnected
ParticipantEncryptionStatusChanged
ParticipantInfo
ParticipantMetadataChanged
ParticipantNameChanged
ParticipantPermission

copied from livekit-protocol/protocol/protobufs/livekit_models.proto and removed deprecated fields

ParticipantPermissionChanged
ParticipantReflection

Holder for reflection information generated from participant.proto

ParticipantTrackPermission
ParticipantsUpdated
PeerConnectionStats
PerformRpcCallback

FFI Callbacks

PerformRpcRequest

FFI Requests

PerformRpcResponse

FFI Responses

PlatformAudioInfo

Information about a PlatformAudio instance.

PublishDataCallback
PublishDataRequest

Publish data to other participants

PublishDataResponse
PublishDataTrackCallback
PublishDataTrackError
PublishDataTrackRequest

Publish a data track

PublishDataTrackResponse
PublishSipDtmfCallback
PublishSipDtmfRequest

Publish Sip DTMF messages to other participants

PublishSipDtmfResponse
PublishTrackCallback
PublishTrackRequest

Publish a track to the room

PublishTrackResponse
PublishTranscriptionCallback
PublishTranscriptionRequest

Publish transcription messages to room

PublishTranscriptionResponse
PushSoxResamplerRequest
PushSoxResamplerResponse
RatchetKeyRequest
RatchetKeyResponse
RatchetSharedKeyRequest
RatchetSharedKeyResponse
ReadyForRoomEventRequest
ReadyForRoomEventResponse
ReceivedRtpStreamStats
Reconnected
Reconnecting
RegisterRpcMethodRequest
RegisterRpcMethodResponse
RemixAndResampleRequest

Remix and resample an audio frame

RemixAndResampleResponse
RemoteDataTrackIsPublishedRequest

Checks if the track is still published.

RemoteDataTrackIsPublishedResponse
RemoteDataTrackPipelineOptions

Track-level options that configure how the incoming-frame pipeline reassembles packets for a remote data track.

RemoteDataTrackSetPipelineOptionsRequest
RemoteDataTrackSetPipelineOptionsResponse
RemoteInboundRtpStreamStats
RemoteOutboundRtpStreamStats
RoomEOS
RoomEvent
RoomInfo
RoomMetadataChanged
RoomOptions
RoomReflection

Holder for reflection information generated from room.proto

RoomSidChanged
RpcError
RpcMethodInvocationEvent

FFI Events

RpcMethodInvocationResponseRequest
RpcMethodInvocationResponseResponse
RpcReflection

Holder for reflection information generated from rpc.proto

RtcConfig
RtcStats
RtcStats.Types

Container for nested types declared in the RtcStats message type.

RtcStats.Types.CandidatePair
RtcStats.Types.Certificate
RtcStats.Types.Codec
RtcStats.Types.DataChannel
RtcStats.Types.InboundRtp
RtcStats.Types.LocalCandidate
RtcStats.Types.MediaPlayout
RtcStats.Types.MediaSource
RtcStats.Types.OutboundRtp
RtcStats.Types.PeerConnection
RtcStats.Types.RemoteCandidate
RtcStats.Types.RemoteInboundRtp
RtcStats.Types.RemoteOutboundRtp
RtcStats.Types.Stream
RtcStats.Types.Track

Deprecated

RtcStats.Types.Transport
RtcStatsData
RtpStreamStats
SendChatMessageCallback
SendChatMessageRequest
SendChatMessageResponse
SendStreamChunkCallback
SendStreamChunkRequest
SendStreamChunkResponse
SendStreamHeaderCallback
SendStreamHeaderRequest
SendStreamHeaderResponse
SendStreamTrailerCallback
SendStreamTrailerRequest
SendStreamTrailerResponse
SentRtpStreamStats
SetDataChannelBufferedAmountLowThresholdRequest
SetDataChannelBufferedAmountLowThresholdResponse
SetKeyRequest
SetKeyResponse
SetLocalAttributesCallback
SetLocalAttributesRequest

Change the local participant's attributes

SetLocalAttributesResponse
SetLocalMetadataCallback
SetLocalMetadataRequest

Change the local participant's metadata

SetLocalMetadataResponse
SetLocalNameCallback
SetLocalNameRequest

Change the local participant's name

SetLocalNameResponse
SetPlayoutDeviceRequest

Set the playout device (speaker/headphones).

Call this before connecting to select which speaker to use for audio output. Use the GUID from AudioDeviceInfo for stable device selection across hot-plug events.

Platform Notes

  • Desktop: Works as expected - selects from enumerated devices.
  • Mobile (iOS/Android): No-op. Mobile platforms handle audio routing at the system level. This will succeed but has no effect. For audio routing on mobile:
    • iOS: Use AVAudioSession to control speaker/earpiece/Bluetooth routing
    • Android: Use AudioManager.setSpeakerphoneOn() to switch outputs
SetPlayoutDeviceResponse
SetRecordingDeviceRequest

Set the recording device (microphone).

Call this before creating audio tracks to select which microphone to use. Use the GUID from AudioDeviceInfo for stable device selection across hot-plug events.

Platform Notes

  • Desktop: Works as expected - selects from enumerated devices.
  • Mobile (iOS/Android): No-op. Mobile platforms handle microphone selection at the system level. This will succeed but has no effect. Skip calling on mobile.
SetRecordingDeviceResponse
SetRemoteTrackPublicationQualityRequest

For tracks that support simulcasting, adjust subscribed quality.

SetRemoteTrackPublicationQualityResponse
SetSharedKeyRequest
SetSharedKeyResponse
SetSubscribedRequest

Change the "desire" to subs2ribe to a track

SetSubscribedResponse
SetTrackSubscriptionPermissionsRequest
SetTrackSubscriptionPermissionsResponse
SimulateScenarioCallback
SimulateScenarioRequest
SimulateScenarioResponse
SipDTMF
SoxResamplerInfo
StartRecordingRequest

Start recording from the microphone.

Recording is started automatically when PlatformAudio is created. Use this to resume recording after calling StopRecording. This also turns on the system's recording privacy indicator.

StartRecordingResponse
StatsReflection

Holder for reflection information generated from stats.proto

StopRecordingRequest

Stop recording from the microphone.

Use this to temporarily stop recording without disposing PlatformAudio. This will turn off the system's recording privacy indicator (e.g., on macOS/iOS). Call StartRecording to resume recording.

StopRecordingResponse
StreamByteOptions
StreamError

Error pertaining to a stream.

StreamSendBytesCallback
StreamSendBytesRequest

Sends bytes over a data stream.

StreamSendBytesResponse
StreamSendFileCallback
StreamSendFileRequest

Sends the contents of a file over a data stream.

StreamSendFileResponse
StreamSendTextCallback
StreamSendTextRequest

Sends text over a data stream.

StreamSendTextResponse
StreamStats
StreamTextOptions
SubscribeDataTrackError
SubscribeDataTrackRequest

Subscribe to a data track.

SubscribeDataTrackResponse
TextStreamInfo
TextStreamInfo.Types

Container for nested types declared in the TextStreamInfo message type.

TextStreamOpenCallback
TextStreamOpenRequest

Opens an outgoing text stream. Call must be balanced with a TextStreamCloseRequest.

TextStreamOpenResponse
TextStreamOpened
TextStreamReaderChunkReceived
TextStreamReaderEOS
TextStreamReaderEvent
TextStreamReaderReadAllCallback
TextStreamReaderReadAllRequest

Reads an incoming text stream in its entirety.

TextStreamReaderReadAllResponse
TextStreamReaderReadIncrementalRequest

Reads an incoming text stream incrementally.

TextStreamReaderReadIncrementalResponse
TextStreamWriterCloseCallback
TextStreamWriterCloseRequest

Closes a text stream writer.

TextStreamWriterCloseResponse
TextStreamWriterWriteCallback
TextStreamWriterWriteRequest

Writes text to a text stream writer.

TextStreamWriterWriteResponse
TokenRefreshed
TrackEvent
TrackInfo
TrackMuted
TrackPublicationInfo
TrackPublicationReflection

Holder for reflection information generated from track_publication.proto

TrackPublishOptions
TrackPublished
TrackReflection

Holder for reflection information generated from track.proto

TrackSubscribed

Publication isn't needed for subscription events on the FFI The FFI will retrieve the publication using the Track sid

TrackSubscriptionFailed
TrackUnmuted
TrackUnpublished
TrackUnsubscribed
TranscriptionReceived
TranscriptionSegment
TransportStats
UnpublishTrackCallback
UnpublishTrackRequest

Unpublish a track from the room

UnpublishTrackResponse
UnregisterRpcMethodRequest
UnregisterRpcMethodResponse
UpdateRemoteTrackPublicationDimensionRequest

update a remote track publication dimension

UpdateRemoteTrackPublicationDimensionResponse
UserPacket
VideoBufferInfo
VideoBufferInfo.Types

Container for nested types declared in the VideoBufferInfo message type.

VideoBufferInfo.Types.ComponentInfo
VideoConvertRequest
VideoConvertResponse
VideoEncoding
VideoFrameReceived
VideoFrameReflection

Holder for reflection information generated from video_frame.proto

VideoResolution
VideoSourceInfo
VideoSourceResolution
VideoSourceStats
VideoStreamEOS
VideoStreamEvent
VideoStreamFromParticipantRequest

Request a video stream from a participant

VideoStreamFromParticipantResponse
VideoStreamInfo

Enums

AudioSourceType
AudioStreamEvent.MessageOneofCase

Enum of possible cases for the "message" oneof.

AudioStreamType
AudioTrackFeature
ByteStreamOpenCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

ByteStreamReaderEvent.DetailOneofCase

Enum of possible cases for the "detail" oneof.

ByteStreamReaderReadAllCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

ByteStreamReaderWriteToFileCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

ConnectCallback.MessageOneofCase

Enum of possible cases for the "message" oneof.

ConnectionQuality
ConnectionState
ContinualGatheringPolicy
DataChannelState
DataPacketKind
DataPacketReceived.ValueOneofCase

Enum of possible cases for the "value" oneof.

DataStream.Types.Header.ContentHeaderOneofCase

Enum of possible cases for the "content_header" oneof.

DataStream.Types.OperationType

enum for operation types (specific to TextHeader)

DataTrackErrorCode
DataTrackStreamEvent.DetailOneofCase

Enum of possible cases for the "detail" oneof.

DisconnectReason
DtlsRole
DtlsTransportState
E2eeRequest.MessageOneofCase

Enum of possible cases for the "message" oneof.

E2eeResponse.MessageOneofCase

Enum of possible cases for the "message" oneof.

EncryptionState
EncryptionType
FfiEvent.MessageOneofCase

Enum of possible cases for the "message" oneof.

FfiRequest.MessageOneofCase

Enum of possible cases for the "message" oneof.

FfiResponse.MessageOneofCase

Enum of possible cases for the "message" oneof.

GetSessionStatsCallback.MessageOneofCase

Enum of possible cases for the "message" oneof.

IceCandidatePairState
IceCandidateType
IceRole
IceServerTransportProtocol
IceTcpCandidateType
IceTransportState
IceTransportType
KeyDerivationFunction
LocalDataTrackTryPushErrorCode
LogLevel
NewPlatformAudioResponse.MessageOneofCase

Enum of possible cases for the "message" oneof.

NewSoxResamplerResponse.MessageOneofCase

Enum of possible cases for the "message" oneof.

PacketTrailerFeature
ParticipantKind
ParticipantKindDetail
ParticipantState
PublishDataTrackCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

PublishDataTrackErrorCode
PublishTrackCallback.MessageOneofCase

Enum of possible cases for the "message" oneof.

QualityLimitationReason
RoomEvent.MessageOneofCase

Enum of possible cases for the "message" oneof.

RtcStats.StatsOneofCase

Enum of possible cases for the "stats" oneof.

SendChatMessageCallback.MessageOneofCase

Enum of possible cases for the "message" oneof.

SimulateScenarioKind

Simulate a reconnection scenario for testing. Mirrors the variants of livekit::SimulateScenario. The Resume / FullReconnect variants are the relevant ones for verifying that resume preserves publications and full reconnect republishes them exactly once.

SoxFlagBits
SoxQualityRecipe
SoxResamplerDataType
StreamSendBytesCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

StreamSendFileCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

StreamSendTextCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

StreamState
SubscribeDataTrackErrorCode
TextStreamInfo.Types.OperationType
TextStreamOpenCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

TextStreamReaderEvent.DetailOneofCase

Enum of possible cases for the "detail" oneof.

TextStreamReaderReadAllCallback.ResultOneofCase

Enum of possible cases for the "result" oneof.

TrackKind
TrackSource
VideoBufferType

Values of this enum must not be changed It is used to serialize a rtc.VideoFrame on Python

VideoCodec
VideoConvertResponse.MessageOneofCase

Enum of possible cases for the "message" oneof.

VideoQuality

Video quality for simulcasted tracks.

VideoRotation
VideoSourceType
VideoStreamEvent.MessageOneofCase

Enum of possible cases for the "message" oneof.

VideoStreamType