List BYOK Voices
curl --request GET \
--url https://app.thinnest.ai/api/v1/byok/voices \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/byok/voices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/byok/voices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"provider": {
"id": "elevenlabs",
"label": "ElevenLabs"
},
"model": "eleven_flash_v2_5",
"items": [
{
"id": "EXAVITQu4vr4xnSDxMaL",
"name": "Sarah",
"language": "en",
"gender": "female",
"sample": "https://storage.googleapis.com/eleven-public-prod/premade/voices/EXAVITQu4vr4xnSDxMaL/sample.mp3"
},
{
"id": "Xb7hH8MSUJpSbSDYk0k2",
"name": "Alice",
"language": "en",
"gender": "female",
"sample": null
}
]
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "This workspace is not using its own keys; its voices are at GET /api/v1/voices."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}{
"error": "ElevenLabs answered 401 when asked for its voices."
}Bring your own keys
List BYOK Voices
The voices your own voice provider offers your key — what Set Agent BYOK Voice accepts. sample is a clip the provider hosts, free to play, when it has one. Refused with 409 when the workspace is not using its own keys; its voices are then List Voices.
GET
/
byok
/
voices
List BYOK Voices
curl --request GET \
--url https://app.thinnest.ai/api/v1/byok/voices \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/byok/voices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/byok/voices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"provider": {
"id": "elevenlabs",
"label": "ElevenLabs"
},
"model": "eleven_flash_v2_5",
"items": [
{
"id": "EXAVITQu4vr4xnSDxMaL",
"name": "Sarah",
"language": "en",
"gender": "female",
"sample": "https://storage.googleapis.com/eleven-public-prod/premade/voices/EXAVITQu4vr4xnSDxMaL/sample.mp3"
},
{
"id": "Xb7hH8MSUJpSbSDYk0k2",
"name": "Alice",
"language": "en",
"gender": "female",
"sample": null
}
]
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "This workspace is not using its own keys; its voices are at GET /api/v1/voices."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}{
"error": "ElevenLabs answered 401 when asked for its voices."
}Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace.
Example:
"org_3fKq9TzQ1mN8vB2xR7cLpA"