Skip to content
DashboardGet API Key

List voices for speaker assignment

video_translate.voices.list(VoiceListParams**kwargs) -> VoiceListResponse
GET/v1/video-translate/voices

Lists the voices that can be used as values in config.speaker_voices. voice_id is the external voice ID to submit. name and is_favorite reflect the authenticated account’s personalization; default_name is the catalog name. Ordered by favorites first, then name (case-insensitive), then voice_id.

ParametersExpand Collapse
application: Optional[str]

Case-insensitive exact match on the voice’s application (use case), for example narration (max 100 characters).

maxLength100
favorite: Optional[bool]

Only favorites (true) or only non-favorites (false).

gender: Optional[Literal["Male", "Female", "Other"]]

Case-insensitive gender filter.

One of the following:
"Male"
"Female"
"Other"
language: Optional[str]

Case-insensitive exact match on the voice’s primary language or any of its verified languages (max 100 characters).

maxLength100
limit: Optional[int]

Page size. Non-integers and values below 1 are rejected with 400; values above 100 are clamped to 100.

minimum1
maximum100
offset: Optional[int]

Number of items to skip. Non-integers and negative values are rejected with 400.

minimum0
ReturnsExpand Collapse
class VoiceListResponse: …
voices: List[Voice]
application: str

Intended use case, for example narration.

default_name: str
description: str
gender: Literal["Male", "Female", "Other"]
One of the following:
"Male"
"Female"
"Other"
is_favorite: bool

Whether the authenticated account marked this voice as a favorite.

language: str

Primary language label.

name: str

Effective name (the account’s custom name when set, otherwise default_name).

voice_id: str

External voice ID. Use this value in config.speaker_voices.

List voices for speaker assignment

import os
from chamelaion import Chamelaion

client = Chamelaion(
    bearer_token=os.environ.get("CHAMELAION_BEARER_TOKEN"),  # This is the default and can be omitted
)
voices = client.video_translate.voices.list()
print(voices.pagination)
{
  "voices": [
    {
      "voice_id": "21m00Tcm4TlvDq8ikWAM",
      "name": "Rachel (narration)",
      "default_name": "Rachel",
      "description": "Calm, young adult female voice.",
      "language": "en",
      "application": "narration",
      "gender": "Female",
      "is_favorite": true
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0,
    "total": 1
  }
}
{
  "error": "gender must be one of Male, Female, Other"
}
{
  "error": "favorite must be true or false"
}
{
  "error": "missing authorization header"
}
{
  "error": "invalid authorization format"
}
{
  "error": "missing token"
}
{
  "error": "invalid token"
}
{
  "error": "unauthorized"
}
{
  "error": "rate limit exceeded"
}
{
  "error": "internal error"
}
Returns Examples
{
  "voices": [
    {
      "voice_id": "21m00Tcm4TlvDq8ikWAM",
      "name": "Rachel (narration)",
      "default_name": "Rachel",
      "description": "Calm, young adult female voice.",
      "language": "en",
      "application": "narration",
      "gender": "Female",
      "is_favorite": true
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0,
    "total": 1
  }
}
{
  "error": "gender must be one of Male, Female, Other"
}
{
  "error": "favorite must be true or false"
}
{
  "error": "missing authorization header"
}
{
  "error": "invalid authorization format"
}
{
  "error": "missing token"
}
{
  "error": "invalid token"
}
{
  "error": "unauthorized"
}
{
  "error": "rate limit exceeded"
}
{
  "error": "internal error"
}