POST https://api.pinference.ai/api/v1/audio/transcriptions transcribes an audio file and returns its text, and optionally its segments and words with timestamps. Prime Inference serves six speech-to-text models. They don’t take Chat Completions requests.
-H "X-Prime-Team-ID: your-team-id" to each request. See team billing.
Send the audio
A request carries its audio in exactly one of three ways:
Prime Inference downloads an
audio_url itself, so the file must be reachable from the public internet over http or https. A signed URL from your storage provider works. URLs to private or internal addresses are refused, and the URL can be at most 2,048 characters. Prime Inference doesn’t log audio URLs or transcripts.
Accepted formats are WAV, MP3, FLAC, Ogg (including Opus), AAC, M4A, AIFF, CAF, AMR, AU and WMA, and the audio track of MP4, MOV, MKV, WebM, AVI and 3GP video. With an upload, the file name’s extension names the format. With base64, set input_audio.format.
Long audio
Files up to several hours long are supported. Two hours of audio is usually 30 to 115 MB, more than an upload holds, so send long files byaudio_url. A transcription runs for at most 10 minutes. As a guide, two hours of audio takes Qwen3-ASR 1.7B about 4 minutes, so set your client’s timeout to 10 minutes for long files.
Long files need a direct request to Prime Inference. OpenRouter stops waiting for a transcription after 60 seconds and sends audio only as base64.
Request fields
Response
Withresponse_format: "json":
With
response_format: "verbose_json" and timestamp_granularities: ["segment", "word"]:
words is shortened here. start and end are in seconds from the start of the audio. language is the detected or requested language, and is null for models that don’t report one. How a transcript splits into segments depends on the model. Each response also has an X-Inference-Id header; share it with support to trace a request.
Usage and billing
Transcription is billed per second of audio,usage.seconds, at the price in the model catalog. There is no charge for the text returned.
Errors
Most errors return anerror object with message, type and code, as the Chat Completions API does. A 401, a 404, or a 503 while authentication is unavailable returns a detail message instead.
Compatibility
A multipart request takes the same fields as OpenAI’s transcription API, so an OpenAI client works after you change its base URL and API key. A JSON request takes theinput_audio shape that OpenRouter sends. audio_url is specific to Prime Inference. response_format takes json and verbose_json only.