Telnyx Voice Clones API

Capture and manage voice identities as clones for use in text-to-speech synthesis.

OpenAPI Specification

telnyx-voice-clones-api-openapi.yml Raw ↑
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