Overview
When a call created withinclude_post_transfer_transcript: true is cold-transferred to a human, Bland transcribes the bridged conversation live. Connect to this WebSocket to receive finalized transcript segments as the caller and the transferred-to representative speak.
The stream is a real-time preview. The durable record is the post_transfer_transcript property on the citations webhook, which carries the same segment format built from the call recording after the call ends.
The post-transfer transcript stream is in limited rollout. If the Get Transcript Stream URL endpoint returns 403, it is not yet enabled for your organization.
Connecting
Request a connection URL from Get Transcript Stream URL and connect to it exactly as returned, within 5 minutes. The URL is opaque: it routes the connection to the server handling the call and carries the stream credential. Do not parse or reconstruct it. Connections without a valid credential for the call are closed with code1008.
Connection Lifecycle
- Connect any time after the call is answered. The connection URL becomes available once the call is answered; a listener that connects before the transfer starts is held and attached automatically when the transferred conversation begins.
- Join-live semantics. A listener that connects mid-transfer receives segments from that moment forward. There is no history replay; use the post-call webhook for the complete transcript.
- Multiple listeners are allowed. Each requests its own connection URL; all receive the same events.
- End of stream. When the transferred conversation ends, the server sends a
stream_endevent and closes the socket with code1000.
Events
All messages are JSON text frames.transcript_segment
One finalized utterance. Segments are settled text — interim results are never sent — so they arrive at natural pause boundaries, not word by word.
number
Seconds from the start of the transferred conversation.
number
End of the utterance, in the same clock as
start.number
1 for the caller, 2 for the transferred-to human.string
user for the caller, representative for the transferred-to human. Matches the labels in the webhook’s post_transfer_transcript.string
The finalized utterance text.
number
Transcription confidence between 0 and 1.
start when rendering.
stream_end
The transferred conversation has ended. No further segments will arrive, and the socket closes with code 1000.
Implementation Example
Docs for agents: llms.txt