---
title: "Generates audio from the input text.

Returns the audio file content, or a stream of audio events."
method: POST
path: "/audio/speech"
tags: ["Audio"]
---

# Generates audio from the input text.

Returns the audio file content, or a stream of audio events.

`POST /audio/speech`

## Request body

- CreateSpeechRequest
  - `model` union, required — One of the available [TTS models](/docs/models#tts): `tts-1`, `tts-1-hd`, `gpt-4o-mini-tts`, or `gpt-4o-mini-tts-2025-12-15`.
    - string
    - 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts' | 'gpt-4o-mini-tts-2025-12-15'
  - `input` string, required — The text to generate audio for. The maximum length is 4096 characters.
  - `instructions` string — Control the voice of your generated audio with additional instructions. Does not work with `tts-1` or `tts-1-hd`.
  - `voice` union, required — A built-in voice name or a custom voice reference.
    - union
      - string
      - 'alloy' | 'ash' | 'ballad' | 'coral' | 'echo' | 'sage' | 'shimmer' | 'verse' | 'marin' | 'cedar'
    - object — Custom voice reference.
      - `id` string, required — The custom voice ID, e.g. `voice_1234`.
  - `response_format` 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm' — The format to audio in. Supported formats are `mp3`, `opus`, `aac`, `flac`, `wav`, and `pcm`.
  - `speed` number — The speed of the generated audio. Select a value from `0.25` to `4.0`. `1.0` is the default.
  - `stream_format` 'sse' | 'audio' — The format to stream the audio in. Supported formats are `sse` and `audio`. `sse` is not supported for `tts-1` or `tts-1-hd`.

## Response `200`

OK

## Other responses

- `429` — The request was rejected because a rate limit was exceeded.

## Changes

> 82 revisions in range; 31 could not be searched.

- **2026-05-13** `74cbcf73838f` — 1 breaking, 4 info
  - removed `subschema #1, subschema #2` from the `voice` request property `anyOf` list
  - added the new optional request property `stream_format`
  - added `#/components/schemas/VoiceIdsShared, subschema #2` to the `voice` request property `anyOf` list
  - added the new `gpt-4o-mini-tts-2025-12-15` enum value to the request property `model/anyOf[subschema #2]/`
  - …1 more
- **2025-03-22** `41844462b873` — 10 breaking, 3 info
  - removed the enum value `alloy` of the request property `voice`
  - removed the enum value `ash` of the request property `voice`
  - removed the enum value `coral` of the request property `voice`
  - removed the enum value `echo` of the request property `voice`
  - …9 more
- **2025-01-21** `47138a7dd8b9` — 3 info
  - added the new `ash` enum value to the request property `voice`
  - added the new `coral` enum value to the request property `voice`
  - added the new `sage` enum value to the request property `voice`
- **2025-01-21** `0d83ef8a5f65` — 3 breaking
  - removed the enum value `ash` of the request property `voice`
  - removed the enum value `coral` of the request property `voice`
  - removed the enum value `sage` of the request property `voice`
- …earlier changes not shown

[Full history](https://skmtc.dev/openai/apis/openapi/changes/audio/speech/post.md)

---

[API](https://skmtc.dev/openai/apis/openapi.md) · [All operations](https://skmtc.dev/openai/apis/openapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openai/openapi/revisions/959ef977e135/schema)
