---
title: "GET /voices/elevenlabs/library — ElevenLabs Voice Library"
url: https://lumean.app/de/developers/docs/api/get-voices-elevenlabs-library
locale: de
description: "ElevenLabs Voice Library"
generated: 2026-10-17
operationId: externalVoice.elevenlabsLibrary
method: GET
path: /voices/elevenlabs/library
scopes: [voices.read]
spec_version: 0.0.1
---

# GET /voices/elevenlabs/library

**ElevenLabs Voice Library**

A proxied view of the public ElevenLabs voice library — the pool of voices that can
be used for TTS beyond your own.

Filters are passed through to the provider, so their spelling is the provider's
(`american`, `young`, `narrative_story`). Note that pages are numbered **from zero**.

The provider is external: on an outage the endpoint answers `503`, and retrying later
is the right response.

**Required key permission:** `voices.read`.

- Benötigtes Recht: `voices.read`

## Anfrage

```bash
curl -X GET 'https://api.lumean.app/api/public/voices/elevenlabs/library' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Parameter

| Feld | In | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- | --- |
| `search` | query | `string` — ≤ 255 Zeichen | — | Search by voice name in the ElevenLabs library. |
| `sort` | query | `string` — ≤ 255 Zeichen | — | Sort method of the ElevenLabs library, passed through to the provider as-is. |
| `required_languages` | query | `string` — ≤ 255 Zeichen | — | Keep only voices supporting the given languages. ISO-639-1 codes, comma-separated. |
| `accent` | query | `string` — ≤ 255 Zeichen | — | Voice accent (`american`, `british`, …). |
| `gender` | query | `string` — `male` · `female` — ≤ 255 Zeichen | — | Voice gender. |
| `age` | query | `string` — `young` · `middle_aged` · `old` — ≤ 255 Zeichen | — | Voice age group. |
| `page` | query | `integer` — ≥ 0 | — | Page number. Note: external provider catalogues are numbered **from zero**. |
| `page_size` | query | `integer` — 1..50 | — | Page size. Defaults to 30, maximum 50. |
| `use_cases` | query | `string` — ≤ 255 Zeichen | — | Use cases (`narrative_story`, `social_media`, …), comma-separated. |

## Request-Body

Kein Body.

## Antworten

### 200 — Success. The payload is in `data`.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Success flag. Branch on the HTTP status code instead: any 2xx response carries `true` here, while an error comes back in a different shape that need not contain this field at all. |
| `message` | `string` | Pflicht | A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code. |
| `data` | `object` | Pflicht | The response payload. |
| `data.voices` | `array<object>` | Pflicht | Voices from the library. The object is passed through from the provider as is, so the provider defines the key set and may change it. The one you need is `voice_id`: put it into an elevenlabs template’s `config.voice_id`. |
| `data.voices[].*` | `any` — beliebige Schlüssel | — |  |
| `data.total` | `integer` | Pflicht | How many voices came back on this page. |
| `data.page` | `integer` | Pflicht | Page number, zero-based, echoing the request. |
| `data.page_size` | `integer` | Pflicht | Page size the server applied. |
| `data.has_more` | `boolean` | Pflicht | Whether another page exists. Rely on this flag rather than `total`, which counts only the current batch. |

**Beispiel**

```json
{
  "success": true,
  "message": "Success",
  "data": {
    "voices": [
      {
        "public_owner_id": "4c9a8e2f6b1d4a3c9f7e0b2d5a8c1f3e6b9d0a2c4e7f1b3d5a8c0e2f4b6d9a1c",
        "voice_id": "EXAVITQu4vr4xnSDxMaL",
        "name": "Bella Storyteller",
        "accent": "american",
        "gender": "female",
        "age": "young",
        "descriptive": "calm",
        "use_case": "narration",
        "category": "professional",
        "language": "en",
        "description": "Warm, calm narrator voice ideal for long-form audiobooks and meditation content.",
        "preview_url": "https://api.lumean.app/api/voice-preview?u=eyJpdiI6IjRjOWE4ZTJmNmIxZDRhM2MiLCJ2YWx1ZSI6ImZha2UifQ%3D%3D&signature=3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d",
        "usage_character_count_1y": 18234567,
        "usage_character_count_7d": 154302,
        "cloned_by_count": 3120,
        "free_users_allowed": true,
        "notice_period": 0,
        "instagram_username": null,
        "twitter_username": null,
        "youtube_username": null,
        "tiktok_username": null,
        "image_url": null,
        "is_added_by_user": false,
        "date_unix": 1748851200
      },
      {
        "public_owner_id": "9a1c3e5f7b0d2a4c6e8f1b3d5a7c9e0f2b4d6a8c0e2f4b6d8a0c2e4f6b8d0a2c",
        "voice_id": "yoZ06aMxZJJ28mfd3POQ",
        "name": "Sam Ad Voice",
        "accent": "british",
        "gender": "male",
        "age": "middle_aged",
        "descriptive": "energetic",
        "use_case": "advertisement",
        "category": "professional",
        "language": "en",
        "description": "Punchy, upbeat voice for commercials and promotional reads.",
        "preview_url": "https://api.lumean.app/api/voice-preview?u=eyJpdiI6IjlhMWMzZTVmN2IwZDJhNGMiLCJ2YWx1ZSI6ImZha2UifQ%3D%3D&signature=5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f",
        "usage_character_count_1y": 4021553,
        "usage_character_count_7d": 38210,
        "cloned_by_count": 512,
        "free_users_allowed": false,
        "notice_period": 0,
        "instagram_username": null,
        "twitter_username": null,
        "youtube_username": null,
        "tiktok_username": null,
        "image_url": null,
        "is_added_by_user": false,
        "date_unix": 1751328000
      }
    ],
    "total": 2,
    "page": 0,
    "page_size": 30,
    "has_more": false
  }
}
```

### 401 — The key is missing, unknown, disabled or expired.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |
| `data` | `null` — nullable | Pflicht | Always `null` when the request is rejected before processing. |

**Beispiel**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

### 403 — The key lacks the required permission, or the object belongs to another user.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |

**Beispiel**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 422 — Validation error. Offending fields are listed in `errors`.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `message` | `string` | Pflicht | Errors overview. |
| `errors` | `object` | Pflicht | A detailed description of each field that failed validation. |
| `errors.*` | `array<string>` — beliebige Schlüssel | — |  |

**Beispiel**

```json
{
  "message": "string",
  "errors": {}
}
```

### 503 — The external provider is temporarily unavailable. Retry later.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |

**Beispiel**

```json
{
  "success": false,
  "message": "The voice provider is temporarily unavailable. Please try again later."
}
```

---

- Diese Seite im Browser: https://lumean.app/de/developers/docs/api/get-voices-elevenlabs-library
- Vollständige maschinenlesbare Referenz: https://api.lumean.app/docs/llm.md
