LiveKit Inference no longer serves ElevenLabs models. The retirement took effect on August 31, 2026. This plugin still works with your own ElevenLabs account. To stay on LiveKit Inference, switch to one of the other STT providers.
Overview
This plugin allows you to use ElevenLabs as an STT provider for your voice agents.
Installation
Install the plugin:
uv add "livekit-agents[elevenlabs]~=1.5"
pnpm add @livekit/agents-plugin-elevenlabs@1.x
Authentication
The ElevenLabs plugin requires an ElevenLabs API key .
Set ELEVEN_API_KEY in your .env file.
Usage
Use ElevenLabs STT in an AgentSession or as a standalone transcription service. For example, you can use this STT in the Voice AI quickstart.
from livekit.plugins import elevenlabssession = AgentSession(stt=elevenlabs.STT(model="scribe_v2_realtime",),# ... llm, tts, etc.)
import * as elevenlabs from '@livekit/agents-plugin-elevenlabs';const session = new voice.AgentSession({stt: new elevenlabs.STT({model: "scribe_v2_realtime",}),// ... llm, tts, etc.});
Parameters
This section describes some of the available parameters. See the plugin reference links in the Additional resources section for more details.
modelstringDefault: scribe_v1The ElevenLabs model to use for speech recognition. Set this to scribe_v2_realtime for streaming transcription. The default scribe_v1 model transcribes in batch mode.
keytermslist[str]A list of keywords or phrases to bias transcription toward, such as product names, technical terms, or other domain-specific vocabulary. Use this to improve recognition accuracy.
Supported for both Scribe v2 batch recognition and scribe_v2_realtime. Batch accepts up to 1000 keyterms of at most 50 characters each. Realtime accepts up to 50 keyterms of at most 20 characters each. Usage incurs additional costs from ElevenLabs. For details, see keyterms .
You can also set this at runtime with update_options(keyterms=[...]) (Python) or updateOptions({ keyterms: [...] }) (Node.js). On a realtime stream, changing it reconnects the WebSocket.
no_verbatimboolDefault: FalseWhen True, the model removes filler words, false starts, and disfluencies from the transcript, producing cleaner output. Supported for both Scribe v2 batch recognition and scribe_v2_realtime.
You can also set this at runtime with update_options(no_verbatim=...) (Python) or updateOptions({ noVerbatim: ... }) (Node.js). On a realtime stream, changing it reconnects the WebSocket.
Multilingual transcription
ElevenLabs Scribe 2 Realtime supports multilingual transcription for over 90 languages with automatic language detection.
Additional resources
The following resources provide more information about using ElevenLabs with LiveKit Agents.