List TTS Models
curl --request GET \
--url https://api.bland.ai/v2/tts/models \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/tts/models"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/tts/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bland.ai/v2/tts/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v2/tts/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bland.ai/v2/tts/models")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/tts/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"models": [
{
"id": "btts-3",
"encodings": ["pcm_s16le", "mulaw"],
"sample_rates": [8000, 16000, 24000, 44100, 48000],
"containers": ["raw", "wav"],
"controls": {
"expressiveness": { "min": 0, "max": 1 },
"stability": { "min": 0, "max": 1 }
}
},
{
"id": "btts-2",
"encodings": ["pcm_s16le", "mulaw"],
"sample_rates": [8000, 16000, 24000, 44100, 48000],
"containers": ["raw", "wav"],
"controls": {
"expressiveness": { "min": 0, "max": 1 },
"stability": { "min": 0, "max": 1 }
}
}
]
}
{
"error": {
"code": "not_found",
"message": "Unknown model: btts-9"
}
}
Speech Generation
List TTS Models
List what each TTS model supports.
GET
/
v2
/
tts
/
models
List TTS Models
curl --request GET \
--url https://api.bland.ai/v2/tts/models \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/tts/models"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/tts/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bland.ai/v2/tts/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bland.ai/v2/tts/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bland.ai/v2/tts/models")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/tts/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"models": [
{
"id": "btts-3",
"encodings": ["pcm_s16le", "mulaw"],
"sample_rates": [8000, 16000, 24000, 44100, 48000],
"containers": ["raw", "wav"],
"controls": {
"expressiveness": { "min": 0, "max": 1 },
"stability": { "min": 0, "max": 1 }
}
},
{
"id": "btts-2",
"encodings": ["pcm_s16le", "mulaw"],
"sample_rates": [8000, 16000, 24000, 44100, 48000],
"containers": ["raw", "wav"],
"controls": {
"expressiveness": { "min": 0, "max": 1 },
"stability": { "min": 0, "max": 1 }
}
}
]
}
{
"error": {
"code": "not_found",
"message": "Unknown model: btts-9"
}
}
Overview
Lists the encodings, sample rates, containers, and controls each model supports. Use it to build a picker, validate a request before sending it, or check what a new model added. You do not choose a model — the voice you pass decides it. It comes back in thex-model header on Synthesize Speech.
For one model, use GET /v2/tts/models/:id.
Prefer
btts-3 or newer. expressiveness and stability are calibrated for it,
and 48 kHz is the rate it renders natively. btts-2 is listed because it still
synthesizes, but the controls are not tuned for it.Headers
string
required
Your API key.
Response
array
Array of model manifests.
Show Model fields
Show Model fields
string
Model identifier, for example
btts-3. Same value as the x-model header.string[]
Supported audio codecs. Pass one as
audio.encoding.number[]
Supported PCM sample rates in Hz.
mulaw is fixed at 8000 regardless of this list.string[]
Supported byte framings (
raw, wav).object
Supported voice controls and their allowed ranges. Each entry is an object with
min and max.{
"models": [
{
"id": "btts-3",
"encodings": ["pcm_s16le", "mulaw"],
"sample_rates": [8000, 16000, 24000, 44100, 48000],
"containers": ["raw", "wav"],
"controls": {
"expressiveness": { "min": 0, "max": 1 },
"stability": { "min": 0, "max": 1 }
}
},
{
"id": "btts-2",
"encodings": ["pcm_s16le", "mulaw"],
"sample_rates": [8000, 16000, 24000, 44100, 48000],
"containers": ["raw", "wav"],
"controls": {
"expressiveness": { "min": 0, "max": 1 },
"stability": { "min": 0, "max": 1 }
}
}
]
}
{
"error": {
"code": "not_found",
"message": "Unknown model: btts-9"
}
}
Error codes
| Code | HTTP | Meaning |
|---|---|---|
not_found | 404 | GET /v2/tts/models/:id was called with an unknown model ID. |
Docs for agents: llms.txt
Was this page helpful?
⌘I