Rules for a chunked upload
Three rules apply to a chunked upload:- The
configpart must arrive before the first audio byte. - Don’t let the connection go silent for long stretches mid-body — an abandoned upload is timed out rather than held open.
- A chunked body can’t be replayed. Keep the audio in memory if you want to retry a failed request.
sample_rate and channels in config and send frames as they come
off the microphone.
With the Python SDK
The Python SDK does the framing for you.transcribe_live() takes an iterator
of audio chunks, and open_live() takes audio pushed in from a callback — a
microphone library, a WebRTC track, a telephony media stream:
- Pull — an iterator of chunks
- Push — audio from a callback
AsyncDictationTranscriber is the asyncio counterpart, with the same two
methods. Call transcriber.warm() when you know audio is coming — as the user
reaches for the record button — to pay the DNS, TCP and TLS setup before the
first byte rather than in front of it.
Without the SDK
Without the SDK, frame the multipart body yourself:data= makes requests send the body with chunked
transfer encoding, which is what lets the upload start before the audio is
complete. A body with a Content-Length is also accepted, and still streams —
the server does not wait for the full body before it begins.
Related pages
- Quickstart — the single-call flow this builds on
- Audio requirements — why raw PCM is the easiest format to stream
- Connection pre-warming — take the handshake off the critical path too