PopNowAPI Docs
Main content

Grok TTS API reference

71 voices across 20 languages with speech tags

Call Grok TTS from your own code with one PopNow API key. Below are the exact model IDs to send, every input field the model accepts, what each request costs in credits, and a request you can paste into a terminal.

At a glance

Made by
xAI
Output
Audio
From
2.7 credits per 1,000 characters ($0.027)

1 credit = $0.01. A task holds the highest possible charge when it is accepted and settles the real amount when it finishes, rounded up to whole credits; failed tasks are not charged. Ask POST /api/v1/jobs/quote for the exact figure before you run.

Text to Speech

xai/grok-tts/text-to-speech

Price

OptionCredits (per 1,000 characters)US dollars
Default2.7$0.027

Parameters

FieldTypeDefaultAllowedWhat it does
textRequiredstring—up to 15,000 charactersThe words to be spoken, with optional speech tags such as [laugh] or <whisper>…</whisper>. Billed per 1,000 characters, tags included.
voice_idOptionalstringeveara, eve, leo, rex, sal, jpi39icg, d18jlf6v, 33g9t0jl, 26w6ihxi, dr8gqysu, wy0m9l5w, om17cury, x7avnu1k, bcs7l2c3, … (+57)Preset voice. Eve, Ara, Leo, Rex and Sal speak every supported language; the others are tuned for one language.
languageOptionalstringautoauto, en, zh, ar-EG, ar-SA, ar-AE, bn, fr, de, hi, id, it, ja, ko, … (+7)Reading language, or auto to detect it from the text.
speedOptionalnumber10.7 to 1.5Speaking speed from 0.7 (slower) to 1.5 (faster).
output_formatOptionalstringmp3mp3, wav, pcm, mulaw, alawAudio encoding. pcm, mulaw and alaw are raw streams without a file header, for phone systems.
sample_rateOptionalinteger240008000, 16000, 22050, 24000, 44100, 48000Sample rate in Hz. 8000 for phone lines, 44100 or 48000 for studio work.
bitrateOptionalinteger12800032000, 64000, 96000, 128000, 192000MP3 bit rate in bits per second. Only applies to mp3.
text_normalizationOptionalbooleanfalse—Rewrite numbers, abbreviations and symbols as spoken words before reading.
optimize_streaming_latencyOptionalinteger00, 1, 2Streaming latency level: 0 best quality, 1 smaller first chunk, 2 smallest first chunk with more quality trade-off at chunk boundaries.

Example request

This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.

POST /api/v1/jobs/createTask
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: $(uuidgen)" \
  -d '{
  "model": "xai/grok-tts/text-to-speech",
  "input": {
    "text": "Hi there! This voice was created with the PopNow API in just a few seconds."
  }
}'

The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.

GET /api/v1/jobs/recordInfo
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Next steps

On this page