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

  1. Create a free account, then a key under Developer.
  2. Send text with a catalog_voice_id to /tts/generate.
  3. 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.

Generate
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"}'
Download
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.

Python
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)
Design a voice in the request
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.