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

# List supported STT providers

> Retrieve the canonical list of supported speech-to-text providers, models, accepted language codes, and the service types each model supports.

Service types:
  * `streaming` — standalone WebSocket transcription via `/speech-to-text/transcription`.
  * `file_based` — file-based transcription via `/ai/audio/transcriptions`.
  * `in_call` — live call transcription via Call Control `transcription_start`.
  * `ai_assistant` — STT configured on a Call Control AI Assistant via voice-assistant `TranscriptionConfig` (covers both live-streaming and non-streaming/batch models).

Use this endpoint to discover which (provider, model) combinations are available for the surface you need, and which language codes each accepts. `auto` in a `languages` array indicates the provider performs language detection.



## OpenAPI

````yaml /openapi/source/external/speech-to-text/speech-to-text.json get /speech-to-text/providers
openapi: 3.1.0
info:
  version: 2.0.0
  title: Telnyx API
  x-latency-category: interactive
  x-endpoint-cost: light
  description: >-
    Speech to Text Services. Stream audio over WebSocket for real-time
    transcription, and discover available providers, models, and supported
    languages via REST.
  license:
    name: MIT
    url: https://github.com/openai/openai-openapi/blob/master/LICENSE
  contact:
    email: support@telnyx.com
servers:
  - url: https://api.telnyx.com/v2
    description: Telnyx API v2
  - url: wss://api.telnyx.com/v2
    description: Telnyx API v2 (WebSocket)
security:
  - bearerAuth: []
tags:
  - name: Speech To Text over WebSockets
    description: Speech to text command operations
  - name: Speech To Text Capabilities
    description: >-
      Discover available speech-to-text providers, models, and supported
      languages.
paths:
  /speech-to-text/providers:
    get:
      tags:
        - Speech To Text Capabilities
      summary: List supported STT providers
      description: >-
        Retrieve the canonical list of supported speech-to-text providers,
        models, accepted language codes, and the service types each model
        supports.


        Service types:
          * `streaming` — standalone WebSocket transcription via `/speech-to-text/transcription`.
          * `file_based` — file-based transcription via `/ai/audio/transcriptions`.
          * `in_call` — live call transcription via Call Control `transcription_start`.
          * `ai_assistant` — STT configured on a Call Control AI Assistant via voice-assistant `TranscriptionConfig` (covers both live-streaming and non-streaming/batch models).

        Use this endpoint to discover which (provider, model) combinations are
        available for the surface you need, and which language codes each
        accepts. `auto` in a `languages` array indicates the provider performs
        language detection.
      operationId: listSttProviders
      parameters:
        - name: service_type
          in: query
          required: false
          description: >-
            Filter to entries that support the given service type. For backward
            compatibility with the values that briefly shipped before the
            product-aligned rename, the legacy aliases `file_transcription`,
            `in_call_transcription`, and `ai_assistant_transcription` are
            silently accepted and normalized to `file_based`, `in_call`, and
            `ai_assistant` respectively. The response always emits the canonical
            (post-rename) values.
          schema:
            $ref: '#/components/schemas/STTServiceType'
        - name: provider
          in: query
          required: false
          description: >-
            Filter to entries for a specific STT provider. The enum mirrors the
            providers advertised across the speech-to-text spec (including
            `google` and `telnyx`, which are accepted as WebSocket transcription
            engines). A provider that has no models currently registered for any
            service type will return an empty `data` array rather than an error.
          schema:
            type: string
            enum:
              - deepgram
              - speechmatics
              - assemblyai
              - xai
              - soniox
              - parakeet
              - humain
              - reson8
              - azure
              - openai
              - google
              - telnyx
      responses:
        '200':
          description: List of supported STT providers and models.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/STTProvidersResponse'
        '400':
          description: Bad request — invalid filter value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - code: '10015'
                    title: Bad Request
                    detail: The request failed because it was not well-formed.
        '401':
          description: Authentication failed — missing or invalid API key.
        '422':
          $ref: '#/components/responses/UnprocessableEntityResponse'
      servers:
        - url: https://api.telnyx.com/v2
          description: Telnyx API v2
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Telnyx from 'telnyx';

            const client = new Telnyx({
              apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
            });

            const response = await client.speechToText.listProviders();

            console.log(response.data);
        - lang: Python
          source: |
            import os
            from telnyx import Telnyx

            client = Telnyx(
                api_key=os.environ.get("TELNYX_API_KEY"),  # This is the default and can be omitted
            )
            response = client.speech_to_text.list_providers()
            print(response.data)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.SpeechToText.ListProviders(context.TODO(), telnyx.SpeechToTextListProvidersParams{})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n}\n"
        - lang: Java
          source: >-
            package com.telnyx.sdk.example;


            import com.telnyx.sdk.client.TelnyxClient;

            import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;

            import
            com.telnyx.sdk.models.speechtotext.SpeechToTextListProvidersParams;

            import
            com.telnyx.sdk.models.speechtotext.SpeechToTextListProvidersResponse;


            public final class Main {
                private Main() {}

                public static void main(String[] args) {
                    TelnyxClient client = TelnyxOkHttpClient.fromEnv();

                    SpeechToTextListProvidersResponse response = client.speechToText().listProviders();
                }
            }
        - lang: Ruby
          source: |-
            require "telnyx"

            telnyx = Telnyx::Client.new(api_key: "My API Key")

            response = telnyx.speech_to_text.list_providers

            puts(response)
        - lang: PHP
          source: >-
            <?php


            require_once dirname(__DIR__) . '/vendor/autoload.php';


            use Telnyx\Client;

            use Telnyx\Core\Exceptions\APIException;


            $client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API
            Key');


            try {
              $response = $client->speechToText->listProviders(
                provider: 'deepgram', serviceType: 'streaming'
              );

              var_dump($response);
            } catch (APIException $e) {
              echo $e->getMessage();
            }
        - lang: CLI
          source: |-
            telnyx speech-to-text list-providers \
              --api-key 'My API Key'
