Create a transcription
Upload a recording (up to 45 MB, up to two hours, any common audio format) and get a job back straight away with 202. Then read it with Get a transcription until status is completed or failed.
Pick the file in the file field before you send. context and vocabulary are optional but help a lot with names and brand terms.
Prefer to send a link? Switch the body to raw JSON with an https url (up to 200 MB) instead of file; every other field is the same.
The Idempotency-Key makes a retry safe: the same key returns the job it already created, with no second charge.
Authorizations
Your workspace secret key, sk_live_ followed by 32 hex characters. Create one in the console under Developers.
Headers
Up to 255 characters. The same key within 24 hours replays the first answer and creates nothing new. Build it from your own record, such as order-8842-reminder-1.
255Body
The recording. One file per request.
Who is calling whom and why. Up to 2,000 characters.
"A call to a university admissions desk about a course and its fees"
Names and terms to spell right, comma or newline separated.
"Mira University, BBA, Aadhaar"
auto (default), hi, gu, en, mr, pa, bn or ur.
Speaker separation. Default true.
Word timings on each segment. Default false.
Response
Accepted
An offline transcription job. Lists carry the job without text, segments, draft or diarization; GET /v2/transcriptions/{id} adds them.
x >= 0Billing: pending until the job finishes; then charged once (₹18 per hour of audio, rounded up to a paisa) or free (degraded or failed). amount_inr is the job's charge at the rate frozen when it was accepted; the wallet transaction (kind transcription, reference = the job id) records what the balance moved.
Once completed: true when the merge step was unavailable, so text is a single decoding pass without speaker roles; a degraded job is free. null until completed.
The recording's length in seconds, known once decoding has started.
x >= 0Why a failed job failed. transcription_failed and audio_too_long are the recording's fault (not audio, damaged, empty, or too long); every other code is a fault on our side, and the same recording can be submitted again. A failed job is free.
The job id; also the reference of its wallet transaction (kind transcription).
^trn_[0-9A-Z]{26}$The language you forced, or null for automatic detection.
The model that produced the transcript, once completed (mira-transcribe-offline-1).
upload, url queued → decoding → merging → completed | failed; there is no progress figure. A job typically completes in about 10 seconds plus 15% of the recording's length; diarization adds about a second.
queued, decoding, merging, completed, failed Completed jobs, GET by id only.
While merging, GET by id only: the strongest single decoding pass, readable seconds after decoding and before the merge finishes. Speaker is empty. Replaced by segments once completed.
Completed jobs, GET by id only.
The whole transcript; completed jobs, GET by id only.