> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Transcription

> Daily supports both real-time transcription during calls and post-call transcription of recordings, both powered by Deepgram.

<Badge color="blue">Paid plans only</Badge>

Daily supports two transcription modes:

* **Real-time** — transcription runs during a call and streams text to all participants as speech is detected. Powered by [Deepgram](https://deepgram.com).
* **Post-call** — submit a recording ID or media URL to the [Batch Processor API](/reference/rest-api/batch-processor/index) after a call ends. It produces a transcript in `txt`, `srt`, `vtt`, or `json` format, and can optionally generate a written summary.

## Pricing

Transcriptions are charged based on usage and Deepgram model. For real-time, you pay per unmuted participant minute. For post-call, you pay per recorded minute. See the [transcription pricing page](https://www.daily.co/pricing/video-sdk/#transcription-ai) for billing details.

## Permissions

To dynamically start or stop a real-time transcription from a client, a participant must have `canAdmin: 'transcription'`. Meeting owners always have this permission.

Non-owners can be granted it in two ways:

* **At join time**: include `canAdmin: ['transcription']` in their [meeting token's `permissions`](/reference/rest-api/meeting-tokens/create-meeting-token#body-properties-permissions).
* **Dynamically**: a meeting owner calls `updateParticipant()` with `updatePermissions: { canAdmin: new Set(['transcription']) }`.

## Storage

By default, real-time transcripts are generated and broadcast to participants but not saved. To persist transcripts as WebVTT files, set `enable_transcription_storage: true` at the room or domain level. While transcription is active, the file is written to storage every two minutes; the final version is written when transcription ends.

Transcripts are stored in Daily's cloud by default. For HIPAA use cases or custom storage, configure the `transcription_bucket` domain property — the setup process is the same as [configuring a custom S3 bucket for recordings](/docs/guides/features/recording/custom-s3-storage):

```json theme={null}
"transcription_bucket": {
  "bucket_name": "notes-bucket",
  "bucket_region": "me-central-1",
  "assume_role_arn": "arn:aws:iam::123456789000:role/DAILY_ROLE",
  "allow_api_access": true
}
```

## Real-time transcription APIs

Real-time transcription streams speech-to-text to all call participants as it's detected. By default, transcripts are ephemeral — participants receive [`transcription-message`](/reference/daily-js/events/transcription-events#transcription-message) events but nothing is persisted. Enable `enable_transcription_storage` at the room or domain level to save transcripts as WebVTT files, accessible after the call via the `/transcript` REST endpoints or a webhook notification.

<CardGroup cols={2}>
  <Card title="daily-js" icon="js" href="/docs/daily-js/features/transcription">
    Start and manage transcription from a call object. Includes full parameter reference and a complete live captions example.
  </Card>

  <Card title="Daily React" icon="react" href="/docs/daily-react/docs/transcription">
    Overview of the `useTranscription` hook to manage and control transcriptions — with a complete live captions example.
  </Card>

  <Card title="REST API" icon="server" href="/docs/rest-api/transcription">
    Guide to all transcription-related REST endpoints: real-time management, auto-start via meeting tokens, post-call transcription, and storage.
  </Card>
</CardGroup>

## Post-call transcription

The [Batch Processor API](/reference/rest-api/batch-processor/index) generates transcripts and summaries from existing recordings or any publicly accessible audio/video URL. Use it when you need to transcribe a call after it ends, or process media that wasn't transcribed live.

See the [REST API transcription guide](/docs/rest-api/transcription#post-call-transcription) for details on submitting post-call transcription jobs and retrieving results.
