ServiceBoundMessage (client to server) or ClientBoundMessage (server to client).
Messages are binary-encoded protobuf. JSON examples below are shown for readability. Download the proto file.
Need VAD-only without LLM inference? See the VAD WebSocket Protocol for a dedicated VAD API that streams voice activity events.
Connection
Client Messages
Messages sent from client to server, wrapped inServiceBoundMessage.
InitializeSessionRequest
InitializeSessionRequest
Must be the first message sent. Configures the session parameters.
ReconfigureSessionRequest
ReconfigureSessionRequest
Reconfigure an ongoing session. Useful for changing audio input settings or the system prompt on the fly. You can update either field or both.
UserInput
UserInput
User input data (audio or text).
- Audio Input
- Text Input
UpdateToolDefinitionsRequest
UpdateToolDefinitionsRequest
Define or update available tools. Replaces all existing definitions.
Each
ToolDefinition contains:ToolCallResponse
ToolCallResponse
Response to a tool call request from the server.
TriggerInference
TriggerInference
Manually trigger inference processing immediately, instead of waiting for natural pauses or end-of-input signals.
Primary use case is generating an initial greeting. Model behavior may be unpredictable if used directly after a model response.
ExportChatHistoryRequest
ExportChatHistoryRequest
Request the full conversation history. The server responds with a
ChatHistory message.PlaybackPositionReport
PlaybackPositionReport
Reports how many audio bytes the client has played. Only sent when the client declares
supports_playback_reporting: true in InitializeSessionRequest.The server uses this data to accurately truncate the LLM context to exactly what the user heard when they interrupt. Without this, the server falls back to elapsed-time estimation.DirectSpeech
DirectSpeech
Instructs the service to speak the given text via TTS immediately, bypassing the LLM. Any active inference is cancelled and the audio buffer is cleared before the text is spoken.
ConversationQuery
ConversationQuery
Runs a one-shot LLM inference over the current conversation history without modifying it. Useful for side tasks like summarization or classification. The server responds with a
ConversationQueryResult.At least one of prompt or instructions must be provided.Server Messages
Messages sent from server to client, wrapped inClientBoundMessage.
ModelTextFragment
ModelTextFragment
Streamed text output as tokens arrive.
ModelAudioChunk
ModelAudioChunk
TTS audio output when a TTS provider is configured.
The
transcript field is optional — it may be absent from a given chunk entirely.- Deepslate hosted TTS does not populate
transcript. - Third-party TTS providers (e.g., ElevenLabs) may populate it to supply word-level alignment data alongside the audio.
ToolCallRequest
ToolCallRequest
Model requests to execute a tool.
PlaybackClearBuffer
PlaybackClearBuffer
Notification to clear the audio playback buffer. Sent proactively when the user starts speaking, regardless of whether there is ongoing TTS playback.When received, immediately discard any buffered audio that hasn’t been played yet. This message may be sent multiple times if the user interrupts multiple times.
ResponseBegin
ResponseBegin
Notification that the model has begun its response.
ResponseEnd
ResponseEnd
Notification that the model has finished its response.
ChatHistory
ChatHistory
The full conversation history, returned in response to
ExportChatHistoryRequest.SessionErrorNotification
SessionErrorNotification
Structured error notification sent before the server closes the connection.
UserTranscriptionResult
UserTranscriptionResult
Async transcription result for a completed user audio turn. Sent after the transcription worker finishes processing.
ConversationQueryResult
ConversationQueryResult
Result of a
ConversationQuery request.Type Definitions
AudioLineConfiguration
SampleFormat
VadConfiguration
Voice Activity Detection settings.InferenceConfiguration
TtsConfiguration
Optional text-to-speech configuration. If omitted, raw text fragments are sent.- ElevenLabs
- Hosted
ElevenLabsVoiceSettings
Fine-tuning settings for ElevenLabs voices.ElevenLabsLocation
Controls which ElevenLabs regional endpoint is used. See ElevenLabs data residency docs for details.HostedVoiceRef
Reference a Deepslate-hosted voice that is already available on the server.HostedVoiceCloneV1
Provide an inline custom voice clone for hosted TTS using reference audio and its exact transcript.HostedTtsMode
Controls the quality/latency trade-off for hosted TTS generation.Duration
InferenceTriggerMode
Controls how this input interacts with ongoing inference.TextData
Text input wrapper.ChatMessage
A single message in the conversation history.ChatMessageRole
ChatDeliveryStatus
ChatMessageContent
A single content block within a chat message. Contains one of:ChatTextContent
Text content from a conversation turn, with optional TTS audio. When TTS is active, each synthesized sentence becomes aChatTextContent with both fields populated.
ChatAudioData
Self-describing audio data including format metadata so consumers can decode without out-of-band knowledge.If you reconfigure the audio pipeline mid-conversation, the format may change. Always inspect the
format field rather than assuming it matches the initial configuration.SessionErrorCategory
Broad error categories for programmatic handling ofSessionErrorNotification.