Put Unmixr voices inside your product
One REST API for text to speech, your cloned voices, and long-form narration. Send JSON, get audio back — synchronously for short copy, or as a background job that calls your server the moment each paragraph is ready.
- REST over HTTPS, JSON in and out
- Bearer token auth
- MP3 or WAV
- 100+ languages
curl -X POST 'https://unmixr.com/api/v2/short-tts/' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"text": "Welcome back. [pause:500ms] Ready.",
"voice_id": "VOICE_UUID",
"output_format": "mp3",
"response_type": "url"
}'
Everything you can call
The whole surface, from picking a voice to checking what a job will cost. Base URL https://unmixr.com/api/v2/.
/short-tts/
Synchronous speech for up to 2,000 characters. The audio comes back in the same response as a URL, base64, or raw bytes.
/long-tts/
Full scripts as a background job. Returns 202 immediately, then generates paragraph by paragraph with its own audio file for each.
/long-tts/:project_id/
Job status and finished audio, for when you would rather poll than receive callbacks.
/voices/
The voice catalog, filterable by language and gender. Retrieve a single voice with /voices/:uuid/.
/cloned-voices/
Voices cloned on your own account. They take the same voice id as any catalog voice.
/credits/
Your credit balance plus the request limits currently in force for your plan.
/credits/estimate/
Prices a request before you run it. Free to call, and nothing is generated.
Two ways to generate
Short copy answers in the same request. Anything book-length runs as a job so a slow chapter never holds a connection open.
Short TTS
Synchronous. Best for chat replies, notifications, IVR prompts, and anything a user is waiting on.
- Up to 2,000 characters per request
- Audio returned as
url,base64, orbytes - Inline direction:
[pause:500ms],[style:cheerful] - Optional per-request pronunciations that override your library
Long TTS
Asynchronous. Built for audiobooks, courses, and articles where the script arrives all at once.
- Responds
202immediately, generates per paragraph - A separate audio file per paragraph, plus chapter structure
- Signed callbacks as each paragraph lands, or poll the status endpoint
- Credits are consumed per paragraph as it succeeds, not up front
Automate the whole loop
Callbacks and credit checks are part of the API, so a pipeline can run start to finish without anyone watching it.
Signed callbacks
Give a generation request a callback URL and Unmixr posts JSON to it as work completes.
- Events for completion and failure, per paragraph and per project
- Every delivery is signed, so you can verify it came from Unmixr
- The status endpoint stays available as a fallback
Know the cost first
Estimate before you spend, and read your own limits rather than hard-coding them.
POST /credits/estimate/prices a request for freeGET /credits/returns balance and live plan limits- Failed work is never charged, so retries stay safe
Request limits by plan
How much one Long TTS request can carry. These are sizes of input text — billing is separate and always in credits.
| Plan | Text per request | Paragraphs | Chapters |
|---|---|---|---|
| Standard | 30,000 characters | 100 | 20 |
| Premium / Starter | 60,000 characters | 200 | 40 |
| Pro | 100,000 characters | 350 | 60 |
| Studio / Teams | 200,000 characters | 500 | 100 |
Every plan allows 5,000 characters per paragraph. Your own numbers are always available under long_tts_limits in GET /api/v2/credits/, and a request over the limit is rejected with a 422 rather than partially generated.
Live in three steps
No SDK to install and no build step — if your language can make an HTTP request, it can call Unmixr.
Create a key
Generate an API key under Manage API Keys in the app and send it as Authorization: Bearer.
Pick a voice
Call /voices/ and keep the uuid you want, or use one you have cloned on your account.
Generate
Post your script to /short-tts/ or /long-tts/ and take the audio.
Start building
The reference has runnable cURL, Python, and JavaScript for every endpoint. Try a call in the playground first if you would rather not write code yet.
Still have a question?
If you have a specific use case or need help configuring a custom workflow, our team is always here for you. We would love to listen to your needs!