Getting Started with Flux TTS Batch (REST)

Synthesize a complete block of text into a single audio file with the Flux TTS batch endpoint — POST /v2/speak — for pre-rendering fixed audio.

The batch (REST) transport synthesizes a complete block of text and returns the full audio in one response. Use it to pre-generate fixed audio — IVR prompts, notifications, audiobook lines — where the whole text is known up front and you don’t need incremental playback or interruption. For live, interruptible conversations, use the real-time WebSocket instead (see Batch vs Streaming).

Batch is stateless request/response: simple retries, high fan-out, no connection lifecycle to manage. It serves the same Flux voices as the streaming transport.

Make a request

$curl "https://api.deepgram.com/v2/speak?model=flux-alexis-en" \
> -H "Authorization: Token YOUR_DEEPGRAM_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{ "text": "Your appointment is confirmed for 3pm tomorrow." }' \
> --output audio.mp3

The response body is the synthesized audio in the requested encoding. Per-request telemetry is returned as response headers, mirroring Aura’s REST conventions — including character counts. Pronunciation tallies (dg-pronunciations-applied) and the generic dg-warnings header are planned for GA.

Query parameters

ParameterDefaultDescription
modelRequired. A flux-{voice}-{language} model (e.g. flux-alexis-en).
encodingmp3mp3, opus, flac, aac (containerized/compressed), or raw linear16 / mulaw / alaw.
bit_rateper-encoding defaultBit rate for compressed encodings. For mp3: 8000, 16000, 24000, 32000, 40000, 48000.
containerper-encoding defaultOutput container where applicable (e.g. wav for linear16, ogg for opus).
sample_ratemodel nativeSample rate; supported values depend on encoding. linear16: 8000, 16000, 24000, 32000, 44100, 48000. mulaw / alaw: 8000, 16000. flac: 8000, 16000, 22050, 32000, 48000. Not applicable to mp3 or opus.
callbackURL to receive the result asynchronously, instead of on the response body.
callback_methodPOSTHTTP method for the callback request (POST or PUT).
priorityPrioritization for asynchronous (callback) requests. Only value: Low.
tagLabel requests for usage reporting. Repeatable.
mip_opt_outfalseOpt out of the Model Improvement Program.

Conversational constructs (Flush, speech_id, lifecycle events) do not apply to batch. model and the media-output settings behave the same as on the streaming surface, so the contract doesn’t fragment across transports. (speed is planned for GA, alongside streaming.)

When to use batch vs streaming

See Batch vs Streaming: Which Should I Use? for the decision guide.