Bring-your-own-key voice providerAll plans except Novice

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 ZenModeDirectionEndpoint
A voice sample, to create a cloned voiceZenMode → ElevenLabshttps://api.elevenlabs.io/v1/voices/add
Text to be spoken, against a cloned voice idZenMode → ElevenLabshttps://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

  1. Create an API key in your ElevenLabs account.
  2. In ZenMode, open Settings and go to the voice profile section.
  3. Choose ElevenLabs as the provider and paste the key. It is encrypted before it is stored.
  4. Add a voice — the sample you record or upload is what ZenMode sends to /v1/voices/add to create the clone.
  5. 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.

More voice integrations