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

# Custom TTS Integration

> Bring your own ElevenLabs, Fish Audio, or Cartesia voice into LiveAvatar FULL Mode

Integrate your own third-party TTS API keys and voice configurations with LiveAvatar FULL Mode sessions. Three providers are supported:

| Provider   | `secret_type`        |
| ---------- | -------------------- |
| ElevenLabs | `ELEVENLABS_API_KEY` |
| Fish Audio | `FISH_API_KEY`       |
| Cartesia   | `CARTESIA_API_KEY`   |

<Warning>
  Custom ElevenLabs TTS is not available on ElevenLabs free-tier API keys. ElevenLabs blocks third-party usage on free plans. You must have a paid ElevenLabs subscription to use ElevenLabs voices.
</Warning>

## When to use this

* You have existing voice configurations with one of these providers
* You need enhanced control over voice selection and settings

## Setup

### Step 1: Register your provider API key

Store the API key for your provider. Set `secret_type` to the value for that provider from the table above.

```bash theme={null}
curl -X POST https://api.liveavatar.com/v1/secrets \
  -H "X-API-KEY: <YOUR_API_KEY>" \
  -H "content-type: application/json" \
  -d '{
    "secret_type": "CARTESIA_API_KEY",
    "secret_value": "<your_provider_api_key>",
    "secret_name": "My Cartesia Key"
  }'
```

Returns a `secret_id`.

### Step 2: Import your voice

Bind a provider voice to your stored secret. `provider_voice_id` is the voice ID from the provider; `name` is optional.

```bash theme={null}
curl -X POST https://api.liveavatar.com/v1/voices/third_party \
  -H "X-API-KEY: <YOUR_API_KEY>" \
  -H "content-type: application/json" \
  -d '{
    "secret_id": "<secret_id>",
    "provider_voice_id": "<provider_voice_id>",
    "name": "My Custom Voice"
  }'
```

Find your voice IDs through the provider's dashboard or API. The imported voice will appear in your LiveAvatar voice listing.

### Step 3: Start a session with your voice

Use the `voice_id` from the import when creating your session token:

```json theme={null}
{
  "mode": "FULL",
  "avatar_id": "<avatar_id>",
  "avatar_persona": {
    "voice_id": "<your_imported_voice_id>",
    "context_id": "<context_id>"
  }
}
```

LiveAvatar uses your provider credentials for audio generation during the session.

<Warning>
  The voice becomes invalid if the underlying provider voice is deleted or the associated secret is removed.
</Warning>
