Skip to main content
POST
Create Voice
For AI agents, use https://docs.tavus.io/openapi.yaml for the full HTTP API contract.

Authorizations

x-api-key
string
header
required

Body

application/json
voice_name
string
required

A name for the voice.

Required string length: 1 - 255
Example:

"Ana"

training_audio_url
string
required

Publicly accessible link to the training audio. Accepts .mp3, .wav, .m4a, .flac, .ogg, .oga, .webm, .mp4, .mov, a video file is fine, the audio track is what is used.

Maximum string length: 2048
Example:

"https://example.com/ana.mp3"

description
string

Free-text note about the voice, returned on reads.

Maximum string length: 1000
Example:

"Warm, unhurried, mid-Atlantic"

callback_url
string

URL to receive the application.voice_status_changed webhook when the voice reaches completed or error.

Maximum string length: 2048
Example:

"https://example.com/webhooks/voices"

tags
string[]

Up to 50 tags, 64 characters each. Filter on them with the tag query parameter on List Voices.

Maximum array length: 50
Maximum string length: 64
Example:

Response

A Tavus Voice. Reference it by voice_id; Tavus picks the provider that is the best fit for the language(s) of the conversation.

voice_id
string

Stable identifier. Use as layers.tts.voice_id on a PAL, or default_voice_id on a face.

Example:

"v0a1b2c3d4e5f"

voice_name
string
Example:

"Ana"

description
string | null
Example:

"Warm, unhurried, mid-Atlantic"

voice_type
enum<string>

user for voices you created, system for the Tavus catalog.

Available options:
user,
system
Example:

"user"

status
enum<string>

started while the voice is still being created, completed once it is ready to use, error if creation failed (see error_message).

Available options:
started,
completed,
error
Example:

"completed"

error_message
string

Present only when status is error.

tags
string[]
Example:
created_at
string<date-time>
Example:

"2026-08-17T12:00:00.000000"