# List voices

> GET https://api.nabrah.ai/api/ext/tts/voices

Group: Text to speech. Page: https://www.nabrah.ai/en/docs/api-reference/text-to-speech/list-voices

Lists every voice available to the project tied to your API key. The response combines public platform voices (shared across all projects) and the project's own private cloned voices created via the Clone Voice endpoint. Each voice's `id` is the value you pass as the `voice` field when generating speech and as the voice for agents. Call this endpoint first to discover which voice IDs you can use.

## Response shape

Returns a `voices` array plus a `total_count`. Each entry in `voices` describes one voice your project can use.

- **voices[]**: Array of voice descriptors. Includes both public platform voices and the project's private cloned voices. Fields: `id`, `name`, `is_public`, `created_at`, `is_ready`.
- **id**: The voice's unique identifier (UUID). This is exactly the value you put in the `voice` field of POST /api/ext/tts/generations and the voice configured on an agent.
- **is_public**: `true` for shared platform voices that any project can use; `false` for private voices that belong only to this project. Only private voices can be deleted.
- **is_ready**: Indicates whether the voice is usable. A freshly cloned voice starts as `false` while its background cloning job runs, and flips to `true` when ready. Do not pass a voice to TTS until `is_ready` is `true`.
- **total_count**: The number of voices returned in the `voices` array.

After cloning a voice, poll this endpoint (or GET /api/ext/tts/voices/{voice_id}) until `is_ready` becomes `true`.

## Authorization

- `X-API-Key` (string, header, required): your workspace API key.

## Response

### 200 Successful Response

Content type: `application/json`

```json
{
  "voices": [
    {
      "id": "00000000-0000-4000-8000-000000000000",
      "name": "string",
      "is_public": false,
      "created_at": "2026-01-15T12:00:00.000Z",
      "is_ready": false
    }
  ],
  "total_count": 0
}
```

## Request examples

### cURL

```bash
curl --request GET \
  --url 'https://api.nabrah.ai/api/ext/tts/voices' \
  --header 'X-API-Key: <your-api-key>'
```

### Python

```python
import requests

url = "https://api.nabrah.ai/api/ext/tts/voices"
headers = {"X-API-Key": "<your-api-key>"}

response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
```

### JavaScript

```javascript
const response = await fetch("https://api.nabrah.ai/api/ext/tts/voices", {
  method: "GET",
  headers: { "X-API-Key": "<your-api-key>" },
});

const data = await response.json();
console.log(data);
```

### Go

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.nabrah.ai/api/ext/tts/voices", nil)
	req.Header.Set("X-API-Key", "<your-api-key>")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
```
