---
title: "List every voice you can synthesize with"
method: GET
path: "/v1/audio/voices"
tags: ["audio"]
---

# List every voice you can synthesize with

`GET /v1/audio/voices`

## Request

- Base URL: `https://api.ditto.audio` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ditto.audio/v1/audio/voices`
- Auth: HTTP bearer

Flat and unpaginated — cache it (5 minutes is a sensible TTL). Every entry always carries `id`, `model` and `language`. Includes your own custom voices alongside the public catalogue.

## Query parameters

- `language` string

## Headers

- `if-none-match` string, required

## Response `200`

- object
  - `voices` object[]
    - `id` string, required
    - `model` 'kokoro' | 'xtts' | 'pocket', required
    - `language` string, required: The language the voice speaks with its OWN accent. It speaks every language its model does.
    - `nativeAccent` boolean: With `?language=` only: the voice was recorded in that language. Native voices come first.
    - `name` string
    - `premium` boolean
    - `owned` boolean: Your own custom voice.
  - `language` object: With `?language=` only: the language the list was filtered by.
    - `code` string
    - `name` string
    - `withheld` string: Why no model speaks it yet; the list is then empty.

## Other responses

- `304`: Not modified: the `If-None-Match` ETag still matches. Not metered.

---

[API](https://skmtc.dev/ditto/apis/ditto-audio-api.md) · [All operations](https://skmtc.dev/ditto/apis/ditto-audio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ditto/apis/ditto-audio-api/revisions/30c8d7c218da?raw)
