---
title: "List Audio Voices"
method: GET
path: "/v3/models/audio/voices"
tags: ["Models"]
---

# List Audio Voices

`GET /v3/models/audio/voices`

## Request

- Base URL: `https://api.heygen.com`
- URL: `https://api.heygen.com/v3/models/audio/voices`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Returns model-backed audio voices, ordered newest first. With the default `type=private`, these are the voices in the caller's workspace, professional and instant; `mode` tells them apart. With `type=public`, these are the voices HeyGen provides to every workspace. Use `limit` and `token` to retrieve additional pages.

## Query parameters

- `type` 'private' | 'public'
- `limit` integer
- `token` string

## Response `200`

Successful response

- object
  - `data` ModelAudioVoiceResponse[]
    - `voice_id` string, required: Stable identifier for this voice.
    - `mode` 'professional' | 'instant', required: `professional` for a professional voice clone, `instant` for an instant voice clone.
    - `name` string, required: Display name of the voice.
    - `language` string, nullable: Primary language code of the voice. An instant clone created without one has none until its recording passes every check and the detected language is recorded, so a clone refused before that never gets one. A professional voice created without one has none until it is ACTIVE.
    - `status` 'PENDING' | 'ACTIVE' | 'FAILED', required: Values persisted in ``video_tts_voices.status``.
    - `created_at` integer, required: Unix timestamp in seconds when the voice was created.
    - `failure_reason` 'INVALID_AUDIO' | 'INSUFFICIENT_AUDIO' | 'PREPROCESSING_FAILED' | 'TRAINING_FAILED' | 'DESIGN_FAILED' | 'ARTIFACT_VALIDATION_FAILED' | 'INTERNAL_ERROR': Stable failure codes persisted for terminal training failures.
    - `preview_audio_url` string, nullable: URL to a WAV clip of this voice reading a short fixed preview script: in its language when a script exists for it, otherwise in English. Present only when `status` is `ACTIVE` and a clip exists. The URL can expire; read the voice again rather than storing it.
  - `has_more` boolean: Whether more pages are available
  - `next_token` string, nullable: Opaque cursor for the next page

## Other responses

- `400`: Invalid request parameters
- `401`: Authentication failed
- `429`: Rate limit exceeded

## Changes

- **2026-11-03** `7dfa5e59b4f5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/heygen/apis/heygen-external-api/changes/v3/models/audio/voices/get.md)

---

[API](https://skmtc.dev/heygen/apis/heygen-external-api.md) - [All operations](https://skmtc.dev/heygen/apis/heygen-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/heygen/apis/heygen-external-api/revisions/7dfa5e59b4f5?raw)
