List Voice Clones
curl --request GET \
--url https://api.buena.ai/api/v2/voice-clones \
--header 'Authorization: <authorization>'import requests
url = "https://api.buena.ai/api/v2/voice-clones"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.buena.ai/api/v2/voice-clones', 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.buena.ai/api/v2/voice-clones",
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.buena.ai/api/v2/voice-clones"
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.buena.ai/api/v2/voice-clones")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.buena.ai/api/v2/voice-clones")
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{
"success": true,
"data": {
"voiceClones": [
{
"voiceId": "pNInz6obpgDQGcFmaJgB",
"name": "Professional Voice",
"description": "Professional outreach voice for LinkedIn",
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-19T14:30:00.000Z",
"isActive": true,
"sampleCount": 3,
"labels": {
"userId": "user123",
"createdAt": "2024-01-15T10:30:00.000Z"
}
},
{
"voiceId": "2EiwWnXFnvU5JabPnv8n",
"name": "Sales Voice",
"description": "Energetic sales voice for cold outreach",
"createdAt": "2024-01-20T08:15:00.000Z",
"updatedAt": "2024-01-20T08:15:00.000Z",
"isActive": true,
"sampleCount": 2,
"labels": {
"userId": "user123",
"createdAt": "2024-01-20T08:15:00.000Z"
}
}
],
"total": 2
}
}
Voice Cloning
List Voice Clones
Retrieve all voice clones for the authenticated user
GET
/
api
/
v2
/
voice-clones
List Voice Clones
curl --request GET \
--url https://api.buena.ai/api/v2/voice-clones \
--header 'Authorization: <authorization>'import requests
url = "https://api.buena.ai/api/v2/voice-clones"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.buena.ai/api/v2/voice-clones', 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.buena.ai/api/v2/voice-clones",
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.buena.ai/api/v2/voice-clones"
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.buena.ai/api/v2/voice-clones")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.buena.ai/api/v2/voice-clones")
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{
"success": true,
"data": {
"voiceClones": [
{
"voiceId": "pNInz6obpgDQGcFmaJgB",
"name": "Professional Voice",
"description": "Professional outreach voice for LinkedIn",
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-19T14:30:00.000Z",
"isActive": true,
"sampleCount": 3,
"labels": {
"userId": "user123",
"createdAt": "2024-01-15T10:30:00.000Z"
}
},
{
"voiceId": "2EiwWnXFnvU5JabPnv8n",
"name": "Sales Voice",
"description": "Energetic sales voice for cold outreach",
"createdAt": "2024-01-20T08:15:00.000Z",
"updatedAt": "2024-01-20T08:15:00.000Z",
"isActive": true,
"sampleCount": 2,
"labels": {
"userId": "user123",
"createdAt": "2024-01-20T08:15:00.000Z"
}
}
],
"total": 2
}
}
Retrieve a list of all voice clones associated with your account, including their training status, settings, and usage statistics.
Requires the
voice:read permission.Request
Bearer token with your API key that has
voice:read permission (e.g., “Bearer
bna-your-api-key”)Query Parameters
Filter by training status:
processing, ready, failedNumber of voice clones to return (1-100)
Pagination offset
Examples
curl -X GET "https://api.buena.ai/api/v2/voice-clones" \
-H "Authorization: Bearer bna-your-api-key"
const response = await fetch("https://api.buena.ai/api/v2/voice-clones", {
headers: {
Authorization: "Bearer bna-your-api-key",
},
});
const data = await response.json();
console.log(data.data.voiceClones);
import requests
response = requests.get(
'https://api.buena.ai/api/v2/voice-clones',
headers={'Authorization': 'Bearer bna-your-api-key'}
)
data = response.json()
for voice in data['data']['voiceClones']:
print(f"Voice: {voice['name']} - ID: {voice['voiceId']}")
Response
Always
true for successful requestsVoice clones data object
Show Voice Clones Data
Show Voice Clones Data
Array of voice clone objects
Show Voice Clone Object
Show Voice Clone Object
Unique voice clone identifier (voiceId)
User-defined name for the voice clone
Description of the voice clone
Whether the voice clone is active and available for use
Number of audio samples used to train this voice
ISO 8601 timestamp when created
ISO 8601 timestamp when last updated
Metadata labels associated with the voice clone
Total number of voice clones for the user
{
"success": true,
"data": {
"voiceClones": [
{
"voiceId": "pNInz6obpgDQGcFmaJgB",
"name": "Professional Voice",
"description": "Professional outreach voice for LinkedIn",
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-19T14:30:00.000Z",
"isActive": true,
"sampleCount": 3,
"labels": {
"userId": "user123",
"createdAt": "2024-01-15T10:30:00.000Z"
}
},
{
"voiceId": "2EiwWnXFnvU5JabPnv8n",
"name": "Sales Voice",
"description": "Energetic sales voice for cold outreach",
"createdAt": "2024-01-20T08:15:00.000Z",
"updatedAt": "2024-01-20T08:15:00.000Z",
"isActive": true,
"sampleCount": 2,
"labels": {
"userId": "user123",
"createdAt": "2024-01-20T08:15:00.000Z"
}
}
],
"total": 2
}
}
Next Steps
Create Voice Clone
Create a new voice clone
Generate Preview
Test your voice clone
Update Settings
Modify voice clone settings
Delete Voice Clone
Remove a voice clone
⌘I

