---
updatedAt: 2026-11-05T01:03:33.000Z
agentTools:
  projectIndex: https://docs.recall.ai/llms.txt
---

# Recall.ai Transcription

The recommended, fastest, and easiest-to-use speech-to-text transcription provider. Use Recall.ai’s built-in transcription to generate real-time or post-meeting transcripts.

Recall.ai transcription is the easiest way to get transcripts for a recording because:

* It is preconfigured to work out of the box for the majority of use cases, based on our experience helping thousands of developers implement transcription.
* Unlike third-party providers, it requires no additional setup.

We recommend starting with Recall.ai transcription to see if it meets your needs, and using a <Anchor target="_blank" href="doc:ai-transcription">third-party transcription provider</Anchor> if you need more granular control or custom features.

<Callout icon="📘" theme="info">
  ### Recall.ai Transcription comes at an additional cost

  See pricing for Recall.ai transcription [here](https://www.recall.ai/pricing)​.
</Callout>

Use the following table to choose the right Recall.ai Transcription method and configuration:

| Need                                                                                                               | Transcription method       | Latency                           | Recommended configuration                                                                                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------ | -------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Final transcript after the recording completes                                                                     | Post-meeting transcription | After the recording completes     | Use Recall.ai post-meeting transcription with `recallai_async`. [Skip to this section](#recallai-transcription-for-post-meeting-transcription).                                                                                           |
| Recall.ai customization options, e.g., language detection, key terms, spelling corrections, or profanity filtering | Real-time transcription    | Typically delayed by 3-10 minutes | Use Recall.ai real-time transcription with `recallai_streaming` and `mode: "prioritize_accuracy"`. [Skip to this section](#recallai-transcription-for-real-time-transcription-in-prioritize_accuracy-mode).                               |
| Low-latency transcription with customization options                                                               | Real-time transcription    | Within seconds                    | Use a <Anchor target="_blank" href="doc:ai-transcription">third-party transcription provider</Anchor>.                                                                                                                                    |
| English transcript events during the meeting                                                                       | Real-time transcription    | Within seconds                    | Use Recall.ai real-time transcription with `recallai_streaming`, `mode: "prioritize_low_latency"`, and `language_code: "en"`. [Skip to this section](#recallai-transcription-for-real-time-transcription-in-prioritize_low_latency-mode). |
| Multilingual transcript events during the meeting                                                                  | Real-time transcription    | Within seconds                    | Use a <Anchor target="_blank" href="doc:ai-transcription">third-party transcription provider</Anchor>. Also see <Anchor target="_blank" href="doc:multilingual-transcription">Multilingual Transcription</Anchor>.                        |

<br />

# Quickstart

## Supported transcription workflows

| Workflow                                           | Supported |
| -------------------------------------------------- | --------- |
| Post-meeting transcription                         | ✅ Yes     |
| Real-time transcription with meeting bots          | ✅ Yes     |
| Real-time transcription with Desktop Recording SDK | ✅ Yes     |

## Recall.ai Transcription for post-meeting transcription

You can transcribe a meeting once the recording has been finalized with Recall.ai Transcription.

To use Recall.ai Transcription for post-meeting transcription, set the provider to `recallai_async` in the <Anchor target="_blank" href="ref:recording_create_transcript_create">Create Async Transcript</Anchor> request using the recording ID:

```curl
curl --request POST \
     --url https://RECALL_REGION.recall.ai/api/v1/recording/RECORDING_ID/create_transcript/ \
     --header 'Authorization: RECALL_API_KEY' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "provider": {
    "recallai_async": {
      "language_code": "auto"
    }
  }
}
'
```

Recall.ai post-meeting transcription supports additional transcription options (e.g. `language_code`, `key_terms`, `spelling`, and `filter_profanity`):

| Option             | What it does                                                                                                                                                                            | When to use it                                                                                                                                 | Notes                                                               |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `language_code`    | Sets the language used for transcription. See the [list of supported languages](#supported-languages-for-async-transcription-or-real-time-transcription-with-mode-prioritize_accuracy). | Use this when you know the language being spoken, or set it to `auto` to use language detection.                                               |                                                                     |
| `key_terms`        | Prioritizes important words or phrases during transcription.                                                                                                                            | Use this for product names, company names, acronyms, technical terms, or other domain-specific vocabulary.                                     | Only supported for English (i.e., `en`, `en_au`, `en_uk`, `en_us`). |
| `spelling`         | Applies custom spelling corrections to the transcript output.                                                                                                                           | Use this when specific words or phrases should appear in a consistent format, e.g., product names, company names, acronyms, or people’s names. |                                                                     |
| `filter_profanity` | Controls whether profanity is filtered from the transcript.                                                                                                                             | Use this when transcript output should avoid explicit language.                                                                                |                                                                     |

<Callout icon="📘" theme="info">
  See <Anchor label="post-meeting transcription" target="_blank" href="doc:async-transcription">post-meeting transcription</Anchor> for the full post-meeting transcription implementation, including when to create the post-meeting transcript, which webhook events to listen for, how to retrieve the completed transcript, how to handle transcription failures, and more.
</Callout>

## Recall.ai Transcription for real-time transcription

> Recall.ai real-time transcription is configured at `recording_config.transcript.provider.recallai_streaming`.
>
> Real-time transcript events delivery is configured separately through `recording_config.realtime_endpoints`.

Recall.ai's real-time transcription supports two modes:

| Mode                     | Use this when                                                                             | Latency                                                   | Supported options                                        |
| ------------------------ | ----------------------------------------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------- |
| `prioritize_low_latency` | Your application needs transcript events as quickly as possible.                          | Typically 1-3 seconds after an utterance is finalized.    | Only `language_code: "en"` is supported.                 |
| `prioritize_accuracy`    | Transcript accuracy is more important than receiving each utterance within a few seconds. | Typically delayed by 3-10 minutes on real-time endpoints. | Supports all additional Recall.ai Transcription options. |

### Recall.ai Transcription for real-time transcription in `prioritize_low_latency` mode

<Callout icon="❗️" theme="error">
  #### Supported options for `prioritize_low_latency`

  When `mode` is set to `prioritize_low_latency`, `language_code` must be set to `en`. Do not set `language_code` to `auto` or any non-English language code.

  No other options (e.g., `key_terms`, `spelling`, and `filter_profanity`) are supported in `prioritize_low_latency` mode. Decimal points in decimal numbers will also be omitted (e.g., "one point six" will be `16`). Use `prioritize_accuracy` if you need any of these options.
</Callout>

Use `prioritize_low_latency` when your application needs transcript events as quickly as possible. See below for how to configure this depending on the ingest method.

#### Example requests

<Accordion title="Recall.ai real-time transcription with `prioritize_low_latency` for meeting bots" icon="fa-info-circle">
  To configure Recall.ai real-time transcription for a meeting bot, set `recording_config.transcript.provider.recallai_streaming` in the <Anchor target="_blank" href="ref:bot_create">Create Bot</Anchor> request:

  ```curl
  curl --request POST \
       --url https://RECALL_REGION.recall.ai/api/v1/bot/ \
       --header 'Authorization: RECALL_API_KEY' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '
  {
    "meeting_url": "MEETING_URL",
    "recording_config": {
      // other recording configs
      "transcript": {
        // other transcript configs
        "provider": {
          "recallai_streaming": {
            "mode": "prioritize_low_latency",
            "language_code": "en"
          }
        }
      },
      "realtime_endpoints": [
        {
          "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
          "type": "webhook",
          "events": ["transcript.data"]
        }
      ]
    }
  }
  '
  ```

  See <Anchor target="_blank" href="doc:bot-real-time-transcription">Meeting Bot Real-time Transcription</Anchor> for real-time transcription implementation details.
</Accordion>

<Accordion title="Recall.ai real-time transcription with `prioritize_low_latency` for desktop recording SDK" icon="fa-info-circle">
  To configure Recall.ai real-time transcription for the Desktop Recording SDK, set `recording_config.transcript.provider.recallai_streaming` in the <Anchor target="_blank" href="ref:sdk_upload_create">Create Desktop SDK Upload</Anchor> request:

  ```curl
  curl --request POST \
       --url https://RECALL_REGION.recall.ai/api/v1/sdk_upload/ \
       --header 'Authorization: RECALL_API_KEY' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '
  {
    "recording_config": {
      // other recording configs
      "transcript": {
        // other transcript configs
        "provider": {
          "recallai_streaming": {
            "mode": "prioritize_low_latency",
            "language_code": "en"
          }
        }
      },
      "realtime_endpoints": [
        {
          "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
          "type": "webhook",
          "events": ["transcript.data"]
        }
      ]
    }
  }
  '
  ```

  See [Desktop Recording SDK Real-time Transcription](https://docs.recall.ai/docs/dsdk-realtime-transcription) for real-time transcription implementation details.
</Accordion>

### Recall.ai Transcription for real-time transcription in `prioritize_accuracy` mode

Use `prioritize_accuracy` when transcript quality is more important than receiving each utterance within a few seconds.

This mode is the default for Recall.ai Transcription. When used with real-time endpoints, transcript events are typically delayed by 3-10 minutes. In exchange, this mode supports additional transcription options that are not available in `prioritize_low_latency` mode.

See the table below for the full list of options supported by Recall.ai real-time transcription in `prioritize_accuracy` mode:

| Option             | What it does                                                                                                                                                                            | When to use it                                                                                                                                 | Notes                                                               |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| `language_code`    | Sets the language used for transcription. See the [list of supported languages](#supported-languages-for-async-transcription-or-real-time-transcription-with-mode-prioritize_accuracy). | Use this when you know the language being spoken, or set it to `auto` to use language detection.                                               |                                                                     |
| `key_terms`        | Prioritizes important words or phrases during transcription.                                                                                                                            | Use this for product names, company names, acronyms, technical terms, or other domain-specific vocabulary.                                     | Only supported for English (i.e., `en`, `en_au`, `en_uk`, `en_us`). |
| `spelling`         | Applies custom spelling corrections to the transcript output.                                                                                                                           | Use this when specific words or phrases should appear in a consistent format, e.g., product names, company names, acronyms, or people’s names. |                                                                     |
| `filter_profanity` | Controls whether profanity is filtered from the transcript.                                                                                                                             | Use this when transcript output should avoid explicit language.                                                                                |                                                                     |

<Callout icon="📘" theme="info">
  #### When to use `prioritize_accuracy`

  Use `prioritize_accuracy` when you need language detection, custom vocabulary with `key_terms`, custom spelling corrections, or profanity filtering.

  In this mode, transcript events sent to real-time endpoints are typically delayed by 3-10 minutes, so it may not be suitable for all real-time use cases.

  If you need these features with low latency, use a <Anchor target="_blank" href="doc:ai-transcription">third-party transcription provider</Anchor>. Also see <Anchor target="_blank" href="doc:multilingual-transcription">Multilingual Transcription</Anchor> for details on using a third-party transcription provider for multilingual real-time transcript utterances within seconds.
</Callout>

#### Example requests

<Accordion title="Recall.ai real-time transcription with `prioritize_accuracy` for meeting bots" icon="fa-info-circle">
  To configure Recall.ai real-time transcription for a meeting bot, set `recording_config.transcript.provider.recallai_streaming` in the <Anchor target="_blank" href="ref:bot_create">Create Bot</Anchor> request:

  ```curl
  curl --request POST \
       --url https://RECALL_REGION.recall.ai/api/v1/bot/ \
       --header 'Authorization: RECALL_API_KEY' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '
  {
    "meeting_url": "MEETING_URL",
    "recording_config": {
      // other recording configs
      "transcript": {
        // other transcript configs
        "provider": {
          "recallai_streaming": {
            "mode": "prioritize_accuracy",
            "language_code": "auto"
          }
        }
      },
      "realtime_endpoints": [
        {
          "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
          "type": "webhook",
          "events": ["transcript.data"]
        }
      ]
    }
  }
  '
  ```

  See <Anchor target="_blank" href="doc:bot-real-time-transcription">Meeting Bot Real-time Transcription</Anchor> for real-time transcription implementation details.
</Accordion>

<Accordion title="Recall.ai real-time transcription with `prioritize_accuracy` for desktop recording SDK" icon="fa-info-circle">
  To configure Recall.ai real-time transcription for the Desktop Recording SDK, set `recording_config.transcript.provider.recallai_streaming` in the <Anchor target="_blank" href="ref:sdk_upload_create">Create Desktop SDK Upload</Anchor> request:

  ```curl
  curl --request POST \
       --url https://RECALL_REGION.recall.ai/api/v1/sdk_upload/ \
       --header 'Authorization: RECALL_API_KEY' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '
  {
    "recording_config": {
      // other recording configs
      "transcript": {
        // other transcript configs
        "provider": {
          "recallai_streaming": {
            "mode": "prioritize_accuracy",
            "language_code": "auto"
          }
        }
      },
      "realtime_endpoints": [
        {
          "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
          "type": "webhook",
          "events": ["transcript.data"]
        }
      ]
    }
  }
  '
  ```

  See [Desktop Recording SDK Real-time Transcription](https://docs.recall.ai/docs/dsdk-realtime-transcription) for real-time transcription implementation details.
</Accordion>

<br />

# Additional configurations

## Multilingual transcription with Recall.ai Transcription

In some meetings, participants may speak in more than one language, and you may not know ahead of time which language or languages will be used. In those cases, you can use a transcription provider that supports multilingual transcription. Multilingual transcription generally includes two distinct features:

| Feature            | Description                                                                                        |
| :----------------- | :------------------------------------------------------------------------------------------------- |
| Language detection | Detects the spoken language without requiring you to set a language explicitly.                    |
| Code-switching     | Handles conversations where speakers switch between two or more languages during the same meeting. |

### Multilingual transcription options for post-meeting transcription

Recall.ai Transcription post-meeting transcription supports both language detection and code-switching. Below is an example of how to configure multilingual transcription with Recall.ai Transcription using the <Anchor target="_blank" href="ref:recording_create_transcript_create">Create Async Transcript</Anchor> endpoint:

```json
{
  // ... other Create Async Transcript request options
  "provider": {
    "recallai_async": {
      "language_code": "auto"
    }
  }
}
```

### Multilingual transcription options for real-time transcription

Recall.ai Transcription real-time transcription supports both language detection and code-switching. Below is an example of how to configure multilingual transcription with Recall.ai Transcription using either the <Anchor target="_blank" href="ref:bot_create">Create Bot</Anchor> or <Anchor target="_blank" href="ref:sdk_upload_create">Create Desktop SDK Upload</Anchor>endpoints:

```json
{
  // ... other request options
  "recording_config": {
    // ... other recording options
    "transcript": {
      // ... other transcript options
      "provider": {
        "recallai_streaming": {
          "mode": "prioritize_accuracy",
          "language_code": "auto"
        }
      }
    }
  }
}
```

<br />

# FAQ

## How much does Recall.ai Transcription cost?

| Transcription Mode         | Usage Cost               |
| :------------------------- | :----------------------- |
| Post-meeting transcription | $0.15 per recording hour |
| Real-time transcription    | $0.15 per recording hour |

## What regions can I configure with Recall.ai transcription?

Recall.ai Transcription's processing location is selected automatically based on the [Recall Region](https://docs.recall.ai/docs/regions) where your workspace is located:

| Recall Region    | Transcription Data Processing Location |
| :--------------- | :------------------------------------- |
| `us-west-2`      | US (Oregon, USA)                       |
| `us-east-1`      | US (Oregon, USA)                       |
| `ap-northeast-1` | US (Oregon, USA)                       |
| `eu-central-1`   | EU (Dublin, Ireland)                   |

## What languages are supported with Recall.ai Transcription?

### Supported languages for real-time transcription with `mode: "prioritize_low_latency"`

Only English (that is, `language_code: "en"`) is supported for real-time transcription with `mode: "prioritize_low_latency"`. Any other `language_code` value will fail to transcribe.

### Supported languages for post-meeting transcription or real-time transcription with `mode: "prioritize_accuracy"`

Currently, the following language codes are supported for post-meeting transcription and real-time transcription when `mode: "prioritize_accuracy"`.

```
auto - auto
bg - Bulgarian
ca - Catalan
cs - Czech
da - Danish
de - German
el - Greek
en - English
en_au - English (Australia)
en_uk - English (United Kingdom)
en_us - English (United States)
es - Spanish
et - Estonian
fi - Finnish
fr - French
he - Hebrew
hi - Hindi
hr - Croatian
hu - Hungarian
id - Indonesian
it - Italian
ja - Japanese
ko - Korean
lt - Lithuanian
lv - Latvian
ms - Malay
nl - Dutch
no - Norwegian
pl - Polish
pt - Portuguese
ro - Romanian
ru - Russian
sk - Slovak
sv - Swedish
th - Thai
tr - Turkish
uk - Ukrainian
vi - Vietnamese
zh - Chinese
```

## Do you train AI models using my transcription data?

No, Recall.ai Transcription does not use customer data for any training of AI models.

## Why are my transcripts delayed when using real-time transcription?

When using real-time transcription, the default transcription mode is `prioritize_accuracy`. Transcripts will be delivered within 3-10 minutes of when the original words were spoken.

## How does the transcript quality differ between Recall.ai's real-time `prioritize_accuracy` vs Recall.ai's post-meeting transcription?

The quality will be the same because both of these transcription methods use the same underlying transcription model and offer the same transcription config options.

## Does Recall.ai Transcription expose `provider_data` payloads (real-time or post-meeting)?

No. When you use Recall.ai Transcription, Recall is the transcription provider so there isn’t any separate third-party `provider_data` payload to return.

If you’re following the docs for [Third-Party Transcription](https://docs.recall.ai/docs/ai-transcription#how-to-get-custom-fields-from-your-transcription-provider) to get the provider data payloads, you should know that for Recall.ai Transcription:

* Real-time: You will not receive `transcript.provider_data` events. Subscribe to `transcript.data` instead.
* Post-meeting: `transcript.data.provider_data_download_url` is not applicable for Recall.ai Transcription. This will always return `[]`.

## How to redact PII from transcript?

Recall doesn't support PII redaction natively and you'll need to use a third-party transcription provider if you require PII redaction.

As a light alternative, Recall.ai transcription supports [predefined spelling replacements](https://docs.recall.ai/docs/recallai-transcription#recallai-transcription-for-real-time-transcription-in-prioritize_accuracy-mode) for known words or phrases in post-meeting transcription or real-time `prioritize_accuracy` mode. Note that these replacements aren't general PII detection though as you need to define which words to match on and what to replace it with.

<br />