Transcribe a media file
Starts a transcription for a media file you uploaded via POST /transcriptions/upload. Credits are charged per minute of audio, plus a surcharge when speaker_labels is requested. Check the balance at GET /balance first.
Responds 202 with status: processing when the ASR worker was dispatched: poll GET /transcriptions/{transcription_id} until status is ready (or failed / no_speech), then fetch the text.
Responds 200 when nothing had to run. That happens when the same audio was already transcribed (the transcript is shared per media, so a re-run is a cache hit and credits_charged is 0), or when the audio is silent, which comes back as no_speech and is not billed.
Passing a media_id that is already in your library re-runs it. That is how a transcript created without diarization is upgraded: ask again with speaker_labels: true and the audio is reprocessed, because the speaker column cannot be added after the fact.
Authorization
apiKey In: header
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/transcriptions" \ -H "Content-Type: application/json" \ -d '{ "media_id": "string" }'{ "transcription_id": "string", "status": "ready", "credits_charged": 0}List transcriptions GET
Returns a paginated list of the workspace's transcription jobs, newest first.
Get transcription status GET
Returns the current state of a transcription job. Poll every **5–10 seconds** while `status` is `processing`. Once `status` is `ready`, fetch the text with `GET /transcriptions/{transcription_id}/transcript` (JSON cues) or `GET /transcriptions/{transcription_id}/download` (SRT, VTT or plain text).