Skip to main content
Choose the Bland endpoint that matches your application: 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:
  1. Select a Bland voice UUID from List Voices. Voice IDs are provider-specific and cannot be reused.
  2. Open one socket per conversation and send init once.
  3. Wait for ready before sending text.
  4. Send only new text deltas under one context_id per turn.
  5. Send end_of_turn after the LLM completes.
  6. Read binary frames as raw PCM or mu-law audio.
  7. On interruption, send a new context to preempt or send cancel without replacement text.
  8. Drop unplayed local audio for preempted or cancelled turns.
  9. Send close only after the final turn’s utterance_end, then wait for done.
See Realtime TTS Concepts for the state model and playback responsibilities.
Docs for agents: llms.txt