# List saved voices

- **Method:** `GET`
- **Path:** `/api/v1/voices`
- **Operation ID:** `list_voices_api_v1_voices_get`
- **Tags:** Voices

Return all saved voices, optionally filtered by type (clone or design).

## Effective servers

- `http://127.0.0.1:8100`

  Voice Creator Pro on this computer

## Query parameters

- **`voice_type`**: `string | null`

  Filter by voice type: 'clone' or 'design'

## Responses

### 200 Successful Response

**Content type:** `application/json`

schema: `VoiceListResponse`

- **`voices` (required)**: `array`

  List of saved voices

  **Items:**

  schema: `VoiceItem`
  - **`created_at` (required)**: `string`

    ISO 8601 creation timestamp
  - **`duration_seconds` (required)**: `number`

    Duration of the reference audio in seconds
  - **`id` (required)**: `string`

    Unique voice identifier
  - **`name` (required)**: `string`

    User-assigned voice name
  - **`transcript` (required)**: `string`

    Transcript of the reference audio
  - **`created_with_model`**: `string | null`

    Model family the voice was created with
  - **`has_voice_clone_prompt`**: `boolean`, default: `false`

    Whether a precomputed voice prompt cache exists
  - **`ref_text`**: `string | null`

    Reference text used during cloning
  - **`source`**: `object | null`, schema: `VoiceSourceModel`

    Public sample the audio was cut from, when imported
    - **`end` (required)**: `number`, exclusiveMinimum: `0`

      End of the saved audio within the sample, in seconds
    - **`start` (required)**: `number`, minimum: `0`

      Start of the saved audio within the sample, in seconds
    - **`task_id` (required)**: `string`

      Id of the public sample the audio was cut from
  - **`starter_key`**: `string | null`

    Starter voice key when the voice came from the starter set
  - **`transcript_manual`**: `boolean | null`

    True if the transcript was written or corrected by the user
  - **`voice_type`**: `string`, default: `"clone"`

    Voice type: 'clone' or 'design'
  - **`word_timestamps`**: `(array of object) | null`

    Word-level timestamps if persisted

**Example:**

```json
{
  "voices": [
    {
      "id": "a1b2c3d4",
      "name": "My Custom Voice",
      "transcript": "Hello, this is a sample of my voice.",
      "ref_text": "",
      "voice_type": "clone",
      "created_at": "2026-01-15T10:30:00Z",
      "duration_seconds": 8.5,
      "has_voice_clone_prompt": false,
      "word_timestamps": [
        {
          "additionalProperty": "anything"
        }
      ],
      "transcript_manual": true,
      "created_with_model": "",
      "starter_key": "",
      "source": {
        "task_id": "",
        "start": 0,
        "end": 1
      }
    }
  ]
}
```

### 422 Validation Error

**Content type:** `application/json`

schema: `HTTPValidationError`

- **`detail`**: `array`

  **Items:**

  schema: `ValidationError`
  - **`loc` (required)**: `array of (string | integer)`
  - **`msg` (required)**: `string`
  - **`type` (required)**: `string`
  - **`ctx`**: `object`
  - **`input`**: `any`

**Example:**

```json
{
  "detail": [
    {
      "loc": [
        ""
      ],
      "msg": "",
      "type": "",
      "input": null,
      "ctx": {}
    }
  ]
}
```

## Schemas

- `HTTPValidationError` — shown above.
- `ValidationError` — shown above.
- `VoiceItem` — shown above.
- `VoiceListResponse` — shown above.
- `VoiceSourceModel` — shown above.
