POST /v1/audio/speech takes text and returns audio bytes. Two models serve it:
Generate speech
Voices
Voices are the provider’s own ids, not OpenAI aliases:eve for Grok, Kore for
Gemini. Ids match case-insensitively, so EVE and kore work too. An unknown voice
returns a 400 listing the ones that model has. GET /v1/models carries the full list
per model, so nothing needs to be hardcoded.
Audio formats
Each model defaults to its native format: mp3 for Grok, wav for Gemini. Gemini generates 24 kHz mono PCM and nothing else, so it serveswav and pcm only.
Asking a model for a format it cannot produce returns a 400 rather than quietly
substituting another one.
Limits and billing units
Grok Voice bills per character of input, capped at 15,000 characters per request, andspeed accepts 0.7 to 1.5. Gemini Flash TTS bills tokens the way every other
Gemini model does and accepts up to 8,192 input tokens. It has no rate control, so
a speed other than 1 returns a 400 instead of quietly giving you normal-speed audio.
Both models accept inline expressive tags in input to steer delivery.
