List Models (Public)
curl --request GET \
--url https://api.bland.ai/v2/modelsimport requests
url = "https://api.bland.ai/v2/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.bland.ai/v2/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/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/v2/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/v2/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/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{
"object": "list",
"data": [
{
"id": "btts-3",
"object": "model",
"created": 0,
"owned_by": "bland",
"name": "btts-3",
"modality": "text-to-speech",
"capabilities": {
"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",
"object": "model",
"created": 0,
"owned_by": "bland",
"name": "btts-2",
"modality": "text-to-speech",
"capabilities": {
"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": {
"message": "Failed to list models.",
"type": "api_error",
"param": null,
"code": "internal_error"
}
}
Models
List Models (Public)
List Bland’s TTS models in an OpenAI-compatible catalog. No API key required, so tooling can discover models before authenticating.
GET
/
v2
/
models
List Models (Public)
curl --request GET \
--url https://api.bland.ai/v2/modelsimport requests
url = "https://api.bland.ai/v2/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.bland.ai/v2/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/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/v2/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/v2/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/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{
"object": "list",
"data": [
{
"id": "btts-3",
"object": "model",
"created": 0,
"owned_by": "bland",
"name": "btts-3",
"modality": "text-to-speech",
"capabilities": {
"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",
"object": "model",
"created": 0,
"owned_by": "bland",
"name": "btts-2",
"modality": "text-to-speech",
"capabilities": {
"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": {
"message": "Failed to list models.",
"type": "api_error",
"param": null,
"code": "internal_error"
}
}
Overview
Returns Bland’s TTS model catalog in the OpenAIlist format. No authentication is required.
Use it when your tooling expects an OpenAI-style GET /models endpoint, or when you need to discover models before a user has entered an API key. Each entry carries the same capabilities manifest as List TTS Models: supported encodings, sample rates, containers, and voice controls.
If you are already authenticated and only need the manifests, List TTS Models returns them without the OpenAI wrapper. Its behavior is unchanged.
Responses are cacheable for up to 5 minutes (Cache-Control: public, max-age=300).
Response
string
Always
list.array
Array of model entries.
Show Model fields
Show Model fields
string
Model identifier, for example
btts-3. Same value as the x-model header on Synthesize Speech.string
Always
model.number
Always
0. Present for OpenAI compatibility.string
Always
bland.string
Human-readable name. Currently matches
id.string
Always
text-to-speech.object
The model’s capabilities manifest.
Show Capability fields
Show Capability fields
{
"object": "list",
"data": [
{
"id": "btts-3",
"object": "model",
"created": 0,
"owned_by": "bland",
"name": "btts-3",
"modality": "text-to-speech",
"capabilities": {
"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",
"object": "model",
"created": 0,
"owned_by": "bland",
"name": "btts-2",
"modality": "text-to-speech",
"capabilities": {
"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": {
"message": "Failed to list models.",
"type": "api_error",
"param": null,
"code": "internal_error"
}
}
Error codes
| Code | HTTP | Meaning |
|---|---|---|
internal_error | 500 | Catalog generation failed. Retry the request. |
Docs for agents: llms.txt
Was this page helpful?