Get available voices
curl --request GET \
--url https://app.cloudone-ai.com/api/user/assistants/voices \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.cloudone-ai.com/api/user/assistants/voices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.cloudone-ai.com/api/user/assistants/voices', 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.cloudone-ai.com/api/user/assistants/voices",
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.cloudone-ai.com/api/user/assistants/voices"
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.cloudone-ai.com/api/user/assistants/voices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.cloudone-ai.com/api/user/assistants/voices")
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": "Alloy",
"language_id": 1,
"gender": "female",
"preview_url": "https://cdn.openai.com/API/voice-previews/alloy.flac",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": null
},
{
"id": 10,
"name": "Zephyr",
"language_id": 1,
"gender": "female",
"preview_url": "https://gstatic.com/aistudio/voices/samples/Zephyr.wav",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": 1
},
{
"id": 11,
"name": "Puck",
"language_id": 1,
"gender": "male",
"preview_url": "https://gstatic.com/aistudio/voices/samples/Puck.wav",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": 1
}
]
Assistants
Get available voices
Retrieve all available voices for assistant configuration
GET
/
user
/
assistants
/
voices
Get available voices
curl --request GET \
--url https://app.cloudone-ai.com/api/user/assistants/voices \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.cloudone-ai.com/api/user/assistants/voices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.cloudone-ai.com/api/user/assistants/voices', 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.cloudone-ai.com/api/user/assistants/voices",
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.cloudone-ai.com/api/user/assistants/voices"
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.cloudone-ai.com/api/user/assistants/voices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.cloudone-ai.com/api/user/assistants/voices")
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": "Alloy",
"language_id": 1,
"gender": "female",
"preview_url": "https://cdn.openai.com/API/voice-previews/alloy.flac",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": null
},
{
"id": 10,
"name": "Zephyr",
"language_id": 1,
"gender": "female",
"preview_url": "https://gstatic.com/aistudio/voices/samples/Zephyr.wav",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": 1
},
{
"id": 11,
"name": "Puck",
"language_id": 1,
"gender": "male",
"preview_url": "https://gstatic.com/aistudio/voices/samples/Puck.wav",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": 1
}
]
This endpoint returns a list of all available voices that can be used when creating or updating assistants, with optional filtering by assistant mode and language.
Query Parameters
string
Filter voices by assistant mode. Options:
pipeline, multimodal, dualplexinteger
Filter voices by language ID. Use the Get Languages endpoint to get available language IDs.
Response fields
array
Show properties
Show properties
integer
The unique identifier of the voice
string
The display name of the voice
integer
The language ID this voice is associated with
string
The gender of the voice (male/female)
string
URL to an audio sample of the voice. Can be used to let users preview voices before selecting one.
string
The accent of the voice (e.g., “American”, “British”). May be
null.string
The age category of the voice (e.g., “Young”, “Middle aged”). May be
null.integer
The TTS provider ID this voice belongs to. Use the Get Synthesizer Providers endpoint to resolve provider names. May be
null.[
{
"id": 1,
"name": "Alloy",
"language_id": 1,
"gender": "female",
"preview_url": "https://cdn.openai.com/API/voice-previews/alloy.flac",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": null
},
{
"id": 10,
"name": "Zephyr",
"language_id": 1,
"gender": "female",
"preview_url": "https://gstatic.com/aistudio/voices/samples/Zephyr.wav",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": 1
},
{
"id": 11,
"name": "Puck",
"language_id": 1,
"gender": "male",
"preview_url": "https://gstatic.com/aistudio/voices/samples/Puck.wav",
"accent": null,
"age": "Middle aged",
"synthesizer_provider_id": 1
}
]
Notes
- Use the
idfield asvoice_idwhen creating or updating assistants - Filter by
modeto get only voices compatible with your intended assistant type - Filter by
language_idto get voices for a specific language - If no filters are provided, all available voices are returned
- Only voices that are public or belong to the authenticated user are returned
⌘I

