For new conversational applications, start with the Realtime TTS Quickstart. It keeps one warm WebSocket open, sends LLM tokens immediately, and lets Bland handle text buffering.
Provider guides
ElevenLabs
Replace stream-input messages, base64 audio, and manual flush behavior.
Cartesia
Map contexts and continuations to turns, preemption, and cancellation.
Deepgram
Map Speak, Flush, Clear, and Close to Bland turn messages.
PlayHT
Replace the generated socket URL and request-level speech commands.
Resemble AI
Move from request IDs and audio_end to Bland turn boundaries.
Google Cloud TTS
Replace bidirectional gRPC configuration and audio responses.
Amazon Polly
Move synchronous synthesis or add token-level realtime streaming.
Shared migration rules
All realtime migrations have the same core changes:- Select a Bland voice UUID from List Voices. Voice IDs are provider-specific and cannot be reused.
- Open one socket per conversation and send
initonce. - Wait for
readybefore sending text. - Send only new text deltas under one
context_idper turn. - Send
end_of_turnafter the LLM completes. - Read binary frames as raw PCM or mu-law audio.
- On interruption, send a new context to preempt or send
cancelwithout replacement text. - Drop unplayed local audio for preempted or cancelled turns.
- Send
closeonly after the final turn’sutterance_end, then wait fordone.
Docs for agents: llms.txt