components:
  schemas:
    STTServiceType:
      type: string
      description: >-
        Service surface a model is available on. `ai_assistant` is the STT
        surface configured via Call Control voice-assistant transcription; it
        covers both live-streaming and non-streaming/batch models (matching the
        `TranscriptionConfig.model` enum on `call-control` voice assistants).
      enum:
        - streaming
        - file_based
        - in_call
        - ai_assistant
    STTProvidersResponse:
      type: object
      description: List of supported STT providers and models.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/STTProvider'
        meta:
          $ref: '#/components/schemas/STTProvidersMeta'
      required:
        - data
        - meta
    Errors:
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    STTProvider:
      type: object
      description: >-
        A (provider, model) tuple along with the service surfaces it supports.
        Each entry in `service_types` describes one surface and the languages
        accepted on it.
      properties:
        provider:
          type: string
          description: STT provider name.
          example: deepgram
        model:
          type: string
          description: Provider-scoped model name.
          example: deepgram/nova-3
        hosted:
          type: boolean
          description: >-
            Whether this model runs on Telnyx-hosted infrastructure (`true`) or
            is provided by a third-party vendor (`false`).
        service_types:
          type: array
          description: >-
            Service surfaces this (provider, model) supports. When the request
            filters by `service_type`, only the matching nested entry is
            returned for each matching model.
          items:
            $ref: '#/components/schemas/STTProviderServiceType'
      required:
        - provider
        - model
        - hosted
        - service_types
    STTProvidersMeta:
      type: object
      properties:
        total:
          type: integer
          description: Total number of entries returned.
          example: 12
      required:
        - total
    Error:
      required:
        - code
        - title
      properties:
        code:
          type: string
          format: integer
        title:
          type: string
        detail:
          type: string
        source:
          type: object
          properties:
            pointer:
              description: JSON pointer (RFC6901) to the offending entity.
              type: string
              format: json-pointer
            parameter:
              description: Indicates which query parameter caused the error.
              type: string
        meta:
          type: object
    STTProviderServiceType:
      type: object
      description: >-
        A supported service surface for a given (provider, model), along with
        the language codes accepted on that surface. Language support can differ
        per surface — for example, a model may accept a narrower language set
        for streaming than for file transcription.
      properties:
        type:
          $ref: '#/components/schemas/STTServiceType'
        languages:
          type: array
          description: >-
            Languages accepted on this service surface, in the provider's native
            code format. `auto` indicates the provider performs language
            detection.
          items:
            type: string
          example:
            - en
            - es
            - fr
      required:
        - type
        - languages
  responses:
    UnprocessableEntityResponse:
      description: >-
        Unprocessable entity. The request was well-formed but could not be
        processed due to semantic errors. This includes validation errors,
        invalid parameter values and business logic violations.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Errors'
          examples:
            missing_required_parameter:
              summary: Missing required parameter
              value:
                errors:
                  - code: '10004'
                    title: Missing required parameter
                    detail: >-
                      The 'transcription_engine' parameter is required and
                      cannot be blank.
                    source:
                      pointer: /transcription_engine
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````