Transcription overview
New to Daily transcription? Start here — covers real-time vs. post-call transcription, pricing, permissions, and transcript storage.
Transcription permissions
Only meeting owners and participants withcanAdmin: 'transcription' can start or stop transcription. See Permissions in the overview for how to grant this.
Transcript storage
By default, transcripts are ephemeral — participants receivetranscription-message events but nothing is persisted. To save transcripts as WebVTT files, enable enable_transcription_storage at the room or domain level. See Storage in the overview for setup details, including custom bucket configuration (Amazon S3 or OCI Object Storage) for HIPAA use cases.
Starting transcription
startTranscription() starts a transcription session. All options are optional — call it with no arguments to use Deepgram defaults.
startTranscription() for the full list of options.
Handling transcription messages
Listen totranscription-message to receive transcript segments in real time:
Updating transcription
UseupdateTranscription() to change which participants are being transcribed while transcription is running:
updateTranscription() to add them.
Stopping transcription
stopTranscription() ends a transcription session. If storage is enabled, the final transcript file is written at this point.
Events
Full payload details are in the transcription events reference.Post-call transcription
To transcribe a recording after a call ends, use the Batch Processor API. See Post-call transcription in the overview for details.Complete example
1
Start transcription when joining
2
Display captions in real time
3
Handle lifecycle events
4
Stop transcription on leave