> ## Documentation Index
> Fetch the complete documentation index at: https://docs.verbex.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List TTS providers

> List the text-to-speech providers you can use in an agent, with the voices each one offers per language. This catalog is read-only.

To reference an entry when you [create](/api-reference/ai-agents-v3/create-ai-agent) or [update](/api-reference/ai-agents-v3/update-ai-agent) an agent:

| Agent field | Where it is in this response |
| --- | --- |
| `tts.provider_id` | `data[].id` |
| `tts.voice_id` | `data[].languages[].voices[].voice_id` |

The catalog is global. Providers are sorted by `priority`, then by creation time. Pass `sort_direction` to reverse the order.

## Filters

| Parameter | Notes |
| --- | --- |
| `language_code` | Only providers that support this language code. |
| `status` | `ACTIVE`, `INACTIVE` or `DELETED`. Defaults to `ACTIVE`. |
| `page_size` | `1`–`100`, default `10`. |
| `sort_direction` | `asc` or `desc`, default `desc`. |

<Note>
This list still uses the older paged shape, not the v3 envelope. The providers are in the top-level `data` array and the cursor is the top-level `next_page_token`. There is no `status` or `message`. When `next_page_token` is absent, you have reached the last page.
</Note>



## OpenAPI

````yaml /api-reference/openapi.json get /v3/tts/providers
openapi: 3.1.0
info:
  title: Verbex Platform API
  description: API for managing AI agents, calls, phone numbers, and more.
  version: 1.0.0
servers: []
security: []
tags:
  - name: Knowledge Bases
    description: >-
      Create and manage knowledge bases, ingest documents into them, and search
      them semantically.


      **Authentication.** Every request carries a bearer token: `Authorization:
      Bearer <API_TOKEN>`. That is the only credential a client sends. The
      gateway resolves your identity from it and injects the tenant headers the
      service reads internally, so clients never send `x-user-org-id` or
      `x-verbex-id` themselves.


      **Tenancy is enforced on every route.** A knowledge base belongs to one
      organization and one user. Requesting one your token does not own returns
      `404 Knowledge base not found`, never `403`. This is deliberate: a
      nonexistent ID, a malformed ID and someone else's ID are indistinguishable
      in the response, so the API cannot be used to probe for other tenants'
      data. If you get a `404` on an ID you are certain exists, suspect the
      token before you suspect the ID.


      **Ingestion is asynchronous.** File upload and website crawl both answer
      `202` as soon as the material is stored and the job is queued. Parsing,
      chunking, embedding and indexing happen afterwards in a worker. Poll the
      document status endpoint until it reports `completed` before expecting
      search to see the content. That gap is the most common source of "why
      isn't my data showing up".


      **There is no document update endpoint.** Every submission mints a new
      `document_id`, so re-uploading a file or re-crawling the same URLs creates
      a second document while the first remains. To refresh material, delete
      then resubmit — and note that the sequence is not atomic.
  - name: AI Agents v3
    description: >-
      Create, read, update and delete AI agents. v3 selects the LLM,
      speech-to-text model and voice by catalog id, and wraps every response in
      a standard envelope. It replaces the deprecated AI Agents v2 operations,
      which stop working on November 30, 2026. See [Migrate from v2 to
      v3](/api-reference/ai-agents-v3/migrate-from-v2).
  - name: LLM Models
    description: >-
      The LLM model catalog. Look up the `llm_model_id` to send as `llm.llm_id`
      when you create or update an agent.
  - name: Speech Providers
    description: >-
      The speech-to-text and text-to-speech provider catalogs. Look up the
      `provider_id`, `model_id` and `voice_id` to send when you create or update
      an agent.
