Needs keys Adds a shared ElevenLabs voice found with Search community voices to your ElevenLabs account and to your workspace. Live adds need ELEVENLABS_API_KEY. Without it (or with TRIED_MOCK_PROVIDERS=1) the voice is stored without calling ElevenLabs.
The new voice shows up in List voices and can be set as an agent's voice_id.
Request#
| Field | Type | Required | Description |
|---|---|---|---|
public_owner_id |
string | Yes | The public_owner_id from the search result. |
voice_id |
string | Yes | The shared voice_id from the search result. |
voice_name |
string | Yes | Name for the voice in your workspace. 1 to 120 characters. |
Example request#
curl -X POST https://api.tried.com.au/add-community-voice \
-H "Authorization: Bearer $TRIED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"public_owner_id": "owner_a1", "voice_id": "shared_harper", "voice_name": "Harper (reception)"}'const res = await fetch("https://api.tried.com.au/add-community-voice", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ public_owner_id: "owner_a1", voice_id: "shared_harper", voice_name: "Harper (reception)" }),
});
const voice = await res.json();import os, requests
res = requests.post(
"https://api.tried.com.au/add-community-voice",
headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
json={"public_owner_id": "owner_a1", "voice_id": "shared_harper", "voice_name": "Harper (reception)"},
)
voice = res.json()Response#
201 Created
{
"voice_id": "custom_voice_137bcfa732ab6e2df5d2b815",
"voice_name": "Harper (reception)",
"provider": "elevenlabs",
"provider_voice_id": "shared_harper",
"gender": "female",
"accent": "australian"
}| Field | Type | Description |
|---|---|---|
voice_id |
string | New workspace voice ID, starting with custom_voice_. |
provider |
string | Always elevenlabs. |
provider_voice_id |
string | The voice ID ElevenLabs returns for your account. In mock mode it is the shared voice_id you sent. |
gender, accent |
string | Taken from the sample list when the voice_id matches one of its voices, otherwise female and an empty accent. |
This response has no age or preview_audio_url. Get voice returns the full voice object.
Errors#
| Status | When |
|---|---|
400 |
A field fails validation, or ElevenLabs add shared voice failed (<status>): .... |
401 |
Missing or invalid API key. |
403 |
The key's IP allowlist or scopes reject the request (this route needs the agents scope), or the caller is a read-only dashboard member. |
429 |
Rate limit exceeded. See Rate limits. |
See Errors for the body format.
Retell compatibility#
Same path and method as Retell, but the body differs: Tried takes public_owner_id, voice_id and voice_name, supports ElevenLabs only, and returns 201.