Getting Started with Recall.ai Transcription

Transcription using Recall directly is the most convenient option to start transcribing meetings immediately. You can get started right away without needing to consider any third-party providers.

📘

Recall.ai transcription processes data in the US, regardless of what Region you're using.

Quickstart

1. Start a meeting

Start an instant meeting and copy the URL.

2. Configure and create the bot

Call Create Bot while providing the recording_config.transcript.provider with arecallai_streaming object:

curl --request POST \
     --url https://us-east-1.recall.ai/api/v1/bot/ \
     --header "Authorization: $RECALLAI_API_KEY" \
     --header "accept: application/json" \
     --header "content-type: application/json" \
     --data '
{
  "meeting_url": "https://meet.google.com/sft-iwmv-eur",
  "recording_config": {
    "transcript": {
      "provider": {
        "recallai_streaming": {}
      }
    }
  }
}
'

3. Speak for a bit and end the call

After the bot joins the call, talk for a bit with your mic unmuted and then end the call.

📘

Delay on Real-Time Endpoints

Note by default Recall.ai Transcription on webhooks will be delayed by 3-10 minutes unless you set mode to prioritize_low_latency (see below). There is no delay on post-meeting transcript fetching, only on real-time endpoints.

4. Fetch the transcript

📘

Tip: The transcript.done event

While you can receive transcription in real-time (see below), if you just want to fetch the entire transcript after the call, you can do this after receiving the transcript.done Webhook Event.

Call the Retrieve Bot endpoint using the ID of the bot:

curl --request GET \
     --url https://us-east-1.recall.ai/api/v1/bot/2e8ec5a4-a608-4ea0-b9d0-2a12aec3f0f0/ \
     --header "Authorization: $RECALLAI_API_KEY" \
     --header "accept: application/json"

In the response's recordings, the bot's recording will have a transcript object in its media_shortcuts.transcript:

{
  "id": "2e8ec5a4-a608-4ea0-b9d0-2a12aec3f0f0",
  "recordings": [
    {
      "id": "c9d15f08-83a4-4d83-ad1b-3e311bb0f253",
      "media_shortcuts": {
        "transcript": {
          "id": "b2c3c59f-45a4-43a8-9b0f-1bb79ba33580",
          "data": {
            "download_url": "https://us-east-1.recall.ai/api/v1/download/transcript?token=..."
          },
          "provider": {
            "recallai_streaming": {}
          }
        },
        ...
      }
    }
  ],
  ...
}

Simply perform a GET request using the data.download_url to get the full transcript, which is in the following form (see Transcript download schema):

[
  {
    "participant": {
      "id": 100,
      "name": "Darth Vader",
      "is_host": false,
      "platform": "desktop",
      "extra_data": null // Or an object, if the meeting platform provides extra data
    },
    "words": [
      {
        "text": "No, I am your father.",
        "start_timestamp": {
          "relative": 9.730066299438477,
          "absolute": "2025-07-17T00:00:09.730066Z"
        },
        "end_timestamp": {
          "relative": 12.751030921936035,
          "absolute": "2025-07-17T00:00:12.751031Z"
        }
      }
    ]
  },
  {
    "participant": {
      "id": 200,
      "name": "Luke Skywalker",
      "is_host": false,
      "platform": "desktop",
      "extra_data": null
    },
    "words": [
      {
        "text": "No, that's not true.",
        "start_timestamp": {
          "relative": 13.263169288635254,
          "absolute": "2025-07-17T00:00:13.263169Z"
        },
        "end_timestamp": {
          "relative": 16.988412857055664,
          "absolute": "2025-07-17T00:00:16.988413Z"
        }
      }
    ]
  },
  {
    "participant": {
      "id": 200,
      "name": "Luke Skywalker",
      "is_host": false,
      "platform": "desktop",
      "extra_data": null
    },
    "words": [
      {
        "text": "That's impossible!",
        "start_timestamp": {
          "relative": 20.384620666503906,
          "absolute": "2025-07-17T00:00:20.384621Z"
        },
        "end_timestamp": {
          "relative": 22.707609176635742,
          "absolute": "2025-07-17T00:00:22.707609Z"
        }
      }
    ]
  }
]

And that's it! You just created your first transcript 🎉

📘

Take it a step further: Webhooks

Since this transcription is being created in real time, you can also receive webhooks as the meeting transcript is generated. Note by default Recall.ai Transcription on webhooks will be delayed by 3-10 minutes unless you set mode to prioritize_low_latency (see below).

Transcription Modes

Real Time Transcription

Real-time transcription with Recall delivers transcripts as the meeting progresses, with two modes to choose from:

Accurate (prioritize_accuracy) - Default

  • Use case: Real-time transcription where quality is more important than speed
  • Latency: Higher delay but optimized for accuracy (3 - 10 minute delay)
  • Accuracy: Best available quality for real-time scenarios
  • Features: Full feature support including language detection, key terms, and spelling corrections. See the Create Bot API reference for a full list of supported languages.

Low Latency (prioritize_low_latency)

  • Use case: Real-time applications requiring transcripts within seconds of utterance
  • Latency: Minimal delay (typically 1-3 seconds)
  • Accuracy: Good, but may have more errors than accuracy mode

❗️

Low Latency Mode Features

Low latency mode does not support most customizations. Attempting to use these will result in errors:

  • language_code must be set to en (other languages or language detection are not supported)
  • spelling is not supported
  • filter_profanity is not supported.

Async Transcription

Async transcription takes place after the meeting has already ended. This option can't give you real-time insights while the meeting is still going on, but it is more accurate and feature-rich than real-time transcription. It supports all parameters supported by the prioritize_accuracy mode of real-time transcription, namely: language detection, key terms, and spelling correction. See the Create Bot API reference for a full list of supported languages.

Pricing

Recall.ai transcription costs $0.15 per hour of transcription, for both real-time and asynchronous transcription.

FAQ

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.

What languages are supported by Recall.ai Transcription?

Currently, the following language codes are supported:

auto - auto
bg - bg
ca - ca
cs - cs
da - da
de - de
el - el
en - en
en_au - en_au
en_uk - en_uk
en_us - en_us
es - es
et - et
fi - fi
fr - fr
hi - hi
hu - hu
id - id
it - it
ja - ja
ko - ko
lt - lt
lv - lv
ms - ms
nl - nl
no - no
pl - pl
pt - pt
ro - ro
ru - ru
sk - sk
sv - sv
th - th
tr - tr
uk - uk
vi - vi
zh - zh