Providers
Browse providers and choose how your requests are routed.
List providers
/v1/providersNativeReturns each provider's defaults and supported TTS and STT models.
Fetch providers in JavaScript
const response = await fetch("https://api.allmodels.io/v1/providers");
const catalogue = await response.json();
const provider = catalogue.providers.fal;
console.log(provider.defaults);
console.log(provider.tts);The response is keyed by provider ID. Each provider includes its default model and voice, plus the TTS and STT models it supports.
Provider response structure
{
"providers": {
"cartesia": {
"defaults": {
"tts": {
"model": "sonic-3.5",
"voice": "694f9389-aac1-45b6-b726-9d9369183238"
},
"stt": {
"model": "ink-2",
"synchronousModel": "ink-whisper"
}
},
"tts": [
{
"id": "sonic-3.5",
"canonical": "cartesia/sonic-3-5",
"aliases": [],
"streaming": true,
"synchronous": true,
"pricing": {
"currency": "usd",
"unit": "1000 characters",
"unitPrice": "0.0394359"
}
}
],
"stt": [
{
"id": "ink-2",
"canonical": "cartesia/ink-2",
"aliases": [],
"streaming": true,
"synchronous": false,
"batch": false
}
]
}
}
}| Field | Meaning |
|---|---|
providers | Available providers, keyed by provider ID. |
defaults | Values used when a request omits a model or voice. |
defaults.tts.model | The provider's default TTS model. |
defaults.tts.voice | The provider's default voice, when it has one. |
defaults.stt.model | The provider's default streaming STT model. |
defaults.stt.synchronousModel | The default synchronous file-transcription model when it differs from the streaming model. |
tts / stt | Models grouped by capability. |
id | The model ID used by the provider. |
canonical | The {author}/{modelName} slug accepted by AllModels. |
aliases | Other accepted names for the model. |
pricing | Resolved customer price for the provider-model binding. currency is always "usd"; unit is "1000 characters" for TTS or "minute" for STT; unitPrice is a decimal string rounded to at most 6 significant digits (half up); optional requestPrice is a fixed per-request fee, present only when the binding carries one. Absent when the binding is unpriced. |
streaming / synchronous | Supported TTS request types. |
streaming / synchronous | Supported STT request types. synchronous is a single blocking file-transcription request, including providers that queue it internally. |
batch | Orthogonal STT flag: the provider processes the synchronous file request via an internal queue. Discovery metadata only — not a separate request type, and not exclusive with synchronous. |
Pricing estimates
Billing granularity is unchanged: TTS usage is metered per character, and STT usage is metered per audio second, with audio duration rounded up to whole seconds. The quoted units and rounding are display-only; billing still meters exact usage at the exact catalog rates. Estimate cost as unitPrice / 1000 × characters for TTS or unitPrice / 60 × ceil(seconds) for STT, then add requestPrice once per request when present. Estimates may differ from billed amounts because of sub-credit rounding.
Provider Selection
A model may be available from more than one provider. Use provider preferences to choose or prioritize the providers that serve a request. The examples below use Fal to serve elevenlabs/eleven-turbo-v2-5.
Use GET /v1/providers to browse providers, or GET /v1/models to see which providers support a particular model.
| Option | Meaning |
|---|---|
only | Keep only the listed providers. Use this to pin a request to one provider. |
ignore | Remove the listed providers from consideration. |
order | Move the listed providers to the front in the order supplied, without removing other candidates. |
allow_fallbacks | When false, use only the first matching provider. Automatic retries with another provider are not currently supported. |
Fal supports the original ElevenLabs voice IDs for ElevenLabs TTS models. Use provider to choose a provider and provider_options for provider-specific settings.
import { writeFile } from "node:fs/promises";const response = await fetch("https://api.allmodels.io/oai/audio/speech", { method: "POST", headers: { Authorization: `Bearer ${process.env.ALLMODELS_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ "model": "elevenlabs/eleven-turbo-v2-5", "voice": "pNInz6obpgDQGcFmaJgB", "input": "Route this through Fal", "response_format": "mp3", "provider": { "only": [ "fal" ] }})});if (!response.ok) throw new Error(`AllModels request failed: ${response.status}`);await writeFile("speech.mp3", Buffer.from(await response.arrayBuffer()));