paths:
  /v3/tts/providers:
    get:
      tags:
        - Speech Providers
      summary: List TTS providers
      description: >-
        List the text-to-speech providers you can use in an agent, with the
        voices each one offers per language. This catalog is read-only.


        To reference an entry when you
        [create](/api-reference/ai-agents-v3/create-ai-agent) or
        [update](/api-reference/ai-agents-v3/update-ai-agent) an agent:


        | Agent field | Where it is in this response |

        | --- | --- |

        | `tts.provider_id` | `data[].id` |

        | `tts.voice_id` | `data[].languages[].voices[].voice_id` |


        The catalog is global. Providers are sorted by `priority`, then by
        creation time. Pass `sort_direction` to reverse the order.


        ## Filters


        | Parameter | Notes |

        | --- | --- |

        | `language_code` | Only providers that support this language code. |

        | `status` | `ACTIVE`, `INACTIVE` or `DELETED`. Defaults to `ACTIVE`. |

        | `page_size` | `1`–`100`, default `10`. |

        | `sort_direction` | `asc` or `desc`, default `desc`. |


        <Note>

        This list still uses the older paged shape, not the v3 envelope. The
        providers are in the top-level `data` array and the cursor is the
        top-level `next_page_token`. There is no `status` or `message`. When
        `next_page_token` is absent, you have reached the last page.

        </Note>
      operationId: list_tts_providers_v3
      parameters:
        - name: language_code
          in: query
          required: false
          description: Only providers that support this language code, for example `en-US`.
          schema:
            type: string
            title: Language Code
        - name: status
          in: query
          required: false
          description: Filter by lifecycle status.
          schema:
            type: string
            enum:
              - ACTIVE
              - INACTIVE
              - DELETED
            default: ACTIVE
            title: Status
        - name: page_size
          in: query
          required: false
          description: Number of results per page, `1`–`100`.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
            title: Page Size
        - name: page_token
          in: query
          required: false
          description: >-
            Cursor from the previous response's `next_page_token`. Omit for the
            first page.
          schema:
            type: string
            title: Page Token
        - name: sort_direction
          in: query
          required: false
          description: Sort order.
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
            title: Sort Direction
      responses:
        '200':
          description: Page of TTS providers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TtsProviderPage'
              example:
                data:
                  - id: 6a5c079f814b8ed08b15172b
                    provider_name: elevenlabs
                    display_name: ElevenLabs
                    status: ACTIVE
                    priority: 10
                    languages:
                      - language_code: en-US
                        language_name: English (US)
                        is_default: true
                        voices:
                          - voice_id: cgSgspJ2msm6clMCkdW9
                            voice_name: Jessica
                            display_name: Jessica
                            model_name: eleven_flash_v2_5
                            model_version: '2.5'
                            latency_in_ms: 250
                            tag: fast
                            gender: female
                            accent: american
                            style: conversational
                            is_default: true
                    created_at: '2026-05-04T08:00:00Z'
                    modified_at: '2026-09-12T11:20:00Z'
                next_page_token: >-
                  eyJwcmlvcml0eSI6MTAsIl9pZCI6IjZhNWM0NTgwOGQyZDk0ZTlkMGUyNTVkMyJ9
components:
  schemas:
    TtsProviderPage:
      type: object
      title: PagedResponse<TtsProvider>
      description: >-
        This list uses the older paged shape: the array is the top-level `data`,
        the cursor is the top-level `next_page_token`, and there is no `status`
        or `message`.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TtsProvider'
          title: Data
          description: Providers on this page.
        next_page_token:
          type: string
          title: Next Page Token
          description: Cursor for the following page. Omitted on the last page.
    TtsProvider:
      type: object
      title: TtsProvider
      properties:
        id:
          type: string
          title: Id
          description: Provider id. Send it as `tts.provider_id`.
        provider_name:
          type: string
          title: Provider Name
          description: >-
            Provider key, for example `deepgram`. Also the path parameter of the
            get operation.
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Display Name
          description: Provider name for display.
        status:
          type: string
          enum:
            - ACTIVE
            - INACTIVE
            - DELETED
          title: Status
          description: >-
            Lifecycle status. Only `ACTIVE` providers can be referenced by an
            agent.
        priority:
          anyOf:
            - type: integer
            - type: 'null'
          title: Priority
          description: Sort weight.
        created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created At
          description: Creation time.
        modified_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Modified At
          description: Last change time.
        languages:
          type: array
          items:
            $ref: '#/components/schemas/TtsLanguage'
          title: Languages
          description: Languages the provider supports.
    TtsLanguage:
      type: object
      title: TtsLanguage
      properties:
        language_code:
          type: string
          title: Language Code
          description: BCP-47 language code.
        language_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Language Name
          description: Language name for display.
        is_default:
          type: boolean
          title: Is Default
          description: Whether this is the provider's default language.
        voices:
          type: array
          items:
            $ref: '#/components/schemas/TtsVoice'
          title: Voices
          description: Voices offered for this language.
    TtsVoice:
      type: object
      title: TtsVoice
      properties:
        voice_id:
          type: string
          title: Voice Id
          description: >-
            Voice id. Send it as `tts.voice_id`. A voice is listed once per
            language it supports.
        voice_name:
          type: string
          title: Voice Name
          description: Voice name.
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Display Name
          description: Voice name for display.
        model_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Name
          description: Synthesis model that produces this voice.
        model_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Version
          description: Model version.
        latency_in_ms:
          anyOf:
            - type: integer
            - type: 'null'
          title: Latency In Ms
          description: Expected latency in milliseconds.
        tag:
          anyOf:
            - type: string
            - type: 'null'
          title: Tag
          description: Optional label for grouping.
        gender:
          anyOf:
            - type: string
            - type: 'null'
          title: Gender
          description: Voice gender.
        accent:
          anyOf:
            - type: string
            - type: 'null'
          title: Accent
          description: Voice accent.
        style:
          anyOf:
            - type: string
            - type: 'null'
          title: Style
          description: Voice style.
        is_default:
          type: boolean
          title: Is Default
          description: Whether this is the default voice for the language.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.