POST /v1/audio/speech takes text and returns audio bytes. Three 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. Both Gemini Flash TTS models bill tokens the way every
other Gemini model does and accept up to 8,192 input tokens. They have no rate control,
so a speed other than 1 returns a 400 instead of quietly giving you normal-speed audio.
All three models accept inline expressive tags in input to steer delivery.
