Transcription Providers
Every MeetStream bot can transcribe its meeting. You pick the engine per request, under recording_config.transcript.provider:
recording_config.transcript.provider is the only place transcription is read from. An old top-level transcription field is ignored, and the bot records without a transcript.
Post-call vs live
Post-call providers transcribe the recording after the meeting and produce a speaker-labeled transcript you fetch by transcript_id:
Streaming providers push transcript updates to your webhook during the meeting:
Streaming needs one extra field, live_transcription_required.webhook_url. See Live Transcription.
Platform support
jigsawstack_streaming is available on Google Meet. On Zoom and Teams, use deepgram_streaming, assemblyai_streaming, sarvam_streaming or meetstream_streaming. See the capability matrix for the rest of each platform.
How many providers you can use
- Post-call: list one provider in each request.
- Streaming: one provider runs. List only the one you want.
- Post-call plus streaming together: allowed. For example
deepgram_streamingfor live captions in your app anddeepgramfor a clean post-call transcript, in the same request. meetstreamandjigsawstackcannot be combined in one request.meeting_captionscan run alongside a streaming provider on Google Meet.
Who supplies the API key
Save your provider keys once in the dashboard under Integrations > Transcription. The Mia Transcribe card is the MeetStream engine and needs no key. The MeetStream engine costs $0.10 for each hour of recording, in addition to the bot rate. See pricing. Using a provider without a saved key fails at create time with 400, for example DeepgramAPIKey not configured in user profile.

Streaming providers (and meeting_captions) deliver their text during the call and do not produce a post-call transcript: their webhook pipeline has no transcription.processed or transcription.failed, though bot.done still fires at the end. If you need both live and post-call output, run a streaming provider live and re-transcribe afterwards.
Fetching post-call transcripts
- Take the
transcript_idfrom the Create Bot response (or fromGET /api/v1/bots/{bot_id}/detail). GET /api/v1/transcript/{transcript_id}/get_transcriptreturns the formatted transcript: an array of{speaker, transcript, start_time, end_time, words[]}with per-word confidence and speaker attribution. Add?raw=truefor the provider’s raw output. While processing it returns202.GET /api/v1/bots/{bot_id}/transcriptionslists every transcription run with status (Success/Processing/Failed) and download links (valid 1 hour).
Details: Post-call transcription.
Re-transcribe any recording
Recorded audio can be transcribed again with any post-call provider (different engine, different language) without re-recording:
- Exactly one provider per request:
deepgram,assemblyai,jigsawstack,sarvamormeetstream. - Returns
200with a newtranscript_idand processes in the background. 409while the bot is still in the meeting.404if no audio was recorded (for example, the bot was never admitted).meetstreamcan be used once per bot (a second request returns409).402if your balance is too low.
CLI: meetstream transcribe <bot-id> -p <provider>.
