Transcription Providers

Choose the right transcription engine for your meeting bots
View as Markdown

Every MeetStream bot can transcribe its meeting — you pick the engine per request. Configure exactly one provider under recording_config.transcript.provider:

1{
2 "meeting_link": "https://meet.google.com/abc-defg-hij",
3 "bot_name": "Notetaker",
4 "recording_config": {
5 "transcript": {
6 "provider": { "deepgram": { "model": "nova-3" } }
7 }
8 }
9}

Post-call vs live

Post-call providers transcribe the recording after the meeting and produce a speaker-labeled transcript you fetch by transcript_id:

ProviderDefault modelNotable
Deepgramnova-3Diarization, smart formatting, keywords on by default
AssemblyAIuniversal-2Speaker labels, optional PII redaction and chapters
Sarvamsaaras:v3Indic-language strength, transcribe or translate modes
MeetStream enginein-houseAuto language detection, optional translation
JigsawStackAuto language, per-speaker output
Meeting captionsnativeThe platform’s own captions (Google Meet / Teams), zero config

Streaming providers push live transcript chunks to your webhook during the meeting:

ProviderDefault modelModes
Deepgram Streamingnova-2sentence (default), word, raw
AssemblyAI Streaminguniversal-streaming-englishraw (default), sentence

Streaming setup needs one extra field — live_transcription_required.webhook_url — see Live Transcription.

Streaming providers (and meeting_captions) deliver their text during the call and do not produce a post-call transcript: their webhook pipeline ends at audio.processed, with no transcription.processed or bot.done. If you need both live and post-call output, run a streaming provider live and re-transcribe afterwards.

Fetching post-call transcripts

  1. Resolve the transcript_id via GET /api/v1/bots/{bot_id}/detail.
  2. GET /api/v1/transcript/{transcript_id}/get_transcript returns the formatted transcript — an array of {speaker, transcript, start_time, end_time, words[]} with per-word confidence and speaker attribution. Add ?raw=true for the provider’s raw output.
  3. GET /api/v1/bots/{bot_id}/transcriptions lists every transcription run with status (Success / Processing / Failed) and presigned download URLs (valid 1 hour).

Re-transcribe any recording

Recorded audio can be transcribed again with any provider — different engine, different language — without re-recording:

$curl -X POST "https://api.meetstream.ai/api/v1/bots/<BOT_ID>/transcribe" \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{ "provider": { "assemblyai": {} } }'

CLI: meetstream transcribe <bot-id> -p <provider>.