<!-- BusyBot node reference — https://busybot.net/tools/elevenlabs/ -->

> Node: ElevenLabs (`elevenlabs`) · Action (binary) · v1
> Category: Utility · Credentials: ElevenLabs API (`elevenlabsApi`)
> Updated: 2026-08-16

# ElevenLabs

> Generate speech, transcribe audio, clone voices using ElevenLabs

## Overview

The ElevenLabs tool provides text-to-speech, speech-to-text, speech-to-speech, and voice management capabilities via the ElevenLabs API. Text-to-speech converts text to audio using a selected voice and model, returning audio binary data. Speech-to-text transcribes audio files. Speech-to-speech converts input audio to output audio using a different voice. Voice operations allow listing, getting, cloning, and deleting voices. Authentication uses the xi-api-key header.

**Category:** Utility  
**Tool Name:** `elevenlabs`  
**Version:** 1

**Appearance:** Icon: `lucide-Headphones` | Color: `#000000`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **ElevenLabs API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/elevenlabs-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Speech | `speech` |
| Voice | `voice` |

### Operations

The operation list changes with the resource: `speech` offers Text to Speech, Speech to Text and Speech to Speech, and `voice` offers Get, Get Many, Create Clone and Delete.

| Operation | Value | Description |
|-----------|-------|-------------|
| Text to Speech | `textToSpeech` | Convert text to spoken audio using a selected voice |
| Speech to Text | `speechToText` | Transcribe audio to text |
| Speech to Speech | `speechToSpeech` | Convert speech from one voice to another |
| Get | `get` | Get details of a specific voice |
| Get Many | `getAll` | List all available voices |
| Create Clone | `createClone` | Clone a voice from audio samples |
| Delete | `delete` | Delete a voice |

### Parameters

`Get Many` takes no parameters of its own — see All Operations.

#### Speech: Text to Speech

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Voice ID | `string` | Yes | — | The ID of the voice to use. Find voice IDs via the Get Many operation or ElevenLabs dashboard. Supports expressions. |
| Text | `string` | Yes | — | The text to convert to speech. Supports expressions. |
| Model | `options` | No | `eleven_multilingual_v2` | The ElevenLabs model to use for synthesis or conversion. |
| | | | | Options: `eleven_v3`, `eleven_multilingual_v2`, `eleven_flash_v2_5`, `eleven_flash_v2`, `eleven_turbo_v2_5`, `eleven_turbo_v2`, `eleven_multilingual_v1`, `eleven_monolingual_v1` (Eleven English v1), `eleven_english_sts_v2` |
| Output Format | `options` | No | `mp3_44100_128` | The audio output format and quality. |
| | | | | Options: `mp3_22050_32`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `ulaw_8000` |
| Output Binary Property | `string` | No | `data` | Name of the binary property to store the output audio file. |
| Output Filename | `string` | No | `speech.mp3` | Filename for the output audio file. |
| Voice Settings | `collection` | No | `{}` | Fine-tune voice generation parameters. |
| — Stability | `number` | No | `0.5` | Voice stability (0-1). Higher values produce more consistent speech, lower values are more expressive. |
| — Similarity Boost | `number` | No | `0.75` | Similarity to original voice (0-1). Higher values make the voice more similar to the original. |
| — Style | `number` | No | `0` | Speaking style exaggeration (0-1). Higher values amplify the style of the original speaker. Recommended 0 for most use cases. |
| — Use Speaker Boost | `boolean` | No | `true` | Boost similarity to the original speaker. Increases latency slightly. |
| — Speed | `number` | No | `1` | Speech speed multiplier (0.25-4.0). 1.0 is normal speed. |

#### Speech: Speech to Text

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Input Binary Property | `string` | No | `data` | Name of the binary property containing the input audio file. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| Speech to Text Options | `collection` | No | `{}` | Additional options for speech-to-text transcription. |
| — Language Code | `string` | No | — | BCP-47 language code (e.g. "en", "es", "fr"). Leave empty for auto-detection. |
| — Diarize | `boolean` | No | `false` | Enable speaker diarization to identify different speakers in the audio. |
| — Number of Speakers | `number` | No | `0` | Expected number of speakers when diarization is enabled. Set to 0 for auto-detection. |
| — Tag Audio Events | `boolean` | No | `false` | Tag audio events like music, laughter, applause in the transcription. |

