allmodels.ioDocs
API ReferenceElevenLabs SDK

ElevenLabs SDK-compatible STT (file upload)

POST/el/v1/speech-to-text

Transcribes an uploaded audio file with client.speechToText.convert(...). Supported formats are WAV, MP3, FLAC, MP4/M4A, OGG, and WebM. Unsupported or unreadable files return 422 indeterminate_audio_duration.

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

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.

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

multipart/form-data

TypeScript Definitions

Use the request body type in TypeScript.

Audio file and transcription options.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

Client
Language
import { open } from "node:fs/promises";const file = await open("call.wav");const form = new FormData();form.set("file", new Blob([await file.readFile()], { type: "audio/wav" }), "call.wav");form.set("model_id", "deepgram/nova-3");form.set("timestamps_granularity", "word");const response = await fetch("https://api.allmodels.io/el/v1/speech-to-text", {  method: "POST",  headers: { Authorization: `Bearer ${process.env.ALLMODELS_API_KEY}` },  body: form});if (!response.ok) throw new Error(`AllModels request failed: ${response.status}`);console.log(await response.json());
{  "language_code": "en",  "language_probability": 0.98,  "text": "Hello from AllModels.",  "words": [    {      "text": "Hello",      "start": 0,      "end": 0.4,      "type": "word"    }  ]}

{  "detail": {    "message": "invalid multipart body",    "status": "invalid_multipart"  }}

{  "error": "missing_api_key"}

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

{  "error": "tenant_disabled"}

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

{  "detail": {    "message": "provider 'example-provider' does not support file transcription",    "status": "transcription_not_supported",    "provider": "example-provider"  }}
{  "detail": {    "message": "upstream text-to-speech request failed",    "status": "upstream_error"  }}