File upload

Audio and video transcription API

Send an audio file or video file to the transcription API. Get speech-to-text output with timestamps, optional speaker labels and a language for every segment. Upload up to 95 MB in one request or up to 2 GB in resumable chunks.

  • Up to 95 MB in one request
  • Up to 2 GB in resumable chunks
  • Media deleted 24 hours after the job ends

How it works

Ten file types
mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm and mkv. The file needs an audio track.
One request for small files
Send multipart/form-data to POST /v1/transcriptions. This works up to 95 MB.
Chunked uploads up to 2 GB
Reserve an upload, send each chunk of about 8 MiB, then complete it. An interrupted upload can resume.
Long recordings
AI transcription accepts media up to 5 hours. Longer media fails with media_too_long and is not charged.
Short media retention
Uploaded media is deleted 24 hours after the transcription reaches a final status. The transcript stays until you delete it.

Small files

Use the audio transcription API for files up to 95 MB

Send the recording in a part named file. language, diarize, source and webhook_url are optional form fields. Add a webhook to receive the result status.

cURL
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F [email protected] \
  -F language=auto

Large files

Resumable upload for larger audio and video files

For a file up to 2 GB, reserve the upload with its name and size. The response lists the chunks and an X-Upload-Token for this one upload.

Reserve an upload
curl -X POST "https://api.transcript1.com/v1/transcriptions" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Idempotency-Key: interview-2026-10-13" \
  -H "Content-Type: application/json" \
  -d '{"upload":{"filename":"interview.m4a","size":48210334,"mime_type":"audio/mp4"}}'

Finish

Send chunks, then complete

PUT each chunk to its URL with the upload token, then complete the upload. transcript1 checks every chunk and queues the transcription.

Chunk and complete
curl -X PUT "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/chunks/0" \
  -H "X-Upload-Token: t1u_..." \
  -H "Content-Type: application/octet-stream" \
  --data-binary @chunk-0.bin

curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/complete" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"

Start with 60 free minutes

60 free minutes after you verify your email. No card required.

Get your API key

Frequently asked questions

Something missing? Ask support

Which files does the audio and video transcription API accept?

mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm and mkv. Any other extension returns 422 unsupported_media, and the file must contain an audio track.

What are the size limits?

A one-shot upload can be up to 95 MB. A chunked upload can be up to 2 GB, although your plan may lower that. A file over the limit returns 413 media_too_large.

How long do you keep my files?

Uploaded media is deleted 24 hours after the transcription reaches a final status. An upload that is not completed within 24 hours is canceled and its chunks are deleted. The transcript stays until you delete it.

Can I get speaker labels for a file?

Yes. Set diarize to true and the file is transcribed with Speaker 1, Speaker 2 labels. Uploads are always transcribed with AI speech-to-text.