https://retellai.com/?utm_source=discord&utm_medium=seo logo
how can i make in my app with retell api, in a fie...
# ❓・ai-evy-support
c
@AI Evy how can i make in my app with retell api, in a field add a imported voice id from eleven labs and this automatically set up this voice as to be used in the app user account that have a specific retell workspace have this voice set there to be abeto be used
a
Thanks for tagging me @Client Nexus. I'll look through relevant sources and get back to you shortly.
### Answer --- To add an imported ElevenLabs voice and use it in your Retell workspace, you need two steps: ## 1. Add the ElevenLabs Voice to Your Voice Library Use the Add Voice endpoint to add a community voice from ElevenLabs: [(1) ]()
Copy code
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) ;
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) ]()
Copy code
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) ]()
​ To learn more, see the sources I considered: [[1] Add Voice](https://docs.retellai.com/api-references/add-voice) [[2] Create Voice Agent](https://docs.retellai.com/api-references/create-agent) [[3] Update Voice Agent](https://docs.retellai.com/api-references/update-agent) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy so the only way to do this is adding manually into retell workspace the voice id i want? how can we automatized this
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer --- You can automate this entirely via the API—no manual dashboard steps required. ## Automated Workflow Step 1: Programmatically add the ElevenLabs voice [(1) ]()
Copy code
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) ;
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) ]()
Copy code
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.
​ To learn more, see the sources I considered: [[1] Add Voice](https://docs.retellai.com/api-references/add-voice) [[2] Create Voice Agent](https://docs.retellai.com/api-references/create-agent) [[3] Update Voice Agent](https://docs.retellai.com/api-references/update-agent) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Question 1: Voice Provisioning for New Workspaces Context: We manage multiple Retell workspaces (one per agency/customer). When a new agency gets assigned a workspace, we need to programmatically add our default ElevenLabs voices to that workspace so they're available for agent creation. Our default voices include: nf4MCGNSdM0hxM95ZBQR (Emma - English) lcMyyd2HUfFzxdCaC4Ta (Lily - English) dNH3PGQenpJn3UgJkJS8 (James - English) 33B4UnXyTNbgLmdEDh5P (Keren - Portuguese) (Plus ~20 more across languages) Questions: When using the Add Voice API with provider_voice_id, does this create a copy of the voice in that workspace, or a reference? The public_user_id parameter - if these are public ElevenLabs library voices, what value should we use? Our ElevenLabs account ID, or is there a way to reference public voices without it? Is there a rate limit on the Add Voice API? If we add 25 voices when provisioning a workspace, should we batch or throttle? For native Retell voices like 11labs-Jenny and 11labs-Adrian - do these exist by default in every workspace, or do they also need to be added?
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer Based on the available documentation, I can only partially answer your questions: ## What the Add Voice API requires The Add Voice endpoint accepts these parameters: [(1) ]() -
provider_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.
Copy code
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?
​ To learn more, see the sources I considered: [[1] Add Voice](https://docs.retellai.com/api-references/add-voice) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Question 2: Voice Pricing & Identification Context: We need to charge users differently for: Default/included voices: Free (our pre-configured voices) User-imported ElevenLabs voices: Premium pricing Questions: In the call webhook or call data, is there a way to identify if a voice is a custom ElevenLabs voice vs. a native Retell voice? Does the voice_id returned from Add Voice API have a consistent format/prefix that differs from native voices (e.g., custom_voice_xxx vs 11labs-xxx)? In the billing/usage data from Retell, is there a per-voice cost breakdown, or is it all aggregated? For accurate billing: When a call is made, does the webhook include the voice_id used so we can track usage per voice?
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer Based on the available documentation, I can only partially answer your questions: ## What the documentation shows The agent response object includes
voice_id
as a field. [(1) ]() For example:
Copy code
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?
​ To learn more, see the sources I considered: [[1] Create Voice Agent](https://docs.retellai.com/api-references/create-agent) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Question 3: Implementation Flow Confirmation Context: We want to implement this flow: 1. Admin adds new Retell workspace in God Mode 2. System auto-calls Add Voice API for each default ElevenLabs voice 3. Store mapping: { retell_voice_id, elevenlabs_voice_id, workspace_id } 4. When user creates agent, use workspace-specific retell_voice_id Questions: Is this the correct approach, or is there a better pattern? If the same ElevenLabs voice is added to multiple workspaces, will each workspace get a unique voice_id? Can we use the same voice_name across workspaces, or must it be unique per Retell account? Is there a "list voices" API endpoint to verify which voices exist in a workspace?
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer --- ## What the documentation confirms Yes, there is a List Voices API endpoint: [(1) ]()
Copy code
javascript
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) ]()
Copy code
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?
​ To learn more, see the sources I considered: [[1] List Voices](https://docs.retellai.com/api-references/list-voices) [[2] Add Voice](https://docs.retellai.com/api-references/add-voice) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Question 4: User Voice Import Flow Context: We want users to import their own ElevenLabs voices: User provides ElevenLabs voice ID We call Add Voice API with their workspace's API key Voice becomes available only for that agency Questions: For public_user_id: If a user wants to import a public voice from ElevenLabs library, how do we get the owner's public_user_id? Can we import voices from ElevenLabs that the user has cloned/created in their own ElevenLabs account? If yes to #2, would we need their ElevenLabs API key, or can it work with just the voice ID if it's set to "shared"?
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer Based on the available documentation, I can only partially answer your questions: ## What the documentation shows The Add Voice API requires these parameters for ElevenLabs voices: [(1) ]() -
provider_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) ]()
Copy code
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) ;
The search response includes
public_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?
​ To learn more, see the sources I considered: [[1] Add Voice](https://docs.retellai.com/api-references/add-voice) [[2] Search Voice](https://docs.retellai.com/api-references/search-voice) [[3] Add custom voice from 11labs via ID](https://discord.com/channels/1186424376300679209/1314742972113485875) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Context: We are building a multi-tenant SaaS where each agency has their own Retell workspace (separate API key). We want users to import ElevenLabs voices from the public ElevenLabs Voice Library into their Retell workspace. Questions: Add Voice API with public ElevenLabs Library voices: When using the Add Voice API to import a public voice from the ElevenLabs Voice Library (e.g., a community voice shared publicly), what should we use for the public_user_id parameter? Is it: a) The original voice creator's ElevenLabs user ID? b) Our platform's ElevenLabs account user ID (since we pay for usage)? c) Not required for public library voices? Voice Library discovery: Can users browse/search the ElevenLabs Voice Library through Retell? Or should we direct them to: a) Use Retell's Search Voice API to find voices? b) Browse elevenlabs.io Voice Library directly and copy the voice ID? Voice ID from ElevenLabs website: If a user finds a voice on elevenlabs.io/voice-library and copies the voice ID from there, can they use that with the Add Voice API? What's the exact flow? Per-workspace voice isolation: When voice A is added to Workspace 1 and returns custom_voice_xxx, if the same ElevenLabs voice A is added to Workspace 2, will it get a different custom_voice_yyy? We need this confirmation for our database mapping. Billing attribution: When using imported ElevenLabs voices via Add Voice API, are the ElevenLabs usage costs: a) Charged through Retell's billing (included in Retell pricing)? b) Charged separately to our ElevenLabs account? c) Charged to the original voice owner's ElevenLabs account?
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer Based on the available documentation, I can only partially answer your questions: ## What the documentation confirms 1. Add Voice API parameters for ElevenLabs: [(1) ]() The
public_user_id
parameter is documented as: "Required for ElevenLabs only. User id of the voice owner."
Copy code
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) ]()
Copy code
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) ;
The search response includes
public_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?
​ To learn more, see the sources I considered: [[1] Add Voice](https://docs.retellai.com/api-references/add-voice) [[2] Search Voice](https://docs.retellai.com/api-references/search-voice) [[3] Choose a custom voice](https://docs.retellai.com/build/voice) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Question 1: Search API Coverage Does the Search Voice API (client.voice.search()) return ALL public voices available in the ElevenLabs Voice Library? Or is it a subset? We want to confirm users can discover any public ElevenLabs voice through this search. Question 2: Per-Workspace Voice IDs When we use Add Voice API to add the same ElevenLabs voice (same provider_voice_id) to two different Retell workspaces (different API keys), does each workspace receive a unique voice_id? For example: Workspace A adds voice → gets custom_voice_abc123 Workspace B adds same voice → gets custom_voice_xyz789? This affects how we need to store voice mappings in our database.
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer Based on the available documentation, I cannot definitively answer either question: ## Question 1: Search API Coverage The Search Voice API documentation describes it as: "Search for community voices from voice providers" [(1) ]()
Copy code
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) ;
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) ]()
Copy code
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?
​ To learn more, see the sources I considered: [[1] Search Voice](https://docs.retellai.com/api-references/search-voice) [[2] Add custom voice from 11labs via ID](https://discord.com/channels/1186424376300679209/1314742972113485875) [[3] Add Voice](https://docs.retellai.com/api-references/add-voice) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
c
@AI Evy Context: We're building a SaaS platform where agencies have their own Retell workspaces (separate API keys). We need to: Auto-provision default ElevenLabs voices to new agency workspaces Allow users to import ElevenLabs voices by pasting the voice ID from elevenlabs.io Specific Questions: For public ElevenLabs Library voices: When calling the Add Voice API, what public_user_id should we use for voices from the public ElevenLabs Voice Library (voices we don't own)? Can we use ANY valid ElevenLabs user ID, or must it be the original creator's ID? Alternative approach: Is there a way to add an ElevenLabs voice using ONLY the provider_voice_id without needing the public_user_id? For example, can we pass null or omit it for public voices? Voice ID format: When we successfully add an ElevenLabs voice via the API, does the returned voice_id follow a consistent pattern (like custom_voice_xxx) that we can use to identify imported voices vs native Retell voices?
a
Thanks for the follow-up, @Client Nexus. I'll get back to you soon.
### Answer Based on the available documentation, I can only partially answer your questions: ## What the documentation states Add Voice API parameters for ElevenLabs: [(1) ]() -
provider_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."
Copy code
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) ]()
Copy code
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>
}
[(1) ]() , [(2) ]() ## 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 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?
​ To learn more, see the sources I considered: [[1] Add Voice](https://docs.retellai.com/api-references/add-voice) [[2] Get Voice](https://docs.retellai.com/api-references/get-voice) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.