Get synthesizer providers
curl --request GET \
--url https://app.autocalls.ai/api/user/assistants/synthesizer-providers \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.autocalls.ai/api/user/assistants/synthesizer-providers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.autocalls.ai/api/user/assistants/synthesizer-providers', 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://app.autocalls.ai/api/user/assistants/synthesizer-providers",
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: Bearer <token>"
],
]);
$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://app.autocalls.ai/api/user/assistants/synthesizer-providers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.autocalls.ai/api/user/assistants/synthesizer-providers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/user/assistants/synthesizer-providers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": 1,
"name": "ElevenLabs",
"code": "elevenlabs",
"tts_models": [
{
"key": "eleven_flash_v2_5",
"name": "Flash v2.5",
"description": "Fastest to respond, best for live calls. Speaks 32 languages.",
"is_default": true
},
{
"key": "eleven_v3_conversational",
"name": "v3 Conversational",
"description": "More natural and expressive, slightly slower to respond. Speaks every language we offer.",
"is_default": false
}
]
},
{
"id": 2,
"name": "Azure",
"code": "azure",
"tts_models": []
},
{
"id": 3,
"name": "Cartesia",
"code": "cartesia",
"tts_models": [
{
"key": "sonic-3.5",
"name": "Sonic 3.5",
"description": "Proven on live calls. Speaks 42 languages.",
"is_default": true
},
{
"key": "sonic-3.6",
"name": "Sonic 3.6",
"description": "Most natural and expressive. Adds Odia and Urdu.",
"is_default": false
}
]
}
]
[
{
"id": 1,
"name": "ElevenLabs",
"code": "elevenlabs",
"tts_models": [
{
"key": "eleven_v3_conversational",
"name": "v3 Conversational",
"description": "More natural and expressive, slightly slower to respond. Speaks every language we offer.",
"is_default": false
}
]
},
{
"id": 3,
"name": "Cartesia",
"code": "cartesia",
"tts_models": [
{
"key": "sonic-3.5",
"name": "Sonic 3.5",
"description": "Proven on live calls. Speaks 42 languages.",
"is_default": true
},
{
"key": "sonic-3.6",
"name": "Sonic 3.6",
"description": "Most natural and expressive. Adds Odia and Urdu.",
"is_default": false
}
]
}
]
Assistants
Get synthesizer providers
Retrieve available TTS (text-to-speech) synthesizer providers
GET
/
user
/
assistants
/
synthesizer-providers
Get synthesizer providers
curl --request GET \
--url https://app.autocalls.ai/api/user/assistants/synthesizer-providers \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.autocalls.ai/api/user/assistants/synthesizer-providers"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.autocalls.ai/api/user/assistants/synthesizer-providers', 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://app.autocalls.ai/api/user/assistants/synthesizer-providers",
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: Bearer <token>"
],
]);
$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://app.autocalls.ai/api/user/assistants/synthesizer-providers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.autocalls.ai/api/user/assistants/synthesizer-providers")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/user/assistants/synthesizer-providers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": 1,
"name": "ElevenLabs",
"code": "elevenlabs",
"tts_models": [
{
"key": "eleven_flash_v2_5",
"name": "Flash v2.5",
"description": "Fastest to respond, best for live calls. Speaks 32 languages.",
"is_default": true
},
{
"key": "eleven_v3_conversational",
"name": "v3 Conversational",
"description": "More natural and expressive, slightly slower to respond. Speaks every language we offer.",
"is_default": false
}
]
},
{
"id": 2,
"name": "Azure",
"code": "azure",
"tts_models": []
},
{
"id": 3,
"name": "Cartesia",
"code": "cartesia",
"tts_models": [
{
"key": "sonic-3.5",
"name": "Sonic 3.5",
"description": "Proven on live calls. Speaks 42 languages.",
"is_default": true
},
{
"key": "sonic-3.6",
"name": "Sonic 3.6",
"description": "Most natural and expressive. Adds Odia and Urdu.",
"is_default": false
}
]
}
]
[
{
"id": 1,
"name": "ElevenLabs",
"code": "elevenlabs",
"tts_models": [
{
"key": "eleven_v3_conversational",
"name": "v3 Conversational",
"description": "More natural and expressive, slightly slower to respond. Speaks every language we offer.",
"is_default": false
}
]
},
{
"id": 3,
"name": "Cartesia",
"code": "cartesia",
"tts_models": [
{
"key": "sonic-3.5",
"name": "Sonic 3.5",
"description": "Proven on live calls. Speaks 42 languages.",
"is_default": true
},
{
"key": "sonic-3.6",
"name": "Sonic 3.6",
"description": "Most natural and expressive. Adds Odia and Urdu.",
"is_default": false
}
]
}
]
This endpoint returns a list of available synthesizer providers that can be used when creating or updating assistants. Use the returned
id as synthesizer_provider_id when configuring an assistant.
Query Parameters
integer
Filter providers by language support. Only returns providers that support the given language. Use the Get Languages endpoint to get available language IDs.
Response fields
array
Show properties
Show properties
integer
The unique identifier of the provider. Use this as
synthesizer_provider_id when creating or updating assistants.string
The display name of the provider (e.g., “ElevenLabs”, “Azure”, “Cartesia”)
string
The internal code of the provider
array
The voice models this provider offers. Pass one of these
key values as tts_model when creating or updating an assistant. Empty for providers whose API takes no model parameter (such as Azure).When language_id is supplied, this list only contains models that can speak that language, so any key returned here is safe to send.[
{
"id": 1,
"name": "ElevenLabs",
"code": "elevenlabs",
"tts_models": [
{
"key": "eleven_flash_v2_5",
"name": "Flash v2.5",
"description": "Fastest to respond, best for live calls. Speaks 32 languages.",
"is_default": true
},
{
"key": "eleven_v3_conversational",
"name": "v3 Conversational",
"description": "More natural and expressive, slightly slower to respond. Speaks every language we offer.",
"is_default": false
}
]
},
{
"id": 2,
"name": "Azure",
"code": "azure",
"tts_models": []
},
{
"id": 3,
"name": "Cartesia",
"code": "cartesia",
"tts_models": [
{
"key": "sonic-3.5",
"name": "Sonic 3.5",
"description": "Proven on live calls. Speaks 42 languages.",
"is_default": true
},
{
"key": "sonic-3.6",
"name": "Sonic 3.6",
"description": "Most natural and expressive. Adds Odia and Urdu.",
"is_default": false
}
]
}
]
[
{
"id": 1,
"name": "ElevenLabs",
"code": "elevenlabs",
"tts_models": [
{
"key": "eleven_v3_conversational",
"name": "v3 Conversational",
"description": "More natural and expressive, slightly slower to respond. Speaks every language we offer.",
"is_default": false
}
]
},
{
"id": 3,
"name": "Cartesia",
"code": "cartesia",
"tts_models": [
{
"key": "sonic-3.5",
"name": "Sonic 3.5",
"description": "Proven on live calls. Speaks 42 languages.",
"is_default": true
},
{
"key": "sonic-3.6",
"name": "Sonic 3.6",
"description": "Most natural and expressive. Adds Odia and Urdu.",
"is_default": false
}
]
}
]
Notes
- If no
language_idfilter is provided, all providers are returned - Not all providers support all languages — use the
language_idfilter to get compatible providers - Synthesizer providers are only relevant for
pipelineanddualplexmodes (multimodal mode handles TTS internally) - If you don’t set
synthesizer_provider_idwhen creating an assistant, the language’s default provider is used tts_modelis optional. Omit it and the provider’s default model (is_default: true) is used- A
tts_modelkey is only valid for the provider that lists it, and only for languages that model supports. Filtering this endpoint bylanguage_idis the reliable way to get a key that will be accepted

