allmodels.ioDocs
API ReferenceElevenLabs SDK

ElevenLabs SDK-compatible TTS (convert)

Generates speech with `client.textToSpeech.convert(...)`. It accepts the same request and returns the same streaming audio response as the `/stream` endpoint. Use `provider_options` for provider-specific settings. You can also pass supported options directly as query parameters. If both forms set the same option, `provider_options[<name>]=<value>` takes precedence. Recognized enum and boolean option values are case-insensitive and are normalized to each provider's wire spelling; free-form values such as prompts, keyterms, and voice IDs retain their original case.

POST/el/v1/text-to-speech/{voice_id}

Generates speech with client.textToSpeech.convert(...). It accepts the same request and returns the same streaming audio response as the /stream endpoint.

Use provider_options for provider-specific settings. You can also pass supported options directly as query parameters. If both forms set the same option, provider_options[<name>]=<value> takes precedence. Recognized enum and boolean option values are case-insensitive and are normalized to each provider's wire spelling; free-form values such as prompts, keyterms, and voice IDs retain their original case.

Authorization

xi-api-key<token>

Tenant key (ElevenLabs SDK convention).

In: header

Path Parameters

voice_id*string

Provider voice id (path segment). For Grok TTS, eve is the default voice.

Query Parameters

provider_order?array<string>

Comma-separated or repeated provider IDs in preferred order. Providers not listed remain eligible.

provider_only?array<string>

Comma-separated or repeated provider IDs. Only these providers may serve the request.

provider_ignore?array<string>

Comma-separated or repeated provider IDs that must not serve the request.

allow_fallbacks?boolean

Set to false to prevent fallback to another provider. Automatic provider retries are not currently supported.

output_format?string

Output format (case-insensitive), such as mp3_44100_128 or pcm_16000. Formats the selected provider cannot emit natively are served by transcoding its best native stream.

enable_logging?string
optimize_streaming_latency?string
provider_options?|||||||||||

Provider-specific options in bracket notation, such as provider_options[encoding]=linear16. You can also pass supported options directly as query parameters. If both forms set the same option, the bracketed value takes precedence.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Text-to-speech request body.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

Client
Language
import { writeFile } from "node:fs/promises";const response = await fetch("https://api.allmodels.io/el/v1/text-to-speech/pNInz6obpgDQGcFmaJgB", {  method: "POST",  headers: { ...{ Authorization: `Bearer ${process.env.ALLMODELS_API_KEY}` }, "Content-Type": "application/json" },  body: JSON.stringify({  "text": "Hello from AllModels",  "model_id": "elevenlabs/eleven-turbo-v2-5",  "output_format": "mp3_44100_128"})});if (!response.ok) throw new Error(`AllModels request failed: ${response.status}`);await writeFile("speech.mp3", Buffer.from(await response.arrayBuffer()));
"string"

{  "detail": {    "message": "invalid json body",    "status": "invalid_json"  }}

{  "error": "missing_api_key"}

{  "detail": {    "message": "this organization has insufficient prepaid balance",    "status": "insufficient_balance"  }}

{  "error": "tenant_disabled"}

{  "detail": {    "message": "text exceeds 2000 characters",    "status": "tts_text_too_large"  }}

{  "detail": {    "loc": [      "body",      "text"    ],    "msg": "field required",    "type": "value_error.missing"  }}

{  "detail": {    "message": "upstream text-to-speech request failed",    "status": "upstream_error"  }}

ElevenLabs SDK-compatible TTS (HTTP streaming) POST

Generates speech with `client.textToSpeech.stream(...)` and returns audio as it is produced. The response `Content-Type` follows `output_format`: `mp3_*` → `audio/mpeg`, `pcm_*` → `audio/L16; rate=N`, otherwise `application/octet-stream`. Use `provider_options` for provider-specific settings. You can also pass supported options directly as query parameters. If both forms set the same option, `provider_options[<name>]=<value>` takes precedence. Recognized enum and boolean option values are case-insensitive and are normalized to each provider's wire spelling; free-form values such as prompts, keyterms, and voice IDs retain their original case.

ElevenLabs SDK-compatible streaming-input TTS (WebSocket) GET

Streams text into TTS with the ElevenLabs WebSocket protocol. Use it to start generating audio before all of the text is available. The request must include `Upgrade: websocket`. **Client → server** frames (JSON): - `{ "text": " ", "voice_settings": { "speed": 1.0 }, "generation_config": {...} }` — optional init frame (single space). See the `VoiceSettings` schema for the supported keys; `speed` is honored across providers. - `{ "text": "Hello ", "try_trigger_generation": true }` — append text. - `{ "text": "world.", "flush": true }` — append and force generation. - `{ "text": "", "flush": true }` — flush without closing. - `{ "text": "" }` — close the stream. **Server → client** frames (JSON): - `{ "audio": "<base64 bytes>" }` — one frame per audio chunk. - `{ "audio": null, "error": "<code>", "code": "<status>" }` — error. Text is buffered by default to improve prosody across message boundaries. Two ElevenLabs-only options control buffering: - `auto_mode` (query param) — disables buffering; audio is generated per message rather than across the buffer. - `generation_config.chunk_length_schedule` (init-frame field) — tunes the buffer size, e.g. the init frame `{ "text": " ", "generation_config": { "chunk_length_schedule": [50] } }`. The `try_trigger_generation` and `flush` fields are supported by ElevenLabs, Deepgram, Grok, and Fish. MiniMax does not support mid-stream flushing. Deepgram WebSocket TTS supports only `pcm_*` and `ulaw_*`. Requesting `mp3_*` returns `400 invalid_output_format`. Use `provider_options` for provider-specific settings. You can also pass supported options directly as query parameters. If both forms set the same option, `provider_options[<name>]=<value>` takes precedence. Recognized enum and boolean option values are case-insensitive and are normalized to each provider's wire spelling; free-form values such as prompts, keyterms, and voice IDs retain their original case. The message-level protocol is documented at [the realtime WebSocket reference](/realtime-reference) (AsyncAPI spec: [/asyncapi.yaml](/asyncapi.yaml)).