Transcription

A timed transcript of an audio or video recording, with captions files.

  • Price1 credit (10p) per started 10 minutes
  • Typical time30 s to 15 min
  • Scopemedia:write
  • Runs asA background job
Try it

Run transcription in the sandbox

No key and nothing to pay. The sandbox returns a realistic example in a couple of seconds; no AI runs and no data is kept.

  1. Queued202 and a job id, straight away
  2. ProcessingPoll, stream or wait for a webhook
  3. SucceededResult and files on the job
Every AI request runs as a background job, so nothing times out.

Upload the recording with POST /v1/files (up to 500 MiB) and send its file_id. The transcript keeps the speaker's own language and hesitations; each segment and word has start and end times in milliseconds (word_timing says whether word times come from the provider or are estimated within measured speech). Saves transcript.vtt, transcript.srt and transcript.txt. Recordings can be up to 3 hours. Charged per started 10 minutes of the measured recording; declare duration_seconds to reserve only what you need.

Requires media:write. Costs 1 credit per started 10 minutes. Send a unique Idempotency-Key; reuse it with the identical body when retrying. Returns 202 with a job: poll GET /jobs/{job_id}, stream GET /jobs/{job_id}/events, or use a signed webhook.

Transcription

POST/v1/transcriptions

Scope media:write

Headers

Transcription: headers
FieldDetails
Idempotency-KeystringRequiredA unique key per new operation; reuse it with the identical body when retrying.
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Request body

Transcription: request body
FieldDetails
fileFileReferenceRequiredAn audio or video recording uploaded with POST /v1/files (MP4, MOV, WEBM, M4A, MP3, WAV or OGG, up to 500 MiB).
file_idfile.file_idstringRequiredThe id returned by POST /v1/files, after POST /v1/files/{id}/complete reported ready.Pattern ^file_[a-f0-9]{32}$
duration_secondsinteger, optionalThe recording's length, if you know it. EduMark reserves credits for this length and charges for the measured length; without it the 3-hour maximum is reserved.1 to 10,800

Responses

StatusMeaning
202Successful Response
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
402Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.