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

# Get Voices

> Retrieve a list of all available voices for text-to-speech synthesis

Retrieve a list of all available voices for text-to-speech synthesis.

## Authentication

Requires API key authentication via `x-api-key` header.

## Response

Returns an array of voice objects.

### Response Schema

Each voice object contains:

| Field         | Type           | Description                                                                     |
| ------------- | -------------- | ------------------------------------------------------------------------------- |
| `voice_id`    | string         | Unique identifier for the voice (used in text-to-speech requests)               |
| `name`        | string         | Human-readable name of the voice                                                |
| `description` | string \| null | Detailed description of the voice characteristics                               |
| `gender`      | string \| null | Gender of the voice (`male`, `female`, or `null`)                               |
| `age`         | string \| null | Age category of the voice (`middle`, `elderly`, or `null`)                      |
| `languages`   | array\[string] | List of language codes supported by the voice (e.g., `["ar", "en"]`)            |
| `dialect`     | array\[string] | List of dialects supported by the voice (e.g., `["fusha", "emirati", "najdi"]`) |
| `type`        | string \| null | Voice type (`neural` or `null`)                                                 |
| `sample_url`  | string         | URL to an audio sample of the voice                                             |

## Usage

Use the `voice_id` from the response in text-to-speech generation endpoints:

* `POST /text-to-speech/:model_id` - Include `voice_id` in the request body
* `WS /text-to-speech` - Include `voice_id` in the WebSocket message

## Voice Types

Voices can be categorized by:

* **Dialect**: `fusha` (Modern Standard Arabic), `emirati`, `najdi`, `hijazi`, `kuwaiti`, `egyptian`, `british`, etc.
* **Gender**: `male` or `female`
* **Age**: `middle` or `elderly`
* **Languages**: Supported language codes (e.g., `ar` for Arabic, `en` for English)

<Note>
  **Custom Voices**: Some voices may have `null` values for certain fields. These are typically custom user-created voices. The `voice_id` can still be used in text-to-speech requests regardless of these field values.
</Note>

<Note>
  **Caching**: Voice information doesn't change frequently. Consider caching the voice list to reduce API calls and improve application performance.
</Note>


## OpenAPI

````yaml GET /voices
openapi: 3.1.0
info:
  title: Faseeh API
  description: >-
    Faseeh - First True Arabic Voice AI that speaks Dialects From Abu Dhabi to
    Rabat with Voice Cloning & On-prem support
  version: 1.0.0
servers:
  - url: https://api.faseeh.ai/api/v1
    description: Production server
security:
  - apiKeyAuth: []
paths:
  /voices:
    get:
      tags:
        - Voices
      summary: Get Voices
      description: Retrieve a list of all available voices for text-to-speech synthesis
      operationId: getVoices
      responses:
        '200':
          description: List of available voices
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Voice'
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Voice:
      type: object
      properties:
        voice_id:
          type: string
          description: Unique identifier for the voice (used in text-to-speech requests)
        name:
          type: string
          description: Human-readable name of the voice
        description:
          type: string
          nullable: true
          description: Detailed description of the voice characteristics
        gender:
          type: string
          nullable: true
          enum:
            - male
            - female
          description: Gender of the voice
        age:
          type: string
          nullable: true
          enum:
            - middle
            - elderly
          description: Age category of the voice
        languages:
          type: array
          items:
            type: string
          description: List of language codes supported by the voice (e.g., ["ar", "en"])
        dialect:
          type: array
          items:
            type: string
          description: >-
            List of dialects supported by the voice (e.g., ["fusha", "emirati",
            "najdi"])
        type:
          type: string
          nullable: true
          enum:
            - neural
          description: Voice type
        sample_url:
          type: string
          format: uri
          description: URL to an audio sample of the voice
      required:
        - voice_id
        - name
        - languages
        - dialect
        - sample_url
    Error:
      type: object
      required:
        - errorCode
        - errorMessage
      properties:
        errorCode:
          type: string
          description: Error code identifier
        errorMessage:
          type: string
          description: Human-readable error message
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication

````