Models
List Voice Models (v1)
List the voice model generations used for cloning and the v1 voice catalog.
GET
/
v1
/
models
List Voice Models (v1)
curl --request GET \
--url https://api.bland.ai/v1/modelsimport requests
url = "https://api.bland.ai/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.bland.ai/v1/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/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/v1/models"
req, _ := http.NewRequest("GET", url, nil)
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/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"models": [
{
"model_id": "BTTS_V2",
"display_name": "V2",
"description": "Previous-generation TTS with multilingual output and instant single-sample cloning. Prefer V3 where its language support fits.",
"sample_rates": [8000, 16000, 24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en", "de", "es", "fr", "hi", "it", "ja", "ko", "nl", "pl", "pt", "ru", "tr", "zh", "ar", "id", "sv"]
},
{
"model_id": "BTTS_V3",
"display_name": "V3",
"description": "Current-generation TTS. Bland's recommended model for new voices and integrations.",
"sample_rates": [24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en"],
"is_recommended": true
},
{
"model_id": "BTTS",
"display_name": "V1",
"description": "Legacy English-only TTS. Retained for backward compatibility. Prefer the recommended model for new integrations.",
"sample_rates": [8000, 16000, 24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en"]
}
]
}
Overview
Returns the voice model generations (BTTS_V3, BTTS_V2, BTTS) with their clone eligibility and language list. Use it to map a voice’s service field to its generation, or to check which generations support Clone Voice.
Building on
/v2/tts, /v2/tts/ws, or /v2/audio/speech? Use List TTS Models instead. It returns the encodings, sample rates, containers, and controls those endpoints accept. The sample_rates and max_characters fields here describe the legacy v1 speak endpoints, not the v2 request limits.Headers
string
Optional. This endpoint does not require authentication.
Response
array
Array of available models.
Show Model fields
Show Model fields
string
Engine identifier. Use this to map a voice’s
service field back to its model.string
Human-readable name suitable for UI (for example
V1, V2).string
Short description of the model’s positioning.
number[]
Sample rates the legacy v1 speak endpoints support for this model.
number
Maximum characters per synthesis request supported by the model.
boolean
Whether Clone Voice can produce voices on this model.
string[]
Language codes supported for synthesis.
boolean
true for the model Bland currently recommends for new integrations.{
"models": [
{
"model_id": "BTTS_V2",
"display_name": "V2",
"description": "Previous-generation TTS with multilingual output and instant single-sample cloning. Prefer V3 where its language support fits.",
"sample_rates": [8000, 16000, 24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en", "de", "es", "fr", "hi", "it", "ja", "ko", "nl", "pl", "pt", "ru", "tr", "zh", "ar", "id", "sv"]
},
{
"model_id": "BTTS_V3",
"display_name": "V3",
"description": "Current-generation TTS. Bland's recommended model for new voices and integrations.",
"sample_rates": [24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en"],
"is_recommended": true
},
{
"model_id": "BTTS",
"display_name": "V1",
"description": "Legacy English-only TTS. Retained for backward compatibility. Prefer the recommended model for new integrations.",
"sample_rates": [8000, 16000, 24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en"]
}
]
}
Docs for agents: llms.txt
Was this page helpful?
⌘I
List Voice Models (v1)
curl --request GET \
--url https://api.bland.ai/v1/modelsimport requests
url = "https://api.bland.ai/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.bland.ai/v1/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/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/v1/models"
req, _ := http.NewRequest("GET", url, nil)
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/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"models": [
{
"model_id": "BTTS_V2",
"display_name": "V2",
"description": "Previous-generation TTS with multilingual output and instant single-sample cloning. Prefer V3 where its language support fits.",
"sample_rates": [8000, 16000, 24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en", "de", "es", "fr", "hi", "it", "ja", "ko", "nl", "pl", "pt", "ru", "tr", "zh", "ar", "id", "sv"]
},
{
"model_id": "BTTS_V3",
"display_name": "V3",
"description": "Current-generation TTS. Bland's recommended model for new voices and integrations.",
"sample_rates": [24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en"],
"is_recommended": true
},
{
"model_id": "BTTS",
"display_name": "V1",
"description": "Legacy English-only TTS. Retained for backward compatibility. Prefer the recommended model for new integrations.",
"sample_rates": [8000, 16000, 24000, 44100],
"max_characters": 1000,
"can_clone": true,
"languages": ["en"]
}
]
}