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

# List models (OpenRouter)

> The models of the OpenAI-compatible route in the provider document format of [OpenRouter](https://openrouter.ai): one entry per language that has voices, named `assemblyai-tts-<language code>`, with the voices (each by its library slug, such as `aai-jane`), output formats, input limit and data centers of each.

It is public: no credential is needed, and a credential that is sent is not checked. `HEAD` answers with the same headers and no body. The answer may be cached for 5 minutes (`Cache-Control: public, max-age=300`).



## OpenAPI

````yaml api-reference/specs/streaming-tts-speech.yaml GET /v1/openrouter/models
openapi: 3.0.3
info:
  title: AssemblyAI Streaming TTS HTTP API
  description: >-
    HTTP API of Streaming Text-to-Speech: send a text in one `POST` and read the
    speech back as the response body. The audio streams while it is synthesized,
    so the first bytes arrive long before the last; with `"stream": false` the
    whole clip arrives at once. `POST /v1/speech/events` streams the audio as
    server-sent events with word timings, and `POST /v1/openai/audio/speech`
    takes the request shape of the OpenAI speech API, so OpenAI SDKs and the
    frameworks built on them work by changing their base URL. See the
    [Quickstart](/tts/getting-started/quickstart) for a first request and
    [OpenAI compatibility](/tts/openai-compatibility) for the OpenAI-compatible
    route.


    Voices, models, audio formats and text handling are those of the [Streaming
    TTS WebSocket API](/tts/connect-parameters). Every error the native routes
    answer has the JSON body described under `ErrorResponse`, and every error of
    the OpenAI-compatible routes the body described under `OpenAIErrorResponse`;
    see [HTTP API basics](/tts/api-reference/http-api/overview).
  version: 1.0.0
  termsOfService: https://www.assemblyai.com/legal/terms-of-service
  contact:
    name: API Support
    email: support@assemblyai.com
    url: https://www.assemblyai.com/docs/
servers:
  - url: https://tts.us.assemblyai.com
    description: US data zone
    x-fern-server-name: US
  - url: https://tts.eu.assemblyai.com
    description: EU data zone
    x-fern-server-name: EU
security:
  - apiKey: []
tags:
  - name: Speech
    description: Text to speech in one request.
  - name: OpenAI compatibility
    description: The route and the models documents for OpenAI-shaped clients.
paths:
  /v1/openrouter/models:
    get:
      tags:
        - OpenAI compatibility
      summary: List models (OpenRouter)
      description: >-
        The models of the OpenAI-compatible route in the provider document
        format of [OpenRouter](https://openrouter.ai): one entry per language
        that has voices, named `assemblyai-tts-<language code>`, with the voices
        (each by its library slug, such as `aai-jane`), output formats, input
        limit and data centers of each.


        It is public: no credential is needed, and a credential that is sent is
        not checked. `HEAD` answers with the same headers and no body. The
        answer may be cached for 5 minutes (`Cache-Control: public,
        max-age=300`).
      operationId: ListOpenRouterModels
      responses:
        '200':
          description: OK.
          headers:
            Cache-Control:
              $ref: '#/components/headers/Cache-Control-Public'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenRouterModelList'
        '404':
          $ref: '#/components/responses/OpenAINotFound'
        '405':
          $ref: '#/components/responses/OpenAIMethodNotAllowed'
      security: []
components:
  headers:
    Cache-Control-Public:
      description: '`public, max-age=300`.'
      schema:
        type: string
    X-Request-Id:
      description: >-
        The request's id, a UUID, on every response, errors and the answer to a
        browser's CORS preflight included. It is the `id` of the `Begin` event
        and the `request_id` of an error body. Quote it in support requests.
      schema:
        type: string
    Allow:
      description: The methods the path answers, such as `OPTIONS, POST`.
      schema:
        type: string
  schemas:
    OpenRouterModelList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OpenRouterModel'
    OpenRouterModel:
      type: object
      additionalProperties: true
      description: One language's entry, in OpenRouter's provider document format.
      properties:
        schema_version:
          type: string
        id:
          type: string
          description: '`assemblyai-tts-<language code>`, a name the `model` field accepts.'
        name:
          type: string
        created:
          type: integer
        description:
          type: string
        input_modalities:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The text input, with its length limit (5,000 characters).
        output_modalities:
          type: array
          items:
            type: object
            additionalProperties: true
          description: >-
            The speech output, with its voices, output formats, pricing and
            capacity.
        datacenters:
          type: array
          items:
            type: object
            additionalProperties: true
        deployment_region:
          type: string
        is_ready:
          type: boolean
    OpenAIErrorResponse:
      type: object
      required:
        - error
      description: The body of every error of the OpenAI-compatible routes.
      properties:
        error:
          $ref: '#/components/schemas/OpenAIError'
    OpenAIError:
      type: object
      required:
        - message
        - type
        - code
        - request_id
        - retryable
      properties:
        message:
          type: string
          description: What went wrong, written for people.
        type:
          type: string
          description: >-
            The OpenAI error type: `invalid_request_error`,
            `authentication_error`, `permission_error`, `insufficient_quota`,
            `rate_limit_error`, `server_error` or `service_unavailable_error`.
        param:
          type: string
          nullable: true
          description: The field the error is about, or `null`.
        code:
          type: string
          description: The same code the native routes answer, such as `invalid_parameter`.
        request_id:
          type: string
          description: The request's id, also in the `X-Request-Id` header.
        retryable:
          type: boolean
          description: Whether the same request can succeed when you retry it later.
        retry_after_seconds:
          type: integer
          nullable: true
          description: Seconds to wait before retrying; `null` when there is no hint.
  responses:
    OpenAINotFound:
      description: >-
        Type `invalid_request_error`, code `not_found`: a path the API does not
        serve, an unknown path or a documented one with a trailing slash. Paths
        are exact; nothing redirects.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OpenAIErrorResponse'
    OpenAIMethodNotAllowed:
      description: >-
        Type `invalid_request_error`, code `method_not_allowed`: a method the
        path does not answer; `Allow` lists the ones it does.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        Allow:
          $ref: '#/components/headers/Allow'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OpenAIErrorResponse'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your AssemblyAI API key, or a temporary token, in the `Authorization`
        header. The raw key works directly; a `Bearer ` prefix is also accepted,
        which is what OpenAI SDKs send. Send exactly one `Authorization` header.
        The HTTP routes read the credential from this header only.

````