#### Speech: Speech to Speech

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Voice ID | `string` | Yes | — | The ID of the voice to use. Find voice IDs via the Get Many operation or ElevenLabs dashboard. Supports expressions. |
| Input Binary Property | `string` | No | `data` | Name of the binary property containing the input audio file. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| Model | `options` | No | `eleven_multilingual_v2` | The ElevenLabs model to use for synthesis or conversion. |
| | | | | Options: `eleven_v3`, `eleven_multilingual_v2`, `eleven_flash_v2_5`, `eleven_flash_v2`, `eleven_turbo_v2_5`, `eleven_turbo_v2`, `eleven_multilingual_v1`, `eleven_monolingual_v1` (Eleven English v1), `eleven_english_sts_v2` |
| Output Format | `options` | No | `mp3_44100_128` | The audio output format and quality. |
| | | | | Options: `mp3_22050_32`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `ulaw_8000` |
| Output Binary Property | `string` | No | `data` | Name of the binary property to store the output audio file. |
| Output Filename | `string` | No | `speech.mp3` | Filename for the output audio file. |
| Voice Settings | `collection` | No | `{}` | Fine-tune voice generation parameters. |
| — Stability | `number` | No | `0.5` | Voice stability (0-1). Higher values produce more consistent speech, lower values are more expressive. |
| — Similarity Boost | `number` | No | `0.75` | Similarity to original voice (0-1). Higher values make the voice more similar to the original. |
| — Style | `number` | No | `0` | Speaking style exaggeration (0-1). Higher values amplify the style of the original speaker. Recommended 0 for most use cases. |
| — Use Speaker Boost | `boolean` | No | `true` | Boost similarity to the original speaker. Increases latency slightly. |
| — Speed | `number` | No | `1` | Speech speed multiplier (0.25-4.0). 1.0 is normal speed. |

#### Voice: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Voice ID | `string` | Yes | — | The ID of the voice to use. Find voice IDs via the Get Many operation or ElevenLabs dashboard. Supports expressions. |

#### Voice: Create Clone

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Input Binary Property | `string` | No | `data` | Name of the binary property containing the input audio file. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| Clone Name | `string` | Yes | — | Name for the cloned voice. Supports expressions. |
| Clone Description | `string` | No | — | Description for the cloned voice. |
| Clone Labels | `string` | No | — | Comma-separated key=value labels for the cloned voice (e.g. "accent=american,age=young"). |

#### Voice: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Voice ID | `string` | Yes | — | The ID of the voice to use. Find voice IDs via the Get Many operation or ElevenLabs dashboard. Supports expressions. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Keep low to respect ElevenLabs rate limits. |

## Output Data

Every operation except Get Many produces one output item per input item, and the ElevenLabs response is merged into the item JSON at the top level — its fields sit alongside the fields already on the item, and any field of the same name is overwritten. Binary data from the input item is forwarded; Text to Speech and Speech to Speech additionally attach the generated audio as a new binary property.

| Operation | What lands on the item |
|-----------|------------------------|
| Text to Speech | `voiceId`, `modelId`, `outputFormat` and `textLength` (the character count sent to ElevenLabs), plus the generated audio stored under the Output Binary Property. |
| Speech to Text | The ElevenLabs transcription response, including the transcribed text and — when you enable them — speaker labels and tagged audio events. |
| Speech to Speech | `voiceId`, `modelId` and `outputFormat`, plus the converted audio stored under the Output Binary Property. |
| Get | The voice record for that ID. |
| Get Many | **One output item per voice** — each carries a single voice record, so a downstream node processes voices one at a time with no Split Out needed. When the account has no voices, a single item is emitted carrying an empty `voices` array. |
| Create Clone | The newly created voice record returned by ElevenLabs. |
| Delete | The API's delete response. When ElevenLabs returns no body, the item carries `deleted: true` and `voiceId` instead. |

Reference the result downstream by expression, e.g. `{{ $json.voice_id }}` after Get Many or `{{ $json.textLength }}` after Text to Speech.

## Usage Examples

- Convert text to speech using a specific voice
- Transcribe an audio file to text
- Convert speech from one voice to another
- Clone a voice from audio samples
- List all available voices
- Delete a cloned voice

## Example Configuration

