# Flux Text to Speech (batch)

**POST** `/v2/speak`

Synthesize a complete block of text into a single audio response using Deepgram's Flux TTS batch (REST) API. Use this for pre-rendering fixed audio (IVR prompts, notifications, narration) where the whole text is known up front and you don't need incremental playback or interruption.

Base URL: `https://agent.deepgram.com`

Tags: `audio`

## Authorization

| Option | Scheme | Type | Sent as | Scopes |
| --- | --- | --- | --- | --- |
| Option 1 | `ApiKeyAuth` | `apiKey` | header `Authorization` | — |

## Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `callback` | `string` | No | URL to which we'll make the callback request |
| `callback_method` | `string` | No | HTTP method by which the callback request will be made Allowed values: `POST`, `PUT`. |
| `mip_opt_out` | `boolean` | No | Opts out requests from the Deepgram Model Improvement Program. Refer to our Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip |
| `tag` | — | No | Label your requests for the purpose of identification during usage reporting |
| `bit_rate` | — | No | The bitrate of the audio in bits per second. Choose from predefined ranges or specific values based on the encoding type. |
| `container` | — | No | Container specifies the file format wrapper for the output audio. The available options depend on the encoding type. |
| `encoding` | — | No | Encoding allows you to specify the expected encoding of your audio output |
| `expressivity` | `string` | No | Expressive range of the generated speech, on a calm-to-animated axis. Accepted values: `-2`, `-1`, `0`, `1`, `2`. `0` (the default) is the voice's tuned delivery and the production-validated setting, with `-2` the calm end of the range and `2` the animated end. Supported on all Flux voices; applies to the whole request. Beta: behavior may change in future model versions, and non-default values increase the risk of hallucinations and pronunciation errors; audition before shipping. An invalid value is rejected with a `400` — `EXPRESSIVITY_OUT_OF_RANGE` for a value outside the range, `EXPRESSIVITY_INCREMENT_INVALID` for a fractional value. See [Expressivity](/docs/tts-expressivity). Allowed values: `-2`, `-1`, `0`, `1`, `2`. |
| `model` | `string` | Yes | Flux TTS model used to synthesize the submitted text, in the form `flux-{voice}-{language}` (for example, `flux-alexis-en`). Required; unlike the v1 (Aura) endpoint there is no default and only flux models are accepted. English-only at launch. |
| `sample_rate` | — | No | Sample Rate specifies the sample rate for the output audio. Based on the encoding, different sample rates are supported. For some encodings, the sample rate is not configurable |
| `speed` | `number` (double) | No | Speaking rate multiplier that adjusts the pace of generated speech while preserving natural prosody and voice quality. Accepted values run `0.5` to `1.5` in `0.05` increments. Not yet supported in all languages. |
| `priority` | `string` | No | Processing priority for asynchronous (callback) requests. The only supported value is low. Allowed values: `low`. |

## Request body

Optional. Media type: `application/json`

Transform text to speech

### Example request body

```json
{
  "text": "string"
}
```

## Responses

| Status | Description | Media type |
| --- | --- | --- |
| `200` | Returns the synthesized audio in the requested encoding as a binary stream. When a `callback` URL is supplied, the request is processed asynchronously and the response body is instead a JSON acknowledgement (Content-Type `application/json`) of the form {"request_id": "..."}, with the audio delivered to the callback URL. Because this endpoint is typed as a binary audio stream, SDK callers that set `callback` receive this JSON acknowledgement through the audio byte iterator as raw bytes and must join the chunks and parse `request_id` themselves. | `application/json` |
| `400` | Invalid Request. Inline pause and pronunciation controls are not applied and are stripped rather than rejected. | `application/json` |

### Example response: 200 — Returns the synthesized audio in the requested encoding as a binary stream. When a `callback` URL is supplied, the request is processed asynchronously and the response body is instead a JSON acknowledgement (Content-Type `application/json`) of the form {"request_id": "..."}, with the audio delivered to the callback URL. Because this endpoint is typed as a binary audio stream, SDK callers that set `callback` receive this JSON acknowledgement through the audio byte iterator as raw bytes and must join the chunks and parse `request_id` themselves.

```json
{
  "request_id": "00000000-0000-0000-0000-000000000000"
}
```

### Example response: 400 — Invalid Request. Inline pause and pronunciation controls are not applied and are stripped rather than rejected.

```json
{
  "err_code": "string",
  "err_msg": "string",
  "request_id": "string"
}
```

## Related pages

- [Analyze text content](./text_analyze.md)
- [audio](./tags/audio.md)
- [balances](./tags/balances.md)
- [breakdown](./tags/breakdown.md)
- [configurations](./tags/configurations.md)
- [Create a Project Invite](./invites_create.md)
- [Create a Project Key](./keys_create.md)
- [Create a Project Self-Hosted Distribution Credential](./distributioncredentials_create.md)
- [Create an Agent Configuration](./configurations_create.md)
- [Create an Agent Variable](./variables_create.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
