ElevenLabs integration: your own key for cloned-voice audio
Paste your own ElevenLabs API key into ZenMode and it calls ElevenLabs to clone a voice and turn message text into audio.
Verified against the product on September 3, 2026 · Updated · Set up in /dashboard/settings
What this integration is
ElevenLabs is a bring-your-own-key voice provider. There is no OAuth here and nothing to install on
the ElevenLabs side: you paste your own ElevenLabs API key into ZenMode's settings, and ZenMode
calls the ElevenLabs API with it on your behalf. The key is stored AES-256-GCM encrypted in the
elevenlabs_api_key field, and ElevenLabs usage bills to your own ElevenLabs account.
ZenMode's voice layer recognises three provider values — builtin_fish, user_elevenlabs and
user_fish. Supplying an ElevenLabs key selects user_elevenlabs. It is available on every plan
except Novice, the no-AI entry tier; see pricing for the tiers.
What it sends
| What leaves ZenMode | Direction | Endpoint |
|---|---|---|
| A voice sample, to create a cloned voice | ZenMode → ElevenLabs | https://api.elevenlabs.io/v1/voices/add |
| Text to be spoken, against a cloned voice id | ZenMode → ElevenLabs | https://api.elevenlabs.io/v1/text-to-speech/{voiceId} |
Those are the two ElevenLabs calls in ZenMode's voice provider, and the direction is outbound only. ElevenLabs never writes back into ZenMode: there is no inbound webhook, no callback and no pull, so nothing you do inside the ElevenLabs dashboard reaches ZenMode on its own.
How to set it up
- Create an API key in your ElevenLabs account.
- In ZenMode, open Settings and go to the voice profile section.
- Choose ElevenLabs as the provider and paste the key. It is encrypted before it is stored.
- Add a voice — the sample you record or upload is what ZenMode sends to
/v1/voices/addto create the clone. - From then on, generating audio calls
/v1/text-to-speech/{voiceId}with that voice.
What ZenMode does with the audio afterwards is covered on the LinkedIn voice message page.
When it runs
On demand, and only then. Two moments exist on this rail: the clone call when you add a voice, and the text-to-speech call when audio is generated. There is no schedule, no polling, no nightly job and no inbound webhook — nothing happens on this connection in the background, and nothing runs if you never generate audio.
What it's useful for
If you already pay for ElevenLabs and have tuned a voice there, this reuses it rather than making you set one up somewhere else. If your procurement or data-handling rules say third-party AI processing has to sit on your own contract, your key means the usage and the invoice stay in your ElevenLabs account, not ZenMode's. And because the provider is a stored setting rather than a rebuild, you can move between ElevenLabs, your own Fish Audio key, and the built-in Fish Audio provider.
What it doesn't do (yet)
- No OAuth and no app to install. The key is the whole connection: rotate or revoke it at ElevenLabs and you have to paste the new one into Settings.
- One-way only. ElevenLabs cannot push anything into ZenMode, and there is no signed callback on this rail — unlike ZenMode's REST API webhooks.
- Not available on Novice, the $15 no-AI tier.
- This page makes no claim about how the audio sounds or how quickly it arrives. It is written from a code audit, which records which endpoints are called — not output quality or timing.
FAQ
Which plans can use ElevenLabs?
Every plan except Novice. Novice is the no-AI entry tier, so the voice providers are switched off there along with the other AI features.
Does it need my LinkedIn password?
No. ZenMode integrations never take LinkedIn credentials, and this one never touches LinkedIn at all — it is a call from ZenMode to ElevenLabs and back with an audio file.
Is it two-way?
No. It is outbound only: ZenMode calls ElevenLabs, ElevenLabs answers. Nothing is synced back, and ElevenLabs has no way to trigger anything inside ZenMode.