> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.videogen.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.videogen.io/_mcp/server.

# List TTS voices

GET https://api.videogen.io/v1/resources/tts-voices

List available text-to-speech voices. Pass a `voiceId` or `displayName` from the response to the text-to-speech endpoint. Cursor-paginated; see the [Pagination](/pagination) guide. Pass `query` to filter by voice id, display name, language, accent, or description.

Reference: https://docs.videogen.io/rest-api-reference/resources/list-tts-voices

## Authentication

- `Authorization` header (bearer token, required) — API key from [app.videogen.io/api](https://app.videogen.io/api). The full key is only shown once when you create it.

## Request

### Query parameters

- `limit` (integer, optional, default: 50) — Maximum number of items to return in the page. Defaults to 50; capped at 200. See [Pagination](/pagination).
- `cursor` (string, optional) — Opaque pagination cursor returned as `nextCursor` by the previous page. Omit on the first request. Cursors are tied to the endpoint that produced them and must be passed unmodified. See [Pagination](/pagination).
- `includeDeprecatedVoices` (boolean, optional, default: false) — When true, includes voices that are deprecated but still callable. Defaults to false.
- `query` (string, optional) — Optional case-insensitive substring filter across each item's searchable text fields. Omit to return the unfiltered catalogue.

## Response

### 200

List of TTS voices. Pass a `voiceId` or `displayName` to `POST /v1/tools/text-to-speech`.

- `ttsVoices` (list of TtsVoice, required)
- `hasMore` (boolean, required) — When true, there are more voices available. Pass `nextCursor` as the `cursor` query param to fetch the next page.
- `nextCursor` (string, required, nullable) — Opaque cursor to fetch the next page. `null` when `hasMore` is false.

## Types

### TtsVoice

A text-to-speech voice.

- `voiceId` (string, required) — Voice id (e.g. `vg_voic_...`). Pass this or `displayName` as `voiceId` to `POST /v1/tools/text-to-speech`.
- `languageCode` (string, required) — Locale tag for the voice (e.g. `en-US`, `es-ES`).
- `displayName` (string, required) — Human-readable voice name.
- `displayGender` (enum, required) — Voice gender.
  - Allowed values: `MALE`, `FEMALE`, `NEUTRAL`
- `supportsDirectToolExecution` (boolean, required) — When false, this voice cannot be used directly with `POST /v1/tools/text-to-speech`. All voices, regardless of this field, can be used in full video generation workflows such as script-to-video.
- `supportsAllLanguages` (boolean, required) — When true, this voice can synthesize text in any language regardless of its `languageCode`. When false, the voice only supports its listed language.
- `isDeprecated` (boolean, required) — When true, this voice is deprecated and may be removed in a future API version. Prefer non-deprecated voices for new integrations.
- `accent` (string, optional, nullable) — Accent (e.g. `american`, `british`).
- `description` (string, optional, nullable) — Description of the voice.

## Examples

**Response**

```json
{
  "ttsVoices": [
    {
      "voiceId": "vg_voic_7t1wdka3tmk",
      "languageCode": "en-US",
      "displayName": "Matilda",
      "displayGender": "FEMALE",
      "supportsDirectToolExecution": false,
      "supportsAllLanguages": true,
      "isDeprecated": false,
      "accent": "american",
      "description": "A professional woman with a pleasing alto pitch."
    }
  ],
  "hasMore": false,
  "nextCursor": null
}
```

**SDK Code**

```typescript
import { VideoGen } from "@videogen/sdk";

const client = new VideoGen({ apiKey: "sk_videogen_live_..." });

await client.resources.listTtsVoices();
```

```python
from videogen import VideoGen

client = VideoGen(api_key="sk_videogen_live_...")

client.resources.list_tts_voices()
```