Overview
The Live Transcription API turns a stream of audio into text in real time over a single WebSocket connection. You send raw audio frames as you capture them and receive interim (partial) results immediately, followed by final, stabilized segments — ideal for live captions, voice agents, dictation, and meeting transcription. Live transcription runs on Premium accuracy (punctuation, per-word confidence, language detection, and optional speaker labels).Key features
- Sub-second interim results as the speaker talks
- Stabilized final segments with word timestamps
- Optional speaker labels (
diarize) - 50+ languages with auto-detect
- One artifact: a finished session is saved as a normal transcription job you can fetch, edit, and export (SRT/VTT/TXT/JSON) like any batch transcript
Endpoint
Authentication
WebSocket handshakes can’t carry custom headers from every client, so the API key travels as a query parameter:?token=....
Protocol
Messages are JSON text frames, except the audio you upload, which is binary. Client → server
Server → client
The first server frame is always
ready. Send audio in small chunks (e.g. 100 ms)
for the lowest latency.
Audio format
Resample to 16 kHz mono before sending. Larger sample rates or stereo will be
rejected with an
INVALID_CONFIG error.
Prepaid billing. Live transcription is prepaid at the standard transcription
rate (220 credits/minute). Credits for the maximum session length are reserved
up front and settled to your actual streamed duration when the session ends
(the unused reservation is released). If you don’t have enough credits to start,
the session is rejected with
INSUFFICIENT_CREDITS before any audio flows.Quickstart
- Node.js
- Python
- Raw WebSocket
.on():Capturing microphone audio in the browser
Browsers capture at the hardware sample rate, so request a 16 kHzAudioContext
and convert float samples to 16-bit PCM before sending:
Error codes
Next steps
Speech-to-Text (batch)
Transcribe files and URLs, with Standard or Premium accuracy.
Authentication
Create an API key to authenticate your streams.
