curl -X POST "https://mvp.tryunsora.com/api/v1/voiceovers/create" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Welcome back to the channel. <#0.5#> Today we are breaking down the three biggest AI stories of the week.",
"voice_id": "George",
"stability": 0.5
}'
{
"success": true,
"generation": {
"id": "<string>",
"status": "<string>"
},
"creditsDeducted": 123,
"creditsRemaining": 123
}{
"error": "<string>",
"success": true,
"code": "<string>",
"message": "<string>"
}Voiceover
Create voiceover
Turn a script into natural speech with ElevenLabs Eleven v3 — pick from 20 voices and poll until the finished audio is ready.
POST
/
voiceovers
/
create
curl -X POST "https://mvp.tryunsora.com/api/v1/voiceovers/create" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Welcome back to the channel. <#0.5#> Today we are breaking down the three biggest AI stories of the week.",
"voice_id": "George",
"stability": 0.5
}'
{
"success": true,
"generation": {
"id": "<string>",
"status": "<string>"
},
"creditsDeducted": 123,
"creditsRemaining": 123
}{
"error": "<string>",
"success": true,
"code": "<string>",
"message": "<string>"
}Converts a script into natural speech using ElevenLabs Eleven v3. Credits are deducted when the job is queued. Poll Poll voiceover status with the returned
generation.id until status is COMPLETED or FAILED.
Pick a voice first with List voices — every voice ships a preview clip so you can choose by ear.
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer uns_live_* API key or Clerk JWT |
Idempotency-Key | No | Max 128 chars. Replays the same response for 24h on API key requests |
Content-Type | Yes | application/json |
Request body
string
required
Script to convert to speech. Max 10,000 characters. Use
<#x#> between
words to insert a pause of x seconds (0.01–99.99), e.g. Hello <#1.5#> world.string
required
Voice to use. One of:
Aria, Roger, Sarah, Laura, Charlie, George,
Callum, River, Liam, Charlotte, Alice, Matilda, Will, Jessica,
Eric, Chris, Brian, Daniel, Lily, Bill.See List voices for descriptions and preview clips of each voice.number
0–1, default 0.5. Higher values produce a more consistent delivery; lower values are more expressive.number
0–1, default 1. Controls how closely the output sticks to the base voice. Very high values can cause artifacts.Credits
6 credits per started 1,000 characters (a 2,300-character script costs 18 credits). Output is alwaysmp3.
Async completion
Poll Poll voiceover status withgeneration.id until status is COMPLETED or FAILED. Webhooks are not supported on the public API.
Response
{
"success": true,
"generation": {
"id": "cm123abc",
"status": "QUEUED"
},
"creditsDeducted": 6,
"creditsRemaining": 94
}
Example
curl -X POST "https://mvp.tryunsora.com/api/v1/voiceovers/create" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Welcome back to the channel. <#0.5#> Today we are breaking down the three biggest AI stories of the week.",
"voice_id": "George",
"stability": 0.5
}'
Errors
| HTTP | When |
|---|---|
400 | Missing/invalid text, voice_id, stability, or similarity |
401 | Invalid auth |
402 | Insufficient credits |
404 | User not found |
429 | Rate limit exceeded |
503 | Voiceover generation not configured |
500 | Server error |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Script to convert to speech (max 10,000 chars). Supports <#x#> tags between words to pause for x seconds (0.01–99.99).
Maximum string length:
10000Eleven v3 voice id — see GET /voiceovers/voices for descriptions and preview clips
Available options:
Aria, Roger, Sarah, Laura, Charlie, George, Callum, River, Liam, Charlotte, Alice, Matilda, Will, Jessica, Eric, Chris, Brian, Daniel, Lily, Bill Higher = more consistent delivery, lower = more expressive
Required range:
0 <= x <= 1How closely the output sticks to the base voice
Required range:
0 <= x <= 1
