For developers
Text to speech API
One REST API for the 113 ready-made voices in 24 languages, voice design from a description, streaming and batches. It spends the same credits as the web app.
Quickstart
- Create a free account, then a key under Developer.
- Send text with a
catalog_voice_idto/tts/generate. - Download the clip from
/generations/{id}/audio: 48 kHz WAV.
Base URL https://voxmint.app/api/v1. Every response carries an X-Request-ID you can look up in your request log.
curl -X POST https://voxmint.app/api/v1/tts/generate \
-H "Authorization: Bearer $VOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "The tide pulls back, and the bay holds its breath.",
"mode": "speech", "catalog_voice_id": "atlas"}'curl -H "Authorization: Bearer $VOX_API_KEY" \ https://voxmint.app/api/v1/generations/$ID/audio --output take.wav
What the API does
113 voices, one parameter
Pick any catalogue voice with catalog_voice_id. GET /catalog/voices lists them with language, accent, dialect and tags; ids and seeds are stable.
Voice design
Set mode to "design" and pass voice_description. Add a seed to keep the same voice across calls.
Streaming
POST /tts/stream returns chunked WAV as the model produces it: the fastest path to first audio.
Batches
POST /tts/batch voices up to 100 lines with one set of settings. A failed line is refunded and the rest still run.
Expressive tags
Square-bracket tags such as [whispering] or [laughing] in the text add style and sounds.
Logs and usage per key
Every request is logged for 30 days with its request id, and each key reports its characters and requests per month.
import os, requests
BASE = "https://voxmint.app/api/v1"
headers = {"Authorization": f"Bearer {os.environ['VOX_API_KEY']}"}
take = requests.post(f"{BASE}/tts/generate", headers=headers, json={
"text": "こんにちは。今日もいい一日になりますように。",
"mode": "speech",
"catalog_voice_id": "yui",
}).json()
audio = requests.get(f"{BASE}/generations/{take['id']}/audio", headers=headers)
open("hello.wav", "wb").write(audio.content)curl -X POST https://voxmint.app/api/v1/tts/generate \
-H "Authorization: Bearer $VOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Welcome back to the show.", "mode": "design",
"voice_description": "a warm radio host in her forties, relaxed and friendly",
"seed": 4242}'The description is free; only the text counts as characters. More on voice design, and every voice id is on the voices page.
Questions
- Is there a separate API price?
- No. The API and the web app share one balance: one credit per character, two for Chinese, Japanese and Korean characters. See the pricing page for plans and packs.
- Can I use the API on the Free plan?
- Yes. API keys work on every plan. On Free, each generation is capped at 1,000 characters and use is personal; paid plans allow 5,000 per generation and commercial use.
- Is it real-time enough for a voice agent?
- Streaming starts audio quickly, but requests share one model and queue under load. It suits narration, content and product audio better than live phone agents.
- How do I authenticate?
- Create a key under Developer in the app and send it as a Bearer token. Keys have read or write scope, and cannot create other keys.
- Does the API clone voices?
- No. Voice cloning is switched off. Use a catalogue voice, or design one from a description.
Start building
Plans and packs are on the pricing page; the API uses the same balance as the studio.