xai/grok-tts/text-to-speechFrom 3 credits per 1,000 characters

xAI's Grok text-to-speech, generally available since March 2026: 71 preset voices in 20 languages, laughs, breaths and whispers written straight into the script, and a speed slider.

Call it with the model name xai/grok-tts/text-to-speech on POST /jobs/createTask, from 3 credits per 1,000 characters ($0.03). New accounts get 30 free credits to try it in the Playground first.

  • Text to Speech
  • 71 voices
  • 20 languages

Introduction

What it returns

One audio file per task — MP3 at 24 kHz, 128 kbps, mono unless you ask otherwise. There are no word timings or subtitles in the result.

Choosing a voice

voice_id takes one of 71 preset voices and defaults to eve. Eve, Ara, Leo, Rex and Sal speak every supported language. The other 66 are each tuned for one language — Mandarin, Russian, Italian, Hindi, French, Spanish, Danish, Vietnamese, English, Swedish, Finnish, Turkish, Japanese, Korean, Portuguese, Dutch, Polish, Thai, Arabic or German — and read best in it. The form lists every voice with its name, gender and language.

Directing the delivery with tags

Write the performance into text. Instant tags make one sound at that point: [pause], [long-pause], [hum-tune], [laugh], [chuckle], [giggle], [cry], [tsk], [tongue-click], [lip-smack], [breath], [inhale], [exhale], [sigh]. Wrapping tags change the words inside them: <soft>, <whisper>, <loud>, <build-intensity>, <decrease-intensity>, <higher-pitch>, <lower-pitch>, <slow>, <fast>, <sing-song>, <singing>, <laugh-speak>, <emphasis>. The tags we tried were acted out and never read out as words.

Speed, language and format

speed runs from 0.7 to 1.5. language is detected when left on auto; set it when a short or mixed script comes out in the wrong one. output_format is mp3 by default; wav suits editing, and pcm, mulaw and alaw are header-less streams for phone systems — pair them with sample_rate 8000. bitrate only affects MP3.

Request parameters

ParameterRequiredDescription
textYesThe words to be spoken, with optional speech tags such as [laugh] or <whisper>…</whisper>. Billed per 1,000 characters, tags included.
speedNoSpeaking pace. ≥ 0.7 · ≤ 1.5 · Default: 1
bitrateNoMP3 bit rate in bits per second. Only applies to mp3. 32000 · 64000 · 96000 · 128000 · 192000 · Default: 128000
languageNoThe language of the speech. auto · en · zh · ar-EG · ar-SA · ar-AE · bn · fr · de · hi · id · it · ja · ko · pt-BR · pt-PT · ru · es-MX · es-ES · tr · vi · Default: auto
voice_idNoPick from the available voices. ara · eve · leo · rex · sal · jpi39icg · d18jlf6v · 33g9t0jl · 26w6ihxi · dr8gqysu · wy0m9l5w · om17cury · x7avnu1k · bcs7l2c3 · hqxr4yub · h27ltdnz · 89q2pnko · 73xd5dum · 0p0rt7o1 · hbxkrnwm · 69smp8rm · yis75yfp · ekhwx401 · jupvcf34 · 0hhfxxqq · 0ih5oi34 · gwnexu6y · 97zmdc6s · fc7de6afcf6c · 7a9ee820b342 · 0895a5b8ce5c · f8cf5c2c78d4 · 96819d0bd28d · 79f3a8b96d43 · 78a495fdbb39 · e22152e06fd8 · 490ea3be50b1 · 1f046a033914 · dfe7b9e7d217 · c3a2c594479e · 83c6f4fea98e · 34fd4dce1ba3 · d634b6da3d3b · 670a0c3ac005 · 182a91893636 · d0cb9ff07d95 · b1a7441b97a1 · bf9fe5b5f981 · b5ae17439907 · a0401c9101f8 · 23be42535a45 · abfbdf26f115 · 6da5baee46d0 · 3d030bc92a87 · a13662ba951c · 58d27475085e · 247783ebdd51 · 244e27b39200 · 97fabd54445f · 37329fd8895a · 2badb5f46b1e · 1b12d5daee6b · 908c4626660f · 4ff93971bfdc · 70013edeb8e8 · 35c8d7f60dc8 · 23468361b4ef · 458705c07139 · 41321eb41295 · 40f31906b23d · 3a7889066fa2 · Default: eve
sample_rateNoSample rate in Hz. 8000 for phone lines, 44100 or 48000 for studio work. 8000 · 16000 · 22050 · 24000 · 44100 · 48000 · Default: 24000
output_formatNoFile type of the result. mp3 · wav · pcm · mulaw · alaw · Default: mp3
text_normalizationNoRewrite numbers, abbreviations and symbols as spoken words before reading. Default: false
optimize_streaming_latencyNoStreaming latency level: 0 best quality, 1 smaller first chunk, 2 smallest first chunk with more quality trade-off at chunk boundaries. 0 · 1 · 2 · Default: 0

Pricing

Prices are in credits, the same credits you use on the website (1 credit = $0.01). The hold is taken when the task is accepted and settled to the actual charge when it finishes; failed tasks are refunded.

OptionCredits per 1,000 characters≈ USD
Standard2.7$0.027

Each task is rounded up to whole credits, so one run at the lowest tier costs 3 credits per 1,000 characters ($0.03).

For an exact number before you run, send the same body to POST /jobs/quote.

API quick start

Call the Grok TTS API in three steps

  1. Create an API key. Sign in to PopNow and create a key in the API console. Keys start with sk-popnow- and use the same credits as the website.
  2. Send the request. POST /jobs/createTask with model xai/grok-tts/text-to-speech and an input object that follows the parameter table. The response returns a task ID straight away.
  3. Get the result. Poll GET /jobs/recordInfo with the task ID, or pass a callBackUrl and we post the result to it. Download the output links when the task succeeds.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "xai/grok-tts/text-to-speech",
  "input": {
    "text": "Welcome back. Your files finished rendering a minute ago and are ready to download.",
    "voice_id": "eve",
    "language": "auto"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Replace the prompt and any links with your own. The API tab has the response, polling and callback reference.

Grok TTS API questions

How much does the Grok TTS API cost?

Grok TTS costs 3 credits ($0.03) per 1,000 characters. Credits are the same as on the website (1 credit = $0.01), new accounts get 30 free credits, and failed tasks are refunded.

What is the model name for Grok TTS in the API?

Put xai/grok-tts/text-to-speech for Text to Speech in the model field of POST /jobs/createTask.

How do I add laughs, pauses or whispers?

Write them into the text. Instant tags such as [pause], [laugh], [breath] or [sigh] make one sound at that point; wrapping tags such as <whisper>…</whisper>, <slow>…</slow> or <build-intensity>…</build-intensity> change how the words inside are delivered. Tags are acted out rather than read — none of the ones we used appeared in a transcript of the audio — and they count toward the character total.

Which languages and voices can I use?

Eve, Ara, Leo, Rex and Sal speak every supported language; the other 66 voices are each tuned for one language, so pick one whose language matches the script. language takes auto or one of 20 codes. Dutch, Polish, Swedish, Finnish, Danish and Thai voices have no code of their own: leave language on auto for them.

Can it copy a real person's voice?

No. This endpoint offers the 71 preset voices only; there is no cloning and no upload of a reference voice.

What are the limits of the Grok TTS API?

Text length (characters): 15,000; Voices: 71; Languages: 20. Requests outside these limits are rejected before anything is charged.

Can I try Grok TTS without writing code?

Yes. The Playground runs Grok TTS on your PopNow credits, needs no API key, and shows the matching code for every run.

All Grok models

Gemini 3.8 Flash TTS gives a more acted read with two voices in one file. Grok is the one for long scripts in one request.

More about Grok TTS