---
title: "Create voice"
method: POST
path: "/audio/voices"
tags: ["Audio"]
---

# Create voice

`POST /audio/voices`

## Request

- Base URL: `https://api.openai.com/v1`
- URL: `https://api.openai.com/v1/audio/voices`
- Auth: HTTP bearer

Creates a voice from a text prompt or from a consent recording and an audio sample.

For prompt-based creation, send `type: "prompt"` with a `name` and `prompt` as JSON or multipart form data. For creation from an audio sample, send `type: "audio_sample"` with a `name`, `audio_sample`, and `consent` recording ID as multipart form data. The type defaults to `audio_sample` when omitted.

Returns the saved voice's metadata. Voices created from text prompts are supported only in Live, not in Realtime or the speech endpoint. The response does not include preview audio.

## Request body

- CreateVoicePromptRequest: Creates a synthetic voice from a text description. Supports application/json or multipart/form-data.
  - `type` 'prompt', required: Set to `prompt` to create a voice from a text description.
  - `name` string, required: The name of the new voice.
  - `prompt` string, required: A description of the desired voice. Must not contain only whitespace.
  - `script_hint` string: Optional text for the voice to speak during creation. If omitted, a script is generated from the prompt. Must not be blank after trimming whitespace; scripts that are too short are rejected.
  - `model` union: The voice creation model to use. Defaults to `auto`.
    - string
    - 'auto' | '2026-10-08'

## Response `200`

OK

- VoiceResource: A custom voice that can be used for audio output. Voices created from text prompts are supported only in Live.
  - `object` 'audio.voice', required: The object type, which is always `audio.voice`.
  - `id` string, required: The voice identifier, which can be referenced in API endpoints.
  - `type` 'audio_sample' | 'prompt', required: How the voice was created.
  - `prompt` string: The original text prompt used to create the voice. Present for prompt-generated voices with a stored prompt; omitted for audio-sample voices and older voices without a stored prompt.
  - `name` string, required: The name of the voice.
  - `created_at` integer, required: The Unix timestamp (in seconds) for when the voice was created.

## Other responses

- `400`: Invalid voice request, prompt, script hint, model, consent recording, or audio sample.
- `404`: The endpoint is unavailable or the consent recording was not found.
- `500`: The audio sample could not be processed or the voice could not be created.

## Changes

- **2026-10-16** `b2b19f4844b0`: 1 warning, 4 info
  - added the new `prompt` enum value to the `type` response property for the response status `200`
  - added `prompt` mapping keys to the request discriminator
  - added the media type `application/json` to the request body
  - added `#/components/schemas/CreateVoicePromptRequest` to the request body `oneOf` list
  - …1 more
- **2026-10-08** `70e8c5bcdd20`: 1 breaking, 1 warning, 1 info
  - the `type` response's property type changed from no type to `string` for status `200`
  - added the new `audio_sample` enum value to the `type` response property for the response status `200`
  - removed `subschema #1, subschema #2` from the `type` response property `anyOf` list for the response status `200`
- **2026-10-08** `45f65d47bef1`: 3 breaking, 4 info
  - removed the media type `application/json` from the request body
  - removed `#/components/schemas/CreateVoicePromptRequest` from the request body `oneOf` list
  - the `type` response's property type changed from `string` to no type for status `200`
  - removed `prompt` mapping keys from the request discriminator
  - …3 more
- **2026-10-06** `487892d3954e`: 3 info
  - added the optional property `error/misalignment/review_target` to the response with the `400` status
  - added the optional property `error/misalignment/review_target` to the response with the `404` status
  - added the optional property `error/misalignment/review_target` to the response with the `500` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/omnistack-sh/apis/openai-api/changes/audio/voices/post.md)

---

[API](https://skmtc.dev/omnistack-sh/apis/openai-api.md) - [All operations](https://skmtc.dev/omnistack-sh/apis/openai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omnistack-sh/apis/openai-api/revisions/0a26f104d35f?raw)