Text to speech with every option set:

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "voiceId": "21m00Tcm4TlvDq8ikWAM",
  "text": "Welcome to our platform. How can I help you today?",
  "modelId": "eleven_multilingual_v2",
  "outputFormat": "mp3_44100_128",
  "outputBinaryPropertyName": "outputAudio",
  "outputFilename": "welcome.mp3",
  "voiceSettings": {
    "stability": 0.5,
    "similarity_boost": 0.75,
    "style": 0,
    "use_speaker_boost": true,
    "speed": 1
  },
  "maxConcurrency": 5
}
```

Speech to text with diarization:

```json
{
  "resource": "speech",
  "operation": "speechToText",
  "binaryPropertyName": "inputAudio",
  "speechToTextOptions": {
    "language_code": "en",
    "diarize": true,
    "num_speakers": 2,
    "tag_audio_events": true
  },
  "maxConcurrency": 3
}
```

Speech to speech (voice conversion):

```json
{
  "resource": "speech",
  "operation": "speechToSpeech",
  "voiceId": "AZnzlk1XvdvUeBnXmlld",
  "binaryPropertyName": "inputAudio",
  "modelId": "eleven_english_sts_v2",
  "outputFormat": "mp3_44100_96",
  "outputBinaryPropertyName": "convertedAudio",
  "outputFilename": "converted_speech.mp3",
  "voiceSettings": {
    "stability": 0.6,
    "similarity_boost": 0.8,
    "style": 0.2,
    "use_speaker_boost": true,
    "speed": 1
  },
  "maxConcurrency": 2
}
```

Get a voice by ID:

```json
{
  "resource": "voice",
  "operation": "get",
  "voiceId": "21m00Tcm4TlvDq8ikWAM"
}
```

List all voices:

```json
{
  "resource": "voice",
  "operation": "getAll"
}
```

Clone a voice:

```json
{
  "resource": "voice",
  "operation": "createClone",
  "binaryPropertyName": "voiceSampleAudio",
  "cloneName": "Studio Narrator",
  "cloneDescription": "Professional narrator cloned from studio recording sessions.",
  "cloneLabels": "accent=american,style=narrator,age=adult"
}
```

Delete a voice:

```json
{
  "resource": "voice",
  "operation": "delete",
  "voiceId": "21m00Tcm4TlvDq8ikWAM"
}
```

### Batch text-to-speech, respecting rate limits

When processing many text items, lower `maxConcurrency` to avoid hitting ElevenLabs API rate limits:

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "voiceId": "21m00Tcm4TlvDq8ikWAM",
  "text": "{{ $json.text }}",
  "modelId": "eleven_turbo_v2_5",
  "outputFormat": "mp3_44100_64",
  "outputBinaryPropertyName": "audio",
  "outputFilename": "output.mp3",
  "voiceSettings": {
    "stability": 0.5,
    "similarity_boost": 0.75,
    "style": 0,
    "use_speaker_boost": true,
    "speed": 1
  },
  "maxConcurrency": 2
}
```

Use `eleven_turbo_v2_5` for faster, lower-latency batch jobs; use `eleven_multilingual_v2` for maximum quality.

### Transcribe a meeting recording with speaker labels

```json
{
  "resource": "speech",
  "operation": "speechToText",
  "binaryPropertyName": "meetingRecording",
  "speechToTextOptions": {
    "language_code": "en",
    "diarize": true,
    "num_speakers": 4,
    "tag_audio_events": false
  }
}
```

### Discover available voices, then generate speech

Step 1 — list voices:

```json
{
  "resource": "voice",
  "operation": "getAll"
}
```

Step 2 — use a discovered `voiceId` in text-to-speech:

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "voiceId": "{{ $json.voice_id }}",
  "text": "This is generated using a discovered voice.",
  "modelId": "eleven_multilingual_v2",
  "outputFormat": "mp3_44100_128",
  "outputBinaryPropertyName": "generatedAudio",
  "outputFilename": "dynamic_voice.mp3",
  "voiceSettings": {
    "stability": 0.5,
    "similarity_boost": 0.75,
    "style": 0,
    "use_speaker_boost": true,
    "speed": 1
  }
}
```

### Clone a voice from an audio sample

Requires a preceding node to load the audio file into a binary property (e.g., `"voiceSample"`):

```json
{
  "resource": "voice",
  "operation": "createClone",
  "binaryPropertyName": "voiceSample",
  "cloneName": "Customer Support Agent",
  "cloneDescription": "Voice clone for automated customer support responses.",
  "cloneLabels": "department=support,language=en,tone=professional"
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

The ElevenLabs tool converts text to speech, transcribes audio, clones voices, and transforms speech between voices using the ElevenLabs API. Use it when a workflow needs to generate voiceovers, transcribe recorded audio files, or replace a speaker voice in existing audio. Outputs audio binary data stored via the binary store for speech operations, or transcription text for speech-to-text, delivered through the main or error output.

### Key Warnings

- **`voiceSettings` and `speechToTextOptions` are `collection` types.** Their fields go directly in a flat object — never wrap in `_default` or an array.
- **`operation` options are mutually exclusive by `resource`.** Setting `resource: "voice"` and `operation: "textToSpeech"` is invalid — `textToSpeech` only exists under `resource: "speech"`.
- **`binaryPropertyName` is an input property** (audio going *into* the node). **`outputBinaryPropertyName` is an output property** (audio coming *out* of the node). They serve opposite directions and must never be confused.
- **`voiceId` is not used for `speechToText` or `createClone`** — those operations work on audio input, not a pre-selected voice.
- **`getAll` requires no additional parameters** beyond `resource` and `operation`.