Quickstart
-
Get a key
Create an account at speechrouter.ai, verify your email (that unlocks the $2 welcome credit), and mint an API key in the console. Keys look like
sk_sr_…— send them as a Bearer token. -
Transcribe a file
Terminal window curl -s https://api.speechrouter.ai/v1/audio/transcriptions \-H "Authorization: Bearer $SPEECHROUTER_API_KEY" \-F model=deepgram/nova-3 \-F file=@meeting.wavimport { SpeechRouter } from 'speechrouter'const sr = new SpeechRouter({ apiKey: process.env.SPEECHROUTER_API_KEY })const result = await sr.transcribe({model: 'deepgram/nova-3',file: new Blob([await fs.promises.readFile('meeting.wav')]),})console.log(result.text)from speechrouter import SpeechRoutersr = SpeechRouter(api_key=os.environ["SPEECHROUTER_API_KEY"])with open("meeting.wav", "rb") as f:result = await sr.transcribe(model="deepgram/nova-3", file=f)print(result["text"]) -
Stream live audio
import { SpeechRouter } from 'speechrouter'const sr = new SpeechRouter({ apiKey: process.env.SPEECHROUTER_API_KEY })const stream = sr.listen({model: 'soniox/stt-rt-v5',fallbacks: ['deepgram/nova-3'], // automatic mid-stream failoversampleRate: 16000,})stream.on('transcript', (t) => {if (t.is_final) console.log(t.text)})// feed 16-bit PCM chunks as they arrive from your mic / telephony legstream.sendAudio(pcmChunk)from speechrouter import SpeechRoutersr = SpeechRouter(api_key=os.environ["SPEECHROUTER_API_KEY"])async with sr.listen(model="soniox/stt-rt-v5",fallbacks=["deepgram/nova-3"]) as stream:await stream.send_audio(pcm_chunk) # 16-bit PCMasync for event in stream:if event["type"] == "transcript" and event["is_final"]:print(event["text"]) -
Switch models
Every model is a slug:
provider/model. Change the slug, keep everything else:deepgram/nova-3 fastest general Englishsoniox/stt-rt-v5 60+ languages, session-billedopenai/gpt-4o-transcribe LLM-grade accuracyspeechmatics/melia-1 56-language code-switching batchThe full, live list with prices:
GET /v1/modelsor the providers section.