> For AI agents: the documentation index is at https://platform.detectif.ai/llms.txt. Every page is also available as Markdown by adding `.md` to its path.

# List speakers

`GET /v1/speakers`

Lists the speakers of your account, newest first, with how many voice samples each has. Use `limit` and `cursor` to page through long lists. Requires scope `speakers:read`.

## Authentication

Send your API key as `Authorization: Bearer <your API key>`.

## Headers

| Name | Type | Required | Description |
|---|---|---|---|
| `Authorization` | string | yes | `Bearer <your API key>`. Keys are created in the dashboard; see [Authentication](https://platform.detectif.ai/docs/authentication/). |

## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `limit` | integer | no | How many speakers to return (1-100). (1 to 100; default `20`) |
| `cursor` | string or null | no | `next_cursor` from the previous page. (at most 256 characters) |

## Response

`200`: Success.

| Field | Type | Required | Description |
|---|---|---|---|
| `request_id` | string | yes |  |
| `object` | string | yes | (always `"list"`) |
| `data` | array of object | yes |  |
| `data.speaker_id` | string | yes | (pattern `^[A-Za-z0-9_.:-]{1,64}$`) |
| `data.display_name` | string or null | yes |  |
| `data.samples` | integer | yes | Active enrollment samples for the current speaker model (max 5). |
| `data.created_at` | string | yes |  |
| `data.updated_at` | string | yes |  |
| `has_more` | boolean | yes |  |
| `next_cursor` | string or null | yes |  |

### Example response

```json
{
  "request_id": "req_8f14e45fceea167a5a36dedd",
  "object": "list",
  "data": [
    {
      "speaker_id": "customer-4711",
      "display_name": "Ada Lovelace",
      "samples": 2,
      "created_at": "2026-10-13T09:30:00Z",
      "updated_at": "2026-10-13T09:41:12Z"
    }
  ],
  "has_more": false
}
```

## Errors

| Status | Meaning |
|---|---|
| `400` | The request is invalid, for example a missing or malformed field. |
| `401` | The API key is missing, invalid or revoked. |
| `403` | The key lacks the required scope, the email address is not verified, or the account is suspended. |
| `429` | Too many requests or too many operations at the same time. Wait for the number of seconds in Retry-After. |
| `500` | Something went wrong on our side. No credits were used. |

Error bodies use the shape described in [Errors](https://platform.detectif.ai/docs/errors/), with a stable `error.code`.

## Code samples

```bash
curl "https://platform.detectif.ai/v1/speakers" \
  -H "Authorization: Bearer $DETECTIF_API_KEY"
```

```python
import os

import requests

resp = requests.get(
    "https://platform.detectif.ai/v1/speakers",
    headers={"Authorization": f"Bearer {os.environ['DETECTIF_API_KEY']}"},
    timeout=30,
)
print(resp.status_code, resp.json())
```

```javascript
const res = await fetch("https://platform.detectif.ai/v1/speakers", {
  headers: {
    Authorization: `Bearer ${process.env.DETECTIF_API_KEY}`,
  },
});
console.log(res.status, await res.json());
```
