WebSocket vs REST
If you’re unsure, start with REST. It’s a single POST and the response
body is the audio. Move to WebSocket once latency or streaming-input
concerns make REST the bottleneck.
What both transports share
- Voices: any
voice_idfrom the Voice Library works on both. - Output formats: PCM, WAV, Opus, and the telephony codecs (
ulaw_8000,alaw_8000). - Voice settings:
temp,cfg_coef,padding_bonus,rewrite_rules,pronunciation_id. See Voice Settings. - Pronunciation dictionaries: pass
pronunciation_idin either transport.
What’s transport-specific
<flush>and<break time="..." />tags are processed by the model in both transports, but only meaningfully useful when you’re streaming text in over the WebSocket.- WebSocket-only: setup-message stream controls (
send_setup_on_start,wait_for_ready_on_start), multiplexing, in-streamflush, browser tokens. See WebSocket Lifecycle. - REST-only:
only_audiotoggle to choose between raw audio bytes and an NDJSON stream that mirrors the WebSocket protocol.
Next steps
Use the WebSocket API
SDK and direct WebSocket usage, streaming output, flush, timestamps.
Use the REST API
One-shot synthesis with a single HTTP POST.
LLM to TTS
Stream generated text into TTS while preserving natural prosody.
Voice settings
Speed, temperature, voice similarity, rewrite rules.
Voice Library
Browse flagship voices or create your own clones.