Skip to main content

ElevenLabs STT plugin guide

How to use the ElevenLabs STT plugin for LiveKit Agents.

ElevenLabs is retired from LiveKit Inference

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.

Available inPython
|
Node.js

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 elevenlabs
session = 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_v1

The 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: False

When 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.