Skip to main content
POST
Create a transcription

Authorizations

Authorization
string
header
required

Your workspace secret key, sk_live_ followed by 32 hex characters. Create one in the console under Developers.

Headers

Idempotency-Key
string

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.

Maximum string length: 255

Body

multipart/form-data
file
file
required

The recording. One file per request.

context
string

Who is calling whom and why. Up to 2,000 characters.

Example:

"A call to a university admissions desk about a course and its fees"

vocabulary
string

Names and terms to spell right, comma or newline separated.

Example:

"Mira University, BBA, Aadhaar"

language
string

auto (default), hi, gu, en, mr, pa, bn or ur.

diarize
string

Speaker separation. Default true.

words
string

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.

bytes
integer
required
Required range: x >= 0
cost
object
required

Billing: 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.

created_at
string<date-time>
required
degraded
boolean | null
required

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.

diarize
boolean
required
duration_s
number | null
required

The recording's length in seconds, known once decoding has started.

Required range: x >= 0
error
object | null
required

Why 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.

file_name
string
required
finished_at
string<date-time> | null
required
id
string
required

The job id; also the reference of its wallet transaction (kind transcription).

Pattern: ^trn_[0-9A-Z]{26}$
language
string | null
required

The language you forced, or null for automatic detection.

model
string | null
required

The model that produced the transcript, once completed (mira-transcribe-offline-1).

object
any
required
source
enum<string>
required
Available options:
upload,
url
status
enum<string>
required

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.

Available options:
queued,
decoding,
merging,
completed,
failed
words
boolean
required
diarization
object

Completed jobs, GET by id only.

draft
object[]

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.

segments
object[]

Completed jobs, GET by id only.

text
string

The whole transcript; completed jobs, GET by id only.