Client Nexus
01/03/2026, 10:03 AMAI Evy
01/03/2026, 10:03 AMAI Evy
01/03/2026, 10:03 AMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponse = await client.voice.addResource({
provider_voice_id: 'provider_voice_id',
voice_name: 'x',
}) ;
console.log(voiceResponse.provider) ;
Required parameters:
- provider_voice_id (string, required) — Voice id assigned by the provider (ElevenLabs voice ID)
- voice_name (string, required) — A custom name for the voice
- voice_provider — Set to elevenlabs
- public_user_id (string) — Required for ElevenLabs only. User id of the voice owner.
The response will return a voice_id that you can then use with agents.
## 2. Create or Update an Agent to Use That Voice
Once you have the voice_id, you can create a new agent or update an existing one:
Create Agent: [(2) ]()
javascript
const agentResponse = await client.agent.create({
response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },
voice_id: '11labs-Adrian',
}) ;
console.log(agentResponse.agent_id) ;
Update Agent: [(3) ]()
Use client.agent.update() with the voice_id parameter to change the voice on an existing agent.
---
Note: Some ElevenLabs voices available in Retell may not be publicly accessible in ElevenLabs' voice library. [(6) ]()AI Evy
01/03/2026, 10:03 AMAI Evy
01/03/2026, 10:03 AMClient Nexus
01/03/2026, 10:05 AMAI Evy
01/03/2026, 10:05 AMAI Evy
01/03/2026, 10:05 AMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponse = await client.voice.addResource({
provider_voice_id: 'provider_voice_id',
voice_name: 'x',
}) ;
console.log(voiceResponse.provider) ;
Required parameters:
- provider_voice_id — The ElevenLabs voice ID
- voice_name — A custom name for the voice
- voice_provider — Set to elevenlabs
- public_user_id — Required for ElevenLabs; the user id of the voice owner
The response returns a voice_id you can use immediately.
Step 2: Create or update an agent with that voice [(2) ]() , [(3) ]()
javascript
const agentResponse = await client.agent.create({
response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },
voice_id: '11labs-Adrian',
}) ;
console.log(agentResponse.agent_id) ;
[(2) ]()
So your app can accept an ElevenLabs voice ID from a user, call the Add Voice API to import it, then immediately use the returned voice_id when creating/updating agents—all programmatically without any manual dashboard interaction.AI Evy
01/03/2026, 10:05 AMAI Evy
01/03/2026, 10:05 AMClient Nexus
01/04/2026, 5:53 PMAI Evy
01/04/2026, 5:53 PMAI Evy
01/04/2026, 5:53 PMprovider_voice_id (required) — Voice id assigned by the provider
- voice_name (required) — A custom name for the voice
- voice_provider — Options: elevenlabs, cartesia, minimax
- public_user_id — Required for ElevenLabs only. User id of the voice owner.
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponse = await client.voice.addResource({
provider_voice_id: 'provider_voice_id',
voice_name: 'x',
}) ;
console.log(voiceResponse.provider) ;
## What I cannot answer from the sources
The documentation does not explicitly address:
1. Copy vs. reference — Whether adding a voice creates a copy or a reference is not documented in the available sources.
2. public_user_id for public library voices — The docs only state it's "Required for ElevenLabs only. User id of the voice owner." There's no guidance on what to use for public ElevenLabs library voices.
3. Rate limits — No rate limit information for the Add Voice API is documented in the available sources.
4. Default voices per workspace — Whether voices like 11labs-Jenny or 11labs-Adrian exist by default in every workspace is not documented.
For these specific questions, I'd recommend reaching out to Retell support:
- [Contact Sales]()
- [Retell GitHub]()
Would you like me to provide a general answer based on common patterns for these types of APIs?AI Evy
01/04/2026, 5:53 PMAI Evy
01/04/2026, 5:53 PMClient Nexus
01/04/2026, 5:54 PMAI Evy
01/04/2026, 5:54 PMAI Evy
01/04/2026, 5:54 PMvoice_id as a field. [(1) ]() For example:
javascript
{
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"voice_id": "11labs-Adrian",
// ...other fields
}
Native Retell voices appear to use a format like 11labs-Adrian, openai-Alloy, deepgram-Angus.
## What I cannot answer from the sources
The available documentation does not explicitly address:
1. Custom vs. native voice identification in webhooks — Whether call webhooks include the voice_id used, or how to distinguish custom-imported voices from native voices, is not documented in the sources I have.
2. Voice ID format for imported voices — Whether the Add Voice API returns a voice_id with a consistent prefix/format that differs from native voices is not documented.
3. Per-voice billing breakdown — Whether Retell provides per-voice cost breakdowns in billing/usage data is not documented in the available sources.
4. Webhook payload details for voice tracking — The specific fields included in call webhooks for voice identification are not covered in these sources.
For these billing and webhook-specific questions, I'd recommend:
- [Contact Sales]()
- [Retell GitHub]()
Would you like a general answer based on common API patterns for these types of use cases?AI Evy
01/04/2026, 5:54 PMAI Evy
01/04/2026, 5:54 PMClient Nexus
01/04/2026, 5:55 PMAI Evy
01/04/2026, 5:55 PMAI Evy
01/04/2026, 5:55 PMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponses = await client.voice.list() ;
console.log(voiceResponses) ;
This returns all voices available to the user, so you can verify which voices exist in a workspace.
Add Voice API for importing ElevenLabs voices:
[(2) ]()
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponse = await client.voice.addResource({
provider_voice_id: 'provider_voice_id',
voice_name: 'x',
}) ;
console.log(voiceResponse.provider) ;
The response includes a voice_id that you can then use when creating agents.
## What I cannot answer from the sources
The documentation does not explicitly address:
1. Whether each workspace gets a unique voice_id when the same ElevenLabs voice is added to multiple workspaces.
2. Whether voice_name must be unique per workspace or per Retell account.
3. Best practice patterns for multi-workspace voice provisioning.
Your proposed flow (add voices via API → store mapping → use workspace-specific voice_id) is a reasonable approach, but I cannot confirm from the sources whether it's the recommended pattern or if there are alternatives.
For these specific questions, I'd recommend:
- [Contact Sales]()
- [Retell GitHub]()
Would you like a general answer based on common API patterns?AI Evy
01/04/2026, 5:55 PMAI Evy
01/04/2026, 5:55 PMClient Nexus
01/04/2026, 5:55 PMAI Evy
01/04/2026, 5:55 PMAI Evy
01/04/2026, 5:56 PMprovider_voice_id (required) — Voice id assigned by the provider
- voice_name (required) — A custom name for the voice
- voice_provider — Set to elevenlabs
- public_user_id — Required for ElevenLabs only. User id of the voice owner.
You can also use the Search Voice API to find community voices: [(2) ]()
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const response = await client.voice.search({ search_query: 'search_query' }) ;
console.log(response.voices) ;AI Evy
01/04/2026, 5:56 PMpublic_user_id as a field in the returned voice objects, which could help you obtain the owner's user ID for public voices.
## What I cannot answer from the sources
The documentation does not explicitly address:
1. How to obtain public_user_id for arbitrary public ElevenLabs voices — The docs state it's required for ElevenLabs but don't explain how to retrieve it outside of the search API results.
2. Importing user-cloned/created ElevenLabs voices — Whether voices created in a user's own ElevenLabs account can be imported is not documented.
3. ElevenLabs API key requirements — Whether importing requires the user's ElevenLabs API key or if "shared" voice settings are sufficient is not documented in the available sources.
A Discord discussion mentions that importing custom voices from ElevenLabs by ID (outside of what appears in the search function) was requested as a feature but was noted as "right now no supported" and added to backlogs. [(3) ]()
For these specific questions, I'd recommend:
- [Contact Sales]()
- [Retell GitHub]()
Would you like a general answer based on common API patterns for these types of use cases?AI Evy
01/04/2026, 5:56 PMAI Evy
01/04/2026, 5:56 PMClient Nexus
01/04/2026, 9:44 PMAI Evy
01/04/2026, 9:44 PMAI Evy
01/04/2026, 9:44 PMpublic_user_id parameter is documented as: "Required for ElevenLabs only. User id of the voice owner."
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponse = await client.voice.addResource({
provider_voice_id: 'provider_voice_id',
voice_name: 'x',
}) ;
console.log(voiceResponse.provider) ;
2. Voice Library discovery through Retell:
Yes, you can use Retell's Search Voice API to search for community voices: [(2) ]()
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const response = await client.voice.search({ search_query: 'search_query' }) ;
console.log(response.voices) ;AI Evy
01/04/2026, 9:44 PMpublic_user_id as a field in the returned voice objects.
You can also add 11labs community voices through the voice selector in the dashboard by clicking "Add custom voice". [(3) ]()
## What I cannot answer from the sources
The documentation does not explicitly address:
1. Which public_user_id to use for public library voices — Whether it should be the original creator's ID, your platform's ID, or if it's not required for public voices is not documented.
2. Using voice IDs copied directly from elevenlabs.io — The exact flow for importing voices found on the ElevenLabs website is not documented.
3. Per-workspace voice isolation — Whether the same ElevenLabs voice added to different workspaces receives different voice_id values is not documented.
4. Billing attribution — Whether ElevenLabs usage costs are charged through Retell, separately to your ElevenLabs account, or to the voice owner is not documented in the available sources.
For these specific questions, I'd recommend:
- [Contact Sales]()
- [Retell GitHub]()
Would you like a general answer based on common API patterns for these types of use cases?AI Evy
01/04/2026, 9:44 PMAI Evy
01/04/2026, 9:44 PMClient Nexus
01/04/2026, 9:48 PMAI Evy
01/04/2026, 9:48 PMAI Evy
01/04/2026, 9:48 PMjavascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const response = await client.voice.search({ search_query: 'search_query' }) ;
console.log(response.voices) ;
The documentation does not specify whether this returns ALL public voices from the ElevenLabs Voice Library or a subset. A Discord discussion mentions that some voices found on the ElevenLabs page cannot be found through the search function in Retell. [(2) ]()
## Question 2: Per-Workspace Voice IDs
The Add Voice API returns a voice_id in the response: [(3) ]()
javascript
{
"voice_id": "11labs-Adrian",
"voice_name": "Adrian",
"provider": "elevenlabs",
// ...
}
However, the documentation does not explicitly state whether adding the same provider_voice_id to different workspaces results in unique voice_id values per workspace.
For both questions, I'd recommend:
- [Contact Sales]()
- [Retell GitHub]()
Would you like a general answer based on common API patterns?AI Evy
01/04/2026, 9:48 PMAI Evy
01/04/2026, 9:48 PMClient Nexus
01/04/2026, 9:51 PMAI Evy
01/04/2026, 9:51 PMAI Evy
01/04/2026, 9:51 PMprovider_voice_id (required) — Voice id assigned by the provider
- voice_name (required) — A custom name for the voice
- voice_provider — Options: elevenlabs, cartesia, minimax
- public_user_id — "Required for ElevenLabs only. User id of the voice owner."
javascript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const voiceResponse = await client.voice.addResource({
provider_voice_id: 'provider_voice_id',
voice_name: 'x',
}) ;
console.log(voiceResponse.provider) ;
Response format example: , [(2) ]()
json
{
"voice_id": "11labs-Adrian",
"voice_name": "Adrian",
"provider": "elevenlabs",
"gender": "male",
"accent": "American",
"age": "Young",
"preview_audio_url": "<https://retell-utils-public.s3.us-west-2.amazonaws.com/adrian.mp3%22>
}AI Evy
01/04/2026, 9:51 PMpublic_user_id to use for public library voices — Whether it must be the original creator's ID, any valid ElevenLabs user ID, or if it can be omitted for public voices is not documented.
2. Whether public_user_id can be omitted or set to null — The docs only state it's "Required for ElevenLabs only" without specifying behavior when omitted for public voices.
3. Voice ID format patterns for imported voices — The example shows 11labs-Adrian as a voice_id, but whether imported voices follow a different pattern (like custom_voice_xxx) is not documented.
For these specific questions, I'd recommend:
- [Contact Sales]()
- [Retell GitHub]()
Would you like a general answer based on common API patterns?AI Evy
01/04/2026, 9:51 PMAI Evy
01/04/2026, 9:51 PM