Telnyx Voice Clones API
Capture and manage voice identities as clones for use in text-to-speech synthesis.
Capture and manage voice identities as clones for use in text-to-speech synthesis.
openapi: 3.1.0
info:
contact:
email: support@telnyx.com
description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform.
title: Telnyx Access Tokens Voice Clones API
version: 2.0.0
x-endpoint-cost: light
servers:
- description: Version 2.0.0 of the Telnyx API
url: https://api.telnyx.com/v2
security:
- bearerAuth: []
tags:
- description: Capture and manage voice identities as clones for use in text-to-speech synthesis.
name: Voice Clones
paths:
/voice_clones:
get:
description: Returns a paginated list of voice clones belonging to the authenticated account.
operationId: listVoiceClones
parameters:
- $ref: '#/components/parameters/voice-designs_PageNumber'
- $ref: '#/components/parameters/voice-designs_PageSize'
- $ref: '#/components/parameters/FilterName'
- $ref: '#/components/parameters/FilterProvider'
- $ref: '#/components/parameters/voice-designs_Sort'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneListResponse'
description: A paginated list of voice clones.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unauthorized — missing or invalid bearer token.
summary: List voice clones
tags:
- Voice Clones
x-latency-category: interactive
post:
description: Creates a new voice clone by capturing the voice identity of an existing voice design. The clone can then be used for text-to-speech synthesis.
operationId: createVoiceClone
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
description: Voice clone created successfully.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unauthorized — missing or invalid bearer token.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Voice design not found.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unprocessable entity — validation error in the request body.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Bad gateway — upstream voice cloning service is unavailable.
summary: Create a voice clone from a voice design
tags:
- Voice Clones
x-latency-category: interactive
/voice_clones/from_upload:
post:
description: 'Creates a new voice clone by uploading an audio file directly. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best results, provide 5–10 seconds of clear speech. Maximum file size: 5MB for Telnyx, 20MB for Minimax.'
operationId: createVoiceCloneFromUpload
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/VoiceCloneUploadRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
description: Voice clone created successfully from the uploaded audio.
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
description: Voice clone accepted — on-prem import in progress (Ultra model). Poll GET /voice_clones/{id} to check status.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Bad request — the audio file is invalid, unsupported, or exceeds the size limit.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unauthorized — missing or invalid bearer token.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unprocessable entity — validation error in the request body.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Bad gateway — upstream voice cloning service is unavailable.
summary: Create a voice clone from an audio file upload
tags:
- Voice Clones
x-latency-category: interactive
/voice_clones/{id}:
delete:
description: Permanently deletes a voice clone. This action cannot be undone.
operationId: deleteVoiceClone
parameters:
- description: The voice clone UUID.
in: path
name: id
required: true
schema:
format: uuid
type: string
responses:
'204':
description: Voice clone deleted successfully.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unauthorized — missing or invalid bearer token.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Voice clone not found.
summary: Delete a voice clone
tags:
- Voice Clones
x-latency-category: interactive
patch:
description: Updates the name, language, or gender of a voice clone.
operationId: updateVoiceClone
parameters:
- description: The voice clone UUID.
in: path
name: id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneUpdateRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
description: Voice clone updated successfully.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unauthorized — missing or invalid bearer token.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Voice clone not found.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unprocessable entity — validation error in the request body.
summary: Update a voice clone
tags:
- Voice Clones
x-latency-category: interactive
/voice_clones/{id}/sample:
get:
description: Downloads the WAV audio sample that was used to create the voice clone.
operationId: getVoiceCloneSample
parameters:
- description: The voice clone UUID.
in: path
name: id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
audio/wav:
schema:
format: binary
type: string
description: WAV audio sample binary.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Unauthorized — missing or invalid bearer token.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
description: Voice clone not found.
summary: Download voice clone audio sample
tags:
- Voice Clones
x-latency-category: interactive
components:
schemas:
TelnyxQwen3TTSClone:
description: Upload-based voice clone using the Telnyx Qwen3TTS model (default).
properties:
audio_file:
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality, provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 5MB.'
format: binary
type: string
gender:
description: Gender of the voice clone.
enum:
- male
- female
- neutral
type: string
label:
description: Optional custom label describing the voice style.
type: string
language:
description: ISO 639-1 language code from the Qwen language set.
pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$
type: string
model_id:
description: TTS model identifier. Nullable/omittable — defaults to Qwen3TTS.
enum:
- Qwen3TTS
- null
type:
- string
- 'null'
name:
description: Name for the voice clone.
maxLength: 255
type: string
provider:
description: Voice synthesis provider. Must be `telnyx`.
enum:
- telnyx
- Telnyx
type: string
ref_text:
description: Optional transcript of the audio file. Providing this improves clone quality.
type: string
required:
- audio_file
- name
- language
- gender
- provider
type: object
VoiceCloneData:
description: A voice clone object.
properties:
created_at:
description: Timestamp when the voice clone was created.
format: date-time
type: string
gender:
description: Gender of the voice clone.
enum:
- male
- female
- neutral
- null
type:
- string
- 'null'
id:
description: Unique identifier for the voice clone.
format: uuid
type: string
label:
description: Voice style description. If not explicitly set on upload, falls back to the source design's prompt text.
type:
- string
- 'null'
language:
description: ISO 639-1 language code of the voice clone.
type:
- string
- 'null'
model_id:
description: TTS model identifier for the voice clone.
enum:
- Qwen3TTS
- Ultra
- speech-2.8-turbo
type: string
name:
description: Name of the voice clone.
type: string
provider:
description: Voice synthesis provider used for this clone.
enum:
- telnyx
- minimax
- Telnyx
- Minimax
type: string
provider_supported_models:
description: List of TTS model identifiers supported by this clone's provider.
items:
type: string
type: array
provider_voice_id:
description: Provider-specific voice identifier used for TTS synthesis. May differ from the clone UUID depending on the provider and model.
type:
- string
- 'null'
record_type:
description: Identifies the resource type.
enum:
- voice_clone
type: string
source_voice_design_id:
description: UUID of the source voice design. `null` for upload-based clones.
format: uuid
type:
- string
- 'null'
source_voice_design_version:
description: Version of the source voice design used. `null` for upload-based clones.
type:
- integer
- 'null'
status:
description: Clone status. pending for Ultra clones while on-prem import is in progress, active once ready, failed if verification timed out, expired if not kept alive.
enum:
- active
- pending
- failed
- expired
type: string
updated_at:
description: Timestamp when the voice clone was last updated.
format: date-time
type: string
type: object
VoiceCloneResponse:
description: Response envelope for a single voice clone.
example:
data:
created_at: '2024-01-01T00:00:00Z'
gender: male
id: 660f9511-f3ac-52e5-b827-557766551111
label: Speak in a warm, friendly tone
language: en
model_id: Qwen3TTS
name: clone-narrator
provider: Telnyx
provider_supported_models:
- Qwen3TTS
provider_voice_id: 660f9511-f3ac-52e5-b827-557766551111
record_type: voice_clone
source_voice_design_id: 550e8400-e29b-41d4-a716-446655440000
source_voice_design_version: 1
status: active
updated_at: '2024-01-01T00:00:00Z'
properties:
data:
$ref: '#/components/schemas/VoiceCloneData'
type: object
voice-designs_ErrorObject:
description: A single error object.
properties:
code:
description: Telnyx-specific error code.
type: string
detail:
description: Detailed, human-readable explanation of the error.
type: string
source:
description: Reference to the source of the error.
properties:
pointer:
description: A JSON Pointer (RFC 6901) to the field that caused the error.
type: string
type: object
title:
description: Short, human-readable summary of the error.
type: string
type: object
MinimaxClone:
description: Upload-based voice clone using the Minimax provider.
properties:
audio_file:
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality, provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 20MB.'
format: binary
type: string
gender:
description: Gender of the voice clone.
enum:
- male
- female
- neutral
type: string
label:
description: Optional custom label describing the voice style.
type: string
language:
description: ISO 639-1 language code from the Minimax language set.
pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$
type: string
model_id:
description: TTS model identifier. Nullable — defaults to speech-2.8-turbo.
enum:
- speech-2.8-turbo
- null
type:
- string
- 'null'
name:
description: Name for the voice clone.
maxLength: 255
type: string
provider:
description: Voice synthesis provider. Must be `minimax`.
enum:
- minimax
- Minimax
type: string
ref_text:
description: Optional transcript of the audio file. Providing this improves clone quality.
type: string
required:
- audio_file
- name
- language
- gender
- provider
type: object
TelnyxDesignClone:
description: Create a voice clone from a voice design using the Telnyx provider.
example:
gender: male
language: en
name: clone-narrator
provider: telnyx
voice_design_id: 550e8400-e29b-41d4-a716-446655440000
properties:
gender:
description: Gender of the voice clone.
enum:
- male
- female
- neutral
type: string
language:
description: ISO 639-1 language code for the clone. Supports the combined Telnyx language set.
type: string
name:
description: Name for the voice clone.
maxLength: 255
minLength: 1
type: string
provider:
default: telnyx
description: Voice synthesis provider. Defaults to `telnyx`.
enum:
- telnyx
- Telnyx
type: string
voice_design_id:
description: UUID of the source voice design to clone.
format: uuid
type: string
required:
- name
- voice_design_id
- language
- gender
type: object
MinimaxDesignClone:
description: Create a voice clone from a voice design using the Minimax provider.
example:
gender: male
language: en
name: clone-narrator
provider: minimax
voice_design_id: 550e8400-e29b-41d4-a716-446655440000
properties:
gender:
description: Gender of the voice clone.
enum:
- male
- female
- neutral
type: string
language:
description: ISO 639-1 language code for the clone. Supports the Minimax language set.
type: string
name:
description: Name for the voice clone.
maxLength: 255
minLength: 1
type: string
provider:
description: Voice synthesis provider. Must be `minimax`.
enum:
- minimax
- Minimax
type: string
voice_design_id:
description: UUID of the source voice design to clone.
format: uuid
type: string
required:
- name
- voice_design_id
- language
- gender
- provider
type: object
VoiceCloneUpdateRequest:
description: Request body for updating a voice clone.
example:
name: updated-clone
properties:
gender:
description: Updated gender for the voice clone.
enum:
- male
- female
- neutral
type: string
language:
description: Updated ISO 639-1 language code or `auto`.
type: string
name:
description: New name for the voice clone.
maxLength: 255
minLength: 1
type: string
required:
- name
type: object
TelnyxUltraClone:
description: Upload-based voice clone using the Telnyx Ultra model.
properties:
audio_file:
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality, provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 5MB.'
format: binary
type: string
gender:
description: Gender of the voice clone.
enum:
- male
- female
- neutral
type: string
label:
description: Optional custom label describing the voice style.
type: string
language:
description: ISO 639-1 language code from the Ultra language set (40 languages).
pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$
type: string
model_id:
description: TTS model identifier. Must be `Ultra`.
enum:
- Ultra
type: string
name:
description: Name for the voice clone.
maxLength: 255
type: string
provider:
description: Voice synthesis provider. Must be `telnyx`.
enum:
- telnyx
- Telnyx
type: string
ref_text:
description: Optional transcript of the audio file. Providing this improves clone quality.
type: string
required:
- audio_file
- name
- language
- gender
- model_id
- provider
type: object
voice-designs_ErrorResponse:
description: Standard error response envelope.
example:
errors:
- code: '10005'
detail: Voice design not found
title: Resource not found
properties:
errors:
items:
$ref: '#/components/schemas/voice-designs_ErrorObject'
type: array
type: object
VoiceCloneRequest:
description: Request body for creating a voice clone from an existing voice design.
discriminator:
mapping:
Minimax: '#/components/schemas/MinimaxDesignClone'
Telnyx: '#/components/schemas/TelnyxDesignClone'
minimax: '#/components/schemas/MinimaxDesignClone'
telnyx: '#/components/schemas/TelnyxDesignClone'
propertyName: provider
oneOf:
- $ref: '#/components/schemas/TelnyxDesignClone'
- $ref: '#/components/schemas/MinimaxDesignClone'
voice-designs_PaginationMeta:
description: Pagination metadata returned with list responses.
example:
page_number: 1
page_size: 20
total_pages: 3
total_results: 42
properties:
page_number:
description: Current page number (1-based).
type: integer
page_size:
description: Number of results per page.
type: integer
total_pages:
description: Total number of pages.
type: integer
total_results:
description: Total number of results across all pages.
type: integer
type: object
VoiceCloneListResponse:
description: Paginated list of voice clones.
properties:
data:
description: Array of voice clone objects.
items:
$ref: '#/components/schemas/VoiceCloneData'
type: array
meta:
$ref: '#/components/schemas/voice-designs_PaginationMeta'
type: object
VoiceCloneUploadRequest:
description: 'Multipart form data for creating a voice clone from a direct audio upload. Maximum file size: 5MB for Telnyx, 20MB for Minimax.'
oneOf:
- $ref: '#/components/schemas/TelnyxQwen3TTSClone'
- $ref: '#/components/schemas/TelnyxUltraClone'
- $ref: '#/components/schemas/MinimaxClone'
parameters:
FilterName:
description: Case-insensitive substring filter on the name field.
in: query
name: filter[name]
required: false
schema:
type: string
voice-designs_PageNumber:
description: Page number for pagination (1-based).
in: query
name: page[number]
required: false
schema:
default: 1
minimum: 1
type: integer
voice-designs_Sort:
description: Sort order. Prefix with `-` for descending. Defaults to `-created_at`.
in: query
name: sort
required: false
schema:
default: -created_at
enum:
- name
- -name
- created_at
- -created_at
type: string
voice-designs_PageSize:
description: Number of results per page.
in: query
name: page[size]
required: false
schema:
default: 20
maximum: 250
minimum: 1
type: integer
FilterProvider:
description: Filter by voice synthesis provider. Case-insensitive.
in: query
name: filter[provider]
required: false
schema:
enum:
- telnyx
- minimax
- Telnyx
- Minimax
type: string
securitySchemes:
bearerAuth:
scheme: bearer
type: http
branded-calling_bearerAuth:
description: API key passed as a Bearer token in the Authorization header
scheme: bearer
type: http
oauthClientAuth:
description: OAuth 2.0 authentication for Telnyx API and MCP integrations
flows:
authorizationCode:
authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
refreshUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
tokenUrl: https://api.telnyx.com/v2/oauth/token
clientCredentials:
scopes:
admin: Administrative access to Telnyx resources
tokenUrl: https://api.telnyx.com/v2/oauth/token
type: oauth2
outbound-voice-profiles_bearerAuth:
bearerFormat: JWT
scheme: bearer
type: http
pronunciation-dicts_bearerAuth:
description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
scheme: bearer
type: http
stored-payment-transactions_bearerAuth:
bearerFormat: JWT
scheme: bearer
type: http