Get transcription status
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).
Authorization
apiKey In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/transcriptions/string"{ "transcription_id": "string", "media_id": "string", "title": "string", "duration_seconds": 0, "status": "processing", "language": "string", "speaker_labels": true, "speaker_count": 0, "credits_charged": 0, "media_type": "image", "created_at": "string", "completed_at": "string"}Transcribe a media file POST
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.
Delete a transcription DELETE
Removes the job from the list and from every read endpoint. The uploaded media stays in your library, so the same `media_id` can be transcribed again, and that re-run is a cache hit, not a second charge.