> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developers.deepgram.com/docs/flux-tts/batch/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.deepgram.com/_mcp/server. # Getting Started with Flux TTS Batch (REST) 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](/docs/flux-tts/quickstart) instead (see [Batch vs Streaming](/docs/flux-tts/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 ```bash curl "https://api.deepgram.com/v2/speak?model=flux-haley-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 — character counts and the generic `dg-warnings` header. ## Query parameters | Parameter | Default | Description | | ----------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `model` | — | **Required.** A `flux-{voice}-{language}` model (e.g. `flux-haley-en`). | | `encoding` | `mp3` | `mp3`, `opus`, `flac`, `aac` (containerized/compressed), or raw `linear16` / `mulaw` / `alaw`. | | `bit_rate` | per-encoding default | Bit rate for compressed encodings. For `mp3`: `8000`, `16000`, `24000`, `32000`, `40000`, `48000`. | | `container` | per-encoding default | Output container where applicable (e.g. `wav` for `linear16`, `ogg` for `opus`). | | `sample_rate` | model native | Sample 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`. | | `speed` | `1.0` | Speech-rate multiplier — `0.5` to `1.5` in `0.05` increments. Not supported by every model or language; unsupported combinations return `SPEED_NOT_SUPPORTED`. | | `expressivity` | `0` | **Beta.** Delivery register, `-2` (calm) to `2` (animated). See [Expressivity](/docs/tts-expressivity). | | `callback` | — | URL to receive the result asynchronously, instead of on the response body. | | `callback_method` | `POST` | HTTP method for the callback request (`POST` or `PUT`). | | `priority` | — | Prioritization for asynchronous (callback) requests. Only value: `Low`. | | `tag` | — | Label requests for usage reporting. Repeatable. | | `mip_opt_out` | `false` | Opt out of the Model Improvement Program. | > **Info** > > Conversational constructs (`Flush`, `Interrupt`, `speech_id`, lifecycle events) do not apply to batch. `model`, `speed`, `expressivity`, and the media-output settings behave the same as on the [streaming surface](/docs/flux-tts/quickstart), so the contract doesn't fragment across transports. The one difference is inline pause: it is supported on batch only. See [Speed, Pause, Pronunciation](/docs/tts-voice-controls#combining-controls). ## When to use batch vs streaming See [Batch vs Streaming: Which Should I Use?](/docs/flux-tts/batch-vs-streaming) for the decision guide. ## Related resources * [Batch vs Streaming](/docs/flux-tts/batch-vs-streaming) * [Real-Time / Conversational Getting Started](/docs/flux-tts/quickstart) * [Voices and Languages](/docs/flux-tts/voices) * [Media Output Settings](/docs/tts-media-output-settings) --- > 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.