> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getbutter.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ElevenLabs Voice Library

> Browse shared ElevenLabs voices and add one to your workspace library.

Use these endpoints to discover shared ElevenLabs voices and add selected voices for agent usage.

## List shared library voices

`GET /api/voices/elevenlabs/library`

### Query Parameters

<ParamField query="query" type="string">
  Free-text search query.
</ParamField>

<ParamField query="language" type="string">
  Language code filter.
</ParamField>

<ParamField query="gender" type="string">
  Gender filter (for example `male` or `female`).
</ParamField>

<ParamField query="age" type="string">
  Age filter (for example `young`, `middle_aged`, `old`).
</ParamField>

<ParamField query="accent" type="string">
  Accent filter.
</ParamField>

<ParamField query="category" type="string">
  Voice category filter.
</ParamField>

<ParamField query="use_cases" type="array">
  Use-case filter. Can be repeated for multiple use cases.
</ParamField>

<ParamField query="sort" type="string">
  Sort option. Default: `trending`.
</ParamField>

<ParamField query="page" type="integer">
  Zero-based page index.
</ParamField>

<ParamField query="page_size" type="integer">
  Page size (max 100).
</ParamField>

### Response

<ResponseField name="voices" type="array">
  Library voices that match filters.
</ResponseField>

<ResponseField name="voices[].id" type="string">
  Voice ID.
</ResponseField>

<ResponseField name="voices[].public_owner_id" type="string">
  Public owner ID used when adding the voice.
</ResponseField>

<ResponseField name="voices[].name" type="string">
  Voice display name.
</ResponseField>

<ResponseField name="voices[].preview_url" type="string|null">
  Direct preview URL when available.
</ResponseField>

<ResponseField name="has_more" type="boolean">
  Whether additional pages are available.
</ResponseField>

<ResponseField name="next_cursor" type="string|null">
  Next page index as string when more pages exist.
</ResponseField>

## Add a shared voice to your library

`POST /api/voices/elevenlabs/library/add`

<ParamField body="public_owner_id" type="string" required>
  Public owner ID from the shared voice listing.
</ParamField>

<ParamField body="voice_id" type="string" required>
  Shared voice ID to add.
</ParamField>

<ParamField body="name" type="string" required>
  Name to save the voice under in your workspace.
</ParamField>

<ResponseField name="voice_id" type="string">
  Added voice ID in your ElevenLabs account/library.
</ResponseField>

<RequestExample>
  ```json Request theme={null}
  {
    "public_owner_id": "owner_123abc",
    "voice_id": "21m00Tcm4TlvDq8ikWAM",
    "name": "Support Voice - Calm"
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "voice_id": "21m00Tcm4TlvDq8ikWAM"
  }
  ```
</ResponseExample>
