What /tts/v1 does now
The URL keeps working. POST /tts/v1/audio/speech is an alias for
POST /v1/audio/speech — the same handler, the same
audio — so a caller that only changes its key needs no other change:
- Auth is your
sk_live_API key, the one you mint in the console under Developers. The oldmira_speech keys are retired; if you are still holding one, get ansk_live_key from the quickstart. modelismira-tts, andmira-tts-v51is accepted as an alias, so an existing body keeps working unchanged.- Everything else follows the current endpoint — voices,
pcmstreaming, the 2,000-character ceiling, the response headers, the price, the wallet it debits, and the request log. One contract, documented in one place. - The options below that were unique to this endpoint —
speech_ready,instructions,lexiconandnumbers— are no longer applied. They are ignored, not rejected.
The original endpoint
The speech endpoint is the voice from our agents, on its own. Send text, get a WAV back. It takes the same request shape as the OpenAI audio API, so any OpenAI SDK works by swappingbase_url and the key.
The engine speaks Hindi, English and the Hinglish in between, plus Gujarati in
beta. Five more languages — Telugu, Tamil, Marathi, Kannada and Bengali —
arrive over the next two months: see the language roadmap.
Calling the alias
The old body, the new key:wav by default. Ask
for "response_format": "pcm" and it streams, which is what you want in a
live pipeline — see the TTS quickstart.
Request
Read as history. On the alias,
model, input, voice and response_format
behave as the TTS quickstart documents — input goes up
to 2,000 characters and pcm streams — and the four fields below that are ours
alone are ignored.model is a stable public name, not the build number. It always points at the
current production voice, which we upgrade underneath you — so a clip you
generate today may sound better than one from last month without your code
changing.The rewrite pass
Raw text is rarely speech-ready.97% should be read as “ninety-seven
percent”, a product name should not be transliterated, and a bare URL should
not be spelled out character by character. By default we run your text through
a rewrite that fixes exactly that, preserving meaning, before it reaches the
engine.
Every response carries a header naming what happened:
fallback is a degradation, never an error: you still get audio and still get
a 200. If you are debugging pronunciation and the header says fallback, the
rewrite is not what shaped that clip.
Skip the rewrite
Listing models
mira-tts-v51 is still accepted in a request body; it is no longer listed.
Errors
Errors use the same envelope as the rest of the API — see Errors.404 Not Found
invalid_request, unauthorized, insufficient_balance, at_capacity,
rate_limited, model_not_found, upstream_error. See
When something fails.
Using an OpenAI SDK
The shape matches, so point the client at us and keep your code:lexicon, numbers, instructions and speech_ready are ours, not
OpenAI’s. SDKs that validate their request body may reject them — send those
with a plain HTTP client, or use extra_body where your SDK supports it.