> For clean Markdown of any page, append `.md` to the page URL. > For a complete documentation index, see https://docs.sarvam.ai/llms.txt. > For full documentation content in one file, see https://docs.sarvam.ai/llms-full.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sarvam.ai/_mcp/server. # Realtime Streaming GET /speech-to-text-realtime/ws WebSocket channel for real-time speech to text streaming powered by the `saaras:v3-realtime` (default) or `saaras:v4` model. **Authentication:** Pass your API subscription key via the `API-SUBSCRIPTION-KEY` header, or (in browsers) via the WebSocket subprotocol `api-subscription-key.` — the server echoes the subprotocol back. **Note:** This API Reference page is provided for informational purposes only. The Try It playground may not provide the best experience for streaming audio. For optimal streaming performance, please use the SDK or implement your own WebSocket client. Reference: https://docs.sarvam.ai/api-reference/speech-to-text/transcribe/realtime/ws ## AsyncAPI Specification ```yaml asyncapi: 2.6.0 info: title: speechToTextRealtimeStreaming version: subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming description: > WebSocket channel for real-time speech to text streaming powered by the `saaras:v3-realtime` (default) or `saaras:v4` model. **Authentication:** Pass your API subscription key via the `API-SUBSCRIPTION-KEY` header, or (in browsers) via the WebSocket subprotocol `api-subscription-key.` — the server echoes the subprotocol back. **Note:** This API Reference page is provided for informational purposes only. The Try It playground may not provide the best experience for streaming audio. For optimal streaming performance, please use the SDK or implement your own WebSocket client. channels: /speech-to-text-realtime/ws: description: > WebSocket channel for real-time speech to text streaming powered by the `saaras:v3-realtime` (default) or `saaras:v4` model. **Authentication:** Pass your API subscription key via the `API-SUBSCRIPTION-KEY` header, or (in browsers) via the WebSocket subprotocol `api-subscription-key.` — the server echoes the subprotocol back. **Note:** This API Reference page is provided for informational purposes only. The Try It playground may not provide the best experience for streaming audio. For optimal streaming performance, please use the SDK or implement your own WebSocket client. bindings: ws: query: type: object properties: language_code: $ref: '#/components/schemas/speechToTextRealtimeStreaming_language_code' model: $ref: '#/components/schemas/speechToTextRealtimeStreaming_model' default: saaras:v3-realtime stream_type: $ref: '#/components/schemas/speechToTextRealtimeStreaming_stream_type' default: balanced mode: $ref: '#/components/schemas/speechToTextRealtimeStreaming_mode' default: transcribe prompt: type: string keyterms: type: string endpointing: $ref: '#/components/schemas/speechToTextRealtimeStreaming_endpointing' default: vad encoding: $ref: '#/components/schemas/speechToTextRealtimeStreaming_encoding' default: linear16 sample_rate: $ref: '#/components/schemas/speechToTextRealtimeStreaming_sample_rate' default: 16000 return_timestamps: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_return_timestamps default: 'false' threshold: type: string default: 0.3 prefix_padding_ms: type: string default: 300 silence_duration_ms: type: string default: 500 min_speech_duration_ms: type: string default: 250 headers: type: object properties: Api-Subscription-Key: type: string publish: operationId: >- subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-publish summary: Server messages message: oneOf: - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-0-Realtime Session Begin - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-1-Realtime VAD Events - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-2-Realtime VAD Events - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-3-Realtime Partial Transcript - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-4-Realtime Final Transcript - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-5-Realtime Config Updated - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-6-Realtime Pong - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-7-Realtime Session End - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-8-Realtime Error subscribe: operationId: >- subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-subscribe summary: Client messages message: oneOf: - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-0-Realtime Audio Input - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-1-Realtime Speech Start - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-2-Realtime Speech End - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-3-Realtime Flush - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-4-Realtime Config Update - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-5-Realtime End Session - $ref: >- #/components/messages/subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-6-Realtime Ping servers: Production: url: wss://api.sarvam.ai/ protocol: wss x-default: true components: messages: subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-0-Realtime Session Begin: name: Realtime Session Begin title: Realtime Session Begin description: Receive the session.begin event with the resolved session config payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeSessionBegin subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-1-Realtime VAD Events: name: Realtime VAD Events title: Realtime VAD Events description: Receive VAD speech start/end events (endpointing=vad only) payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeVadSpeechStart subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-2-Realtime VAD Events: name: Realtime VAD Events title: Realtime VAD Events description: Receive VAD speech start/end events (endpointing=vad only) payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeVadSpeechEnd subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-3-Realtime Partial Transcript: name: Realtime Partial Transcript title: Realtime Partial Transcript description: Receive streaming partial transcripts during an utterance payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeTranscriptPartial subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-4-Realtime Final Transcript: name: Realtime Final Transcript title: Realtime Final Transcript description: Receive the final transcript for a completed utterance payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeTranscriptFinal subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-5-Realtime Config Updated: name: Realtime Config Updated title: Realtime Config Updated description: Receive the config.updated acknowledgement after a config.update payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeConfigUpdated subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-6-Realtime Pong: name: Realtime Pong title: Realtime Pong description: Receive the pong response to a client ping payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimePong' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-7-Realtime Session End: name: Realtime Session End title: Realtime Session End description: Receive the session.end summary when the session closes payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeSessionEnd' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-server-8-Realtime Error: name: Realtime Error title: Realtime Error description: Receive non-fatal or fatal error notifications payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeError' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-0-Realtime Audio Input: name: Realtime Audio Input title: Realtime Audio Input description: >- Send an audio chunk for real-time transcription (saaras:v3-realtime, saaras:v4) payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeAudioInput' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-1-Realtime Speech Start: name: Realtime Speech Start title: Realtime Speech Start description: Signal the start of an utterance (endpointing=manual only) payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeSpeechStart' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-2-Realtime Speech End: name: Realtime Speech End title: Realtime Speech End description: Signal the end of an utterance (endpointing=manual only) payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeSpeechEnd' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-3-Realtime Flush: name: Realtime Flush title: Realtime Flush payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeFlush' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-4-Realtime Config Update: name: Realtime Config Update title: Realtime Config Update description: Update session config mid-stream payload: $ref: >- #/components/schemas/speechToTextRealtimeStreaming_realtimeConfigUpdate subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-5-Realtime End Session: name: Realtime End Session title: Realtime End Session description: Gracefully end the realtime session payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimeEnd' subpackage_speechToTextRealtimeStreaming.speechToTextRealtimeStreaming-client-6-Realtime Ping: name: Realtime Ping title: Realtime Ping description: Send a keepalive ping to the realtime WebSocket payload: $ref: '#/components/schemas/speechToTextRealtimeStreaming_realtimePing' schemas: speechToTextRealtimeStreaming_language_code: type: string enum: - auto - en-IN - hi-IN - bn-IN - kn-IN - ml-IN - mr-IN - or-IN - pa-IN - ta-IN - te-IN - gu-IN - as-IN - ur-IN - ne-IN - kok-IN - ks-IN - sd-IN - sa-IN - sat-IN - mni-IN - brx-IN - mai-IN - doi-IN description: | BCP-47 language code of the input audio. **Required.** **Supported languages (saaras:v3-realtime and saaras:v4):** - `auto`: Adaptive automatic language detection - `en-IN`: English - `hi-IN`: Hindi - `bn-IN`: Bengali - `kn-IN`: Kannada - `ml-IN`: Malayalam - `mr-IN`: Marathi - `or-IN`: Odia - `pa-IN`: Punjabi - `ta-IN`: Tamil - `te-IN`: Telugu - `gu-IN`: Gujarati - `as-IN`: Assamese - `ur-IN`: Urdu - `ne-IN`: Nepali - `kok-IN`: Konkani - `ks-IN`: Kashmiri - `sd-IN`: Sindhi - `sa-IN`: Sanskrit - `sat-IN`: Santali - `mni-IN`: Manipuri - `brx-IN`: Bodo - `mai-IN`: Maithili - `doi-IN`: Dogri title: speechToTextRealtimeStreaming_language_code speechToTextRealtimeStreaming_model: type: string enum: - saaras:v3-realtime - saaras:v4 default: saaras:v3-realtime description: > Speech-to-text model for this endpoint. `saaras:v3-realtime` (default) or `saaras:v4`. title: speechToTextRealtimeStreaming_model speechToTextRealtimeStreaming_stream_type: type: string enum: - fast - balanced - simulated default: balanced description: | Controls audio chunking and latency behaviour. - **fast**: Partials at low latency. - **balanced** (default): Partials with better accuracy. - **simulated**: No partials. title: speechToTextRealtimeStreaming_stream_type speechToTextRealtimeStreaming_mode: type: string enum: - transcribe - translate - verbatim - translit - codemix default: transcribe description: > Task applied on the final transcript, not on partial transcripts. Streaming partials are always straight transcription regardless of this value. - **transcribe** (default): Standard transcription in the source language script. - **translate**: Translation to English. - **verbatim**: Exact transcription in the original script (includes disfluencies). - **translit**: Transliteration to Latin script. - **codemix**: Code-mixed output (native + English). title: speechToTextRealtimeStreaming_mode speechToTextRealtimeStreaming_endpointing: type: string enum: - vad - manual default: vad description: > Turn detection strategy. - **vad** (default): Voice Activity Detection automatically detects turn boundaries. - **manual**: The client delimits turns with `speech_start` / `speech_end` events. title: speechToTextRealtimeStreaming_endpointing speechToTextRealtimeStreaming_encoding: type: string enum: - linear16 - linear32 - mulaw - alaw default: linear16 description: | Audio encoding of the input stream. **Mono only.** title: speechToTextRealtimeStreaming_encoding speechToTextRealtimeStreaming_sample_rate: type: string enum: - '16000' - '8000' description: | Audio sample rate in Hz. Must match the actual audio. **Accepted values:** - `8000` - `16000` (default) Any other value closes the connection with code `4000`. title: speechToTextRealtimeStreaming_sample_rate speechToTextRealtimeStreaming_return_timestamps: type: string enum: - 'true' - 'false' default: 'false' description: | When `true`, adds segment-level `start_s` / `end_s` audio-time offsets to `transcript.final`. title: speechToTextRealtimeStreaming_return_timestamps ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginEvent: type: string enum: - session.begin title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginEvent ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginConfig: type: object properties: model: type: string language_code: type: string encoding: type: string sample_rate: type: integer stream_type: type: string mode: type: string prompt: type: string turn_detection: type: string description: Endpointing strategy, echoed as turn_detection (vad / manual) threshold: type: string title: float prefix_padding_ms: type: integer silence_duration_ms: type: integer min_speech_duration_ms: type: integer return_timestamps: type: boolean description: Resolved server-side session configuration title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginConfig speechToTextRealtimeStreaming_realtimeSessionBegin: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginEvent request_id: type: string description: Per-connection correlation id (quote it in support/debugging) config: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionBeginConfig description: Resolved server-side session configuration required: - event - request_id description: > Sent immediately after the connection is accepted. The `config` block echoes the resolved surface. Note that the endpointing field is echoed as `turn_detection` (`vad` / `manual`), not `endpointing`. title: speechToTextRealtimeStreaming_realtimeSessionBegin ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechStartEvent: type: string enum: - vad.speech_start title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechStartEvent speechToTextRealtimeStreaming_realtimeVadSpeechStart: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechStartEvent utterance_idx: type: integer description: Zero-based utterance counter for the session confidence: type: string title: float description: VAD confidence (0.0–1.0) required: - event - utterance_idx description: Emitted when VAD detects the start of speech (endpointing=vad only). title: speechToTextRealtimeStreaming_realtimeVadSpeechStart ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechEndEvent: type: string enum: - vad.speech_end title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechEndEvent speechToTextRealtimeStreaming_realtimeVadSpeechEnd: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeVadSpeechEndEvent utterance_idx: type: integer description: Zero-based utterance counter for the session confidence: type: string title: float description: VAD confidence (0.0–1.0) required: - event - utterance_idx description: Emitted when VAD detects end of speech (endpointing=vad only). title: speechToTextRealtimeStreaming_realtimeVadSpeechEnd ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptPartialEvent: type: string enum: - transcript.partial title: >- ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptPartialEvent speechToTextRealtimeStreaming_realtimeTranscriptPartial: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptPartialEvent utterance_idx: type: integer description: Zero-based utterance counter for the session text: type: string description: Partial transcript text so far language: type: string description: | Detected language. Present only when `language_code=auto` was selected on the connection. required: - event - utterance_idx - text description: > Streaming partial result during an active utterance (not sent in `simulated`). Partials always stream straight transcription in the sticky language. No `confidence` is emitted. title: speechToTextRealtimeStreaming_realtimeTranscriptPartial ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptFinalEvent: type: string enum: - transcript.final title: >- ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptFinalEvent speechToTextRealtimeStreaming_realtimeTranscriptFinal: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeTranscriptFinalEvent utterance_idx: type: integer description: Zero-based utterance counter for the session text: type: string description: Final transcript text for the utterance language: type: string description: | Detected language (BCP-47, e.g. `gu-IN`). Present only when `language_code=auto` was selected on the connection. language_confidence: type: string title: float description: | Detection confidence (0.0–1.0). Present only when `language_code=auto` was selected on the connection. start_s: type: string title: float description: | Segment start (seconds since stream start). Present only when `return_timestamps=true`. end_s: type: string title: float description: | Segment end (seconds since stream start). Present only when `return_timestamps=true`. required: - event - utterance_idx - text description: > Emitted once per utterance when finalization completes by the non-streaming finalizer. No `confidence` and no `words` array are emitted by this endpoint, even with `return_timestamps=true`. title: speechToTextRealtimeStreaming_realtimeTranscriptFinal ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdatedEvent: type: string enum: - config.updated title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdatedEvent speechToTextRealtimeStreaming_realtimeConfigUpdated: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdatedEvent applied: type: array items: type: string description: Config keys that were applied required: - event - applied description: Acknowledges a config.update, listing the keys that were applied. title: speechToTextRealtimeStreaming_realtimeConfigUpdated ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePongEvent: type: string enum: - pong title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePongEvent speechToTextRealtimeStreaming_realtimePong: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePongEvent required: - event description: Response to a client ping. title: speechToTextRealtimeStreaming_realtimePong ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionEndEvent: type: string enum: - session.end title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionEndEvent speechToTextRealtimeStreaming_realtimeSessionEnd: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSessionEndEvent request_id: type: string description: Per-connection correlation id total_duration_s: type: string title: float description: Total wall-clock session duration in seconds total_utterances: type: integer description: Number of utterances processed during the session audio_duration_s: type: string title: float description: >- Total audio duration processed in seconds (the billed audio quantity) required: - event - request_id description: | Sent when the session closes (client `end`, inactivity timeout, max duration, or server error). Keyed by `request_id` (not `session_id`). title: speechToTextRealtimeStreaming_realtimeSessionEnd ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeErrorEvent: type: string enum: - error title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeErrorEvent speechToTextRealtimeStreaming_realtimeError: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeErrorEvent code: type: string description: Machine-readable error code is_fatal: type: boolean description: Whether the error is fatal (the connection will be closed) message: type: string description: Human-readable error message status_code: type: integer description: | HTTP-equivalent status code, present on fatal rejections (e.g. `401`, `403`, `503`, `400`, `408`, `413`, `500`). Useful because the WebSocket close reason string is capped at 123 bytes. required: - event - code - is_fatal - message description: > Non-fatal or fatal error notification. The wire payload always carries `event`, `code`, `is_fatal`, and `message`, plus an optional `status_code` on fatal rejections. **WebSocket close codes:** - `1003`: Rate limit exceeded, quota exhausted, or invalid subscription key. - `1008`: Inactivity timeout. - `1011`: Internal server error. - `4000`: Application rejection (beta denied, invalid model, unsupported `language_code` / query param, gRPC backend unavailable). The close reason string is capped at 123 bytes. **Known error codes:** - `invalid_config` (non-fatal): A `config.update` value was rejected (e.g. changing `stream_type` to/from `simulated`). The session continues with the previous config. title: speechToTextRealtimeStreaming_realtimeError ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeAudioInputEvent: type: string enum: - audio_input default: audio_input description: Event type identifier title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeAudioInputEvent speechToTextRealtimeStreaming_realtimeAudioInput: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeAudioInputEvent description: Event type identifier audio: type: string format: base64 description: Audio bytes as a base64-encoded string required: - event - audio description: | Audio chunk sent as a JSON message. The audio must be provided as a base64-encoded string in the `audio` field. title: speechToTextRealtimeStreaming_realtimeAudioInput ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechStartEvent: type: string enum: - speech_start default: speech_start title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechStartEvent speechToTextRealtimeStreaming_realtimeSpeechStart: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechStartEvent required: - event description: | Signals the beginning of an utterance (endpointing=manual only). The server starts streaming partial results. title: speechToTextRealtimeStreaming_realtimeSpeechStart ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechEndEvent: type: string enum: - speech_end default: speech_end title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechEndEvent speechToTextRealtimeStreaming_realtimeSpeechEnd: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeSpeechEndEvent required: - event description: | Signals end of speech for the current utterance (endpointing=manual only). The server finalizes the transcript. title: speechToTextRealtimeStreaming_realtimeSpeechEnd ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeFlushEvent: type: string enum: - flush default: flush title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeFlushEvent speechToTextRealtimeStreaming_realtimeFlush: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeFlushEvent required: - event description: | Force-finalizes buffered audio (endpointing=manual only). The server runs finalization on whatever audio has been buffered so far. title: speechToTextRealtimeStreaming_realtimeFlush ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEvent: type: string enum: - config.update default: config.update title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEvent ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateMode: type: string enum: - transcribe - translate - verbatim - translit - codemix description: Non-streaming task selector. Boundary-gated. title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateMode ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateStreamType: type: string enum: - fast - balanced description: >- `fast`↔`balanced` swap. Boundary-gated. Changing to/from `simulated` is rejected. title: >- ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateStreamType ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEndpointing: type: string enum: - vad - manual description: '`vad`/`manual` swap. Boundary-gated.' title: >- ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEndpointing speechToTextRealtimeStreaming_realtimeConfigUpdate: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEvent language_code: type: string description: Re-arms auto-LID and resets the sticky language. Boundary-gated. prompt: type: string description: Non-streaming context hint (empty string clears it). Boundary-gated. mode: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateMode description: Non-streaming task selector. Boundary-gated. stream_type: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateStreamType description: >- `fast`↔`balanced` swap. Boundary-gated. Changing to/from `simulated` is rejected. endpointing: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeConfigUpdateEndpointing description: '`vad`/`manual` swap. Boundary-gated.' threshold: type: string title: float description: VAD activation threshold; applied immediately (vad only). silence_duration_ms: type: integer description: End-of-turn silence; applied immediately (vad only). min_speech_duration_ms: type: integer description: Minimum speech duration; applied immediately (vad only). required: - event description: > Updates session config mid-stream. `language_code`, `mode`, `prompt`, `stream_type`, and `endpointing` are boundary-gated: validated on arrival but deferred and applied at the next utterance boundary while an utterance is in progress, so each utterance's partials and final use one consistent config snapshot. The VAD detector knobs (`threshold`, `silence_duration_ms`, `min_speech_duration_ms`) apply immediately on the next VAD rebuild and are ignored under `endpointing=manual`. Changing `stream_type` to/from `simulated` is rejected (`invalid_config`). The server replies with `config.updated` (listing the applied keys), or an `error` with code `invalid_config` on a rejected value. title: speechToTextRealtimeStreaming_realtimeConfigUpdate ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeEndEvent: type: string enum: - end default: end title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeEndEvent speechToTextRealtimeStreaming_realtimeEnd: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimeEndEvent required: - event description: | Gracefully ends the session. The server finalizes any pending utterance and closes the connection. title: speechToTextRealtimeStreaming_realtimeEnd ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePingEvent: type: string enum: - ping default: ping title: ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePingEvent speechToTextRealtimeStreaming_realtimePing: type: object properties: event: $ref: >- #/components/schemas/ChannelsSpeechToTextRealtimeStreamingMessagesRealtimePingEvent required: - event description: Keepalive ping. title: speechToTextRealtimeStreaming_realtimePing ```