Speech, decoded.

One API to every speech-to-text model worth using. Compare side by side, route to the best, pay by the second.

Compare models on your audio →Start building

How it works · 3 steps

From audio to transcript in seconds.

1

Upload audio

Drop any audio file — MP3, WAV, FLAC, and 20+ more formats.

Drop audio file

2

Pick a model — or let us

Choose from 30+ models or use our smart router to auto-select by price, speed, or accuracy.

Whisper Large v3

Nova 3

Chirp 2

3

Get a structured transcript

Receive word-level timestamps, speaker labels, and confidence scores in a unified format.

{
  "start": 0.0,
  "end": 2.4,
  "text": "Welcome to...",
  "speaker": "A",
  "confidence": 0.97
}

Built for production, not demos

Everything you'd build anyway.

The stuff that's table-stakes the day you ship a voice product.

One API for every model. Diarization. 100+ languages. Realtime streams. Bring-your-own keys. Real benchmarks. Six things, all built in.

01 / 06

One API, every model

30+ models from 9 providers through a single unified endpoint. One integration, all the options.

provider : "deepgram" →

"assemblyai"

response_shape :{ transcript, words[], speakers[], confidence }

endpoint : POST /v1/transcribe // unchanged

01 / 06

One API, every model

30+ models from 9 providers through a single unified endpoint. One integration, all the options.

provider : "deepgram" →

"assemblyai"

response_shape :{ transcript, words[], speakers[], confidence }

endpoint : POST /v1/transcribe // unchanged

02 / 06

Realtime + batch

WebSocket streaming from mic or file upload. Async batch for pre-recorded audio. Same API.

01:07

~120ms

02 / 06

Realtime + batch

WebSocket streaming from mic or file upload. Async batch for pre-recorded audio. Same API.

01:07

~120ms

03 / 06

Speaker diarization

Identify who said what. Available on supported models with a single flag.

S1

0:02

Quick update — the streaming refactor merged last night.

S2

0:05

Nice. Any change to the latency numbers?

S1

0:09

Down about 15%. I'll post the graph.

03 / 06

Speaker diarization

Identify who said what. Available on supported models with a single flag.

S1

0:02

Quick update — the streaming refactor merged last night.

S2

0:05

Nice. Any change to the latency numbers?

S1

0:09

Down about 15%. I'll post the graph.

04 / 06

100+ languages

From English to Yoruba, with auto-detect on verified models. Code-switching for mixed-language audio.

EN
ES
DE
FR
JA
ZH
AR
HI
PT
RU
KO
IT
TR
PL
NL
SV
TH
VI

+ 86 more

04 / 06

100+ languages

From English to Yoruba, with auto-detect on verified models. Code-switching for mixed-language audio.

EN
ES
DE
FR
JA
ZH
AR
HI
PT
RU
KO
IT
TR
PL
NL
SV
TH
VI

+ 86 more

05 / 06

Bring your own key

Use your existing provider API keys. 100 free minutes per month, 5% platform fee after.

Deepgram

················3f9a

pass-through

AssemblyAI

················a017

idle

05 / 06

Bring your own key

Use your existing provider API keys. 100 free minutes per month, 5% platform fee after.

Deepgram

················3f9a

pass-through

AssemblyAI

················a017

idle

06 / 06

Real benchmarks

WER scores on golden-set audio across 8 categories. Event-driven, not vibes.

WER

01

02

03

06 / 06

Real benchmarks

WER scores on golden-set audio across 8 categories. Event-driven, not vibes.

WER

01

02

03

Five-line integration

If you can call fetch, you can transcribe.

One request. Structured response. No SDK required.

# 1. Request a signed upload URL
curl https://opentranscription.io/api/v1/uploads \
-H "Authorization: Bearer $OT_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "file_name": "interview.mp3", "file_size": 3456789, "mime_type": "audio/mpeg" }'
# → { "upload_url": "...", "file_path": "...", "expires_at": "..." }
# 2. Upload the audio bytes to the signed URL
curl -X PUT "$UPLOAD_URL" --upload-file interview.mp3
# 3. Create the transcription job
curl https://opentranscription.io/api/v1/transcriptions \
-H "Authorization: Bearer $OT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file_path": "$FILE_PATH",
"model": "auto/best",
"language": "en",
"webhook_url": "https://your-app.com/webhooks/ot"
}'
# → we POST a signed event to your webhook_url when the job finishes — no polling required

↳ auto/best routes to the most accurate model by default.

API reference

Ready to transcribe?

One API key. No contracts. No minimum spend.

Compare models on your audio →Get an API key

Pricing · transparent

Pay per second. No subscriptions.

One rate card across every provider. The price you see is the price you pay. BYOK users pay their provider directly.

Start free

Every new account gets 10 free transcriptions, up to 2 hours of audio — no credit card required.

Compare models on your audio →
Pay as you go

From

$0.0007

/ minute

Per-second billing. Top up credits anytime and spend them across every provider.

  • Every model included
  • No monthly minimum
  • Pay only for audio processed
Get an API key
BYOK

5%

routing fee

Already have provider accounts? Bring your keys, pay your provider directly — we add a 5% routing fee on top.

  • Your keys, your provider billing
  • Same playground + ranker
  • First 100 min/mo free, then 5%
Set up BYOK
Enterprise

Custom

For teams with large volumes, custom deployment, or support requirements.

  • Volume pricing
  • Custom deployment options
  • Invoicing + custom terms
Talk to sales

No subscriptions, no minimums.

$0.0007/min

lowest price

40+

models

106

languages

~695ms

lowest latency

Every model worth using

Every model worth using

Deepgram

AssemblyAI

Google Cloud

Speechmatics

OpenAI

Cartesia

Alibaba (Qwen)

The Ranker

Objective benchmarks. No favorites.

We run automated WER benchmarks against golden-set audio across 8 categories — general, medical, legal, technical, conversational, noisy, finance, and code-switching. Benchmarks trigger on every model or pricing change.

Live ranker

#ModelScoreWERLatencyCost/min

01

Ink-Whisper

Cartesia

82.5

22.0%

695ms

$0.0022

02

Whisper Large V3 Turbo

Groq

81.3

14.3%

3.4s

$0.0007

03

GPT-4o Mini Transcribe

OpenAI

81.1

13.6%

2.0s

$0.003

04

Voxtral Mini Transcribe

Mistral (Voxtral)

80.7

12.7%

2.3s

$0.003

05

Whisper Large V3

Groq

79.9

14.4%

3.1s

$0.0019

01

Ink-Whisper

Cartesia

82.5

WER: 22.0%

Latency: 695ms

Cost/min: $0.0022

02

Whisper Large V3 Turbo

Groq

81.3

WER: 14.3%

Latency: 3.4s

Cost/min: $0.0007

03

GPT-4o Mini Transcribe

OpenAI

81.1

WER: 13.6%

Latency: 2.0s

Cost/min: $0.003

04

Voxtral Mini Transcribe

Mistral (Voxtral)

80.7

WER: 12.7%

Latency: 2.3s

Cost/min: $0.003

+35 more models

View full ranker

+35 more models

View full ranker

Ranked by a composite of accuracy, cost, and speed. See methodology

05

Whisper Large V3

Groq

79.9

WER: 14.4%

Latency: 3.1s

Cost/min: $0.0019