xai/grok-stt/speech-to-textFrom 0.01 credits per second

xAI's Grok speech-to-text, generally available since April 2026: send an audio URL and get the transcript back as text. 25 languages with automatic detection, separate transcripts per channel, key-term hints and numbers in written form.

Call it with the model name xai/grok-stt/speech-to-text on POST /jobs/createTask, from 0.01 credits per second ($0.0001). New accounts get 30 free credits to try it in the Playground first.

  • Speech to Text
  • 25 languages

Introduction

What it returns

The transcript as text on the task result, plus output.transcript: the detected language and language code, the audio length in seconds, and every word with its start and end time in seconds. With multichannel on, output.transcript.channels holds the same for each channel. Speaker labels are not included.

Sending audio

audio_url takes an uploaded MP3 or WAV, or a public URL to MP3, WAV, M4A, FLAC, OGG, Opus, AAC, MP4 or MKV, from 1 second to 2 hours. The URL has to answer with the audio itself. Raw audio without a file header (PCM, μ-law, A-law) is not accepted.

Language and numbers

Leave language empty and the language is detected; speech in any of the 25 supported languages is transcribed either way. text_normalization needs language.

Key terms and filler words

keyterms takes up to 100 terms of up to 50 characters, one per row. In our test "Xandrelle" and "Qorvessa" came back as "Xandrel" and "Corvessa" without them and exactly right with them. filler_words keeps um and uh, which are removed by default.

Several channels

Turn on multichannel for recordings with each speaker on their own channel. Each channel is transcribed separately and returned on its own line, in channel order. Leave it off only when every channel carries the same sound: in our tests a stereo file with a different speaker on each side came back with one of the two speakers missing.

Request parameters

ParameterRequiredDescription
audio_urlYesThe voice or music track to use.
filler_wordsNoKeep filler words such as um and uh in the transcript. Default: false
keytermsNoNames and terms to spell the way you list them, up to 100. Default: []
languageNoThe language of the speech. ar · cs · da · nl · en · fil · fr · de · hi · id · it · ja · ko · mk · ms · fa · pl · pt · ro · ru · es · sv · th · tr · vi
multichannelNoTranscribe each channel separately, one line per channel. Turn on when speakers are on separate channels. Default: false
text_normalizationNoWrite spoken numbers, prices, dates and units in digits. Needs language. Default: false

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 second≈ USD
Standard0.01$0.0001

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

API quick start

Call the Grok STT 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-stt/speech-to-text 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-stt/speech-to-text",
  "input": {
    "audio_url": "https://media.popnow.ai/shortfilm/voices/Aoede-46e4c427.mp3"
  }
}'

# 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 STT API questions

How much does the Grok STT API cost?

Grok STT costs 0.01 credits ($0.0001) per second. 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 STT in the API?

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

What comes back?

The transcript as text on the task result, plus a structured transcript (output.transcript) with the detected language, the audio length and every word with its start and end time in seconds — per channel when multichannel is on. There is no file to download. Speaker labels are not included.

Can it tell speakers apart?

Not by voice: speaker labels are not returned. If each speaker was recorded on a separate channel, as in many call recordings, turn on multichannel and each channel comes back on its own line. Leave it off and one side can go missing: in our two tests with a different speaker on each channel, one of them was dropped from the transcript.

Which audio can I send?

An uploaded MP3 or WAV, or a public URL to common formats such as MP3, WAV, M4A, FLAC, OGG, Opus, AAC, MP4 or MKV, from 1 second to 2 hours long. Raw audio without a file header is not accepted.

What are the limits of the Grok STT API?

Largest upload: 90 MB; Languages: 25. Requests outside these limits are rejected before anything is charged.

Can I try Grok STT without writing code?

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

All Grok models

HeartMuLa Transcribe is tuned for sung lyrics over music; Grok handles spoken audio.

More about Grok STT