# List designed voices

`GET https://api.paxalabs.com/v1/voices/designed`

GET /v1/voices/designed lists the account's designed voices, oldest first, with the slots in use and the plan's limit.

Each `id` is the value the `voice` field accepts with `model` set to `paxa-tts-flash-v2`. After a downgrade, `slots.used` can exceed `slots.limit`. Every saved voice keeps speaking, and a save waits until a voice is deleted. Listing costs nothing and takes no rate-limit token.

## Headers

- `authorization` (Bearer pxa_..., required): Authorization: Bearer pxa_... (recommended).
- `x-api-key` (pxa_..., optional): Alternative to the Authorization header. Ignored when Authorization is present.

See authentication at https://paxalabs.com/docs/authentication.

## Response

- `voices` (array of objects, required): The account's designed voices, oldest first.
  - `voices[].id` (string, required): The voice id, starting "voice_". Send it as voice with model paxa-tts-flash-v2 on POST /v1/tts, POST /v1/audio/speech, or the /v1/tts/live socket.
  - `voices[].name` (string, required): Display name, which PATCH changes. The voice field does not accept it.
  - `voices[].role` (string, required): Who the voice is, in a few words.
  - `voices[].description` (string, required): How the voice sounds, in one sentence.
  - `voices[].gender` ("f" or "m", required): Voice gender, "f" or "m".
  - `voices[].language` ("th" or "en" or "zh", required): The one language the voice speaks: "th" (Thai), "en" (English), or "zh" (Mandarin Chinese, Simplified script).
  - `voices[].model` (string, required): The model the voice speaks on.
  - `voices[].created_at` (string, required): Save time, ISO 8601.
- `slots` (object, required): The account's voice slots.
  - `slots.used` (integer, required): Designed voices the account holds.
  - `slots.limit` (integer, required): Designed voices the plan allows. After a downgrade, used can exceed it: every saved voice keeps speaking, and saving waits until used is below limit.

## Errors

- `unauthorized` (401): The request carried no API key, or the key is invalid or disabled.

## Example

curl:

```bash
curl https://api.paxalabs.com/v1/voices/designed \
  -H "Authorization: Bearer $PAXA_API_KEY"
```

Response:

```json
{
  "voices": [
    {
      "id": "voice_3f9a1c2e7b4d4e8a9c0b1d2e3f4a5b6c",
      "name": "Nok",
      "role": "Pharmacist",
      "description": "A calm, warm voice that explains each step slowly.",
      "gender": "f",
      "language": "th",
      "model": "paxa-tts-flash-v2",
      "created_at": "2026-10-23T08:41:16.204Z"
    }
  ],
  "slots": {
    "used": 1,
    "limit": 3
  }
}
```
