Transcription API

A transcription API that knows who said what

Send an audio or video file and get back a transcript with every line labelled by speaker, by name if you tell us who is in the room. Download it as JSON for your app, or as SRT and VTT subtitles for a video player.

Get an API key · Read the API docs

Start a transcript

curl https://speakersplit.io/v1/jobs \
  -H "Authorization: Bearer $SPEAKERSPLIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "transcribe",
    "audio_url": "https://cdn.example.com/interviews/ceo-call.m4a",
    "speakers": ["Jane Doe", "Sam Lee"],
    "language_code": "en"
  }'

When the job is completed, download any format

curl "https://speakersplit.io/v1/jobs/job_8f3c2a91d4e07b6a5c1f2e3d/transcript?format=vtt" \
  -H "Authorization: Bearer $SPEAKERSPLIT_API_KEY" -o interview.vtt

Five formats from one job

Every transcript job can be downloaded in each format, as often as you like, for 30 days.

formatUse it for
jsonYour own app: each line with its speaker and timestamps.
txtPlain text with speaker names, for reading or search.
mdMarkdown, for show notes and documents.
srtSubtitles for most video players and editors.
vttSubtitles for web video players.

Speaker names, not just labels

Pass the names of the people who might be speaking, as plain names or with a short description like "Host". Each voice is matched to a name, so the transcript reads "Jane Doe:" instead of "Speaker A:". Names said in the recording are picked up too. Pass speakers_expected (1 to 10) when you know how many people are talking.

Languages

Leave language_code out and the language is detected for you, including recordings that switch between languages. Or set it, for example "en", "es" or "de".

Limits and safety

  • 120 requests a minute per API key, and up to 5 jobs running at once per account.
  • Upload local files up to 2 GB with POST /v1/uploads, or pass a public https link as audio_url.
  • Send an Idempotency-Key header and a retried request never starts (or charges) a second job.
  • Unknown parameters are rejected with a 400, so a typo never runs a job with the wrong settings.
  • Result links work for 30 days.

What it costs

Recording lengthCredits
Under 5 minutes1
5 to 30 minutes2
30 to 60 minutes4
60 to 90 minutes6
Each started 30 minutes after that, up to 4 hours+2

Credits are the same ones you use on the website. Plans and credit options are on the pricing page.

See plans and credits

Common questions

Does the transcript include speaker names?

Yes. Every line is labelled by speaker. Names said in the recording are picked up automatically, a speakers list names the rest, and anyone still unnamed keeps a plain label (A, B, C…).

Can I get SRT or VTT subtitles from the API?

Yes. Call GET /v1/jobs/{id}/transcript with format=srt or format=vtt. The same job also gives you json, txt and md.

Does it work on video files?

Yes. Send MP4, MOV or WEBM as well as audio like MP3, WAV, M4A, FLAC and OGG. To get the captions burned into the video itself, use the caption_video tool.

How long can a file be?

Up to 4 hours per job. Upload files of up to 2 GB with POST /v1/uploads, or pass a public https link.

How much does the transcription API cost?

The same as a speaker split: 1 credit under 5 minutes, 2 under 30, 4 under 60 and 6 up to 90 minutes, then 2 more for each started 30 minutes, up to 4 hours.

Related