Getting Started with Recall.ai Transcription

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

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
  • Limitations:
    • English only (language_code must be "en")
    • Other configuration parameters currently 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-transcription. It supports all parameters supported by the prioritize_accuracy mode of real-time transcription, namely: language detection, key terms, and spelling corrections. See the Create Bot API reference for a full list of supported languages.


Quickstart (Real-Time)

1. Start a meeting

Start instant meeting and copy the URL.

2. Configure and create the bot

Call Create Bot while providing the recording_config.transcript.provider with arecallai 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": {}
      }
    }
  }
}
'

3. Speak for a bit

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

4. Fetch the transcript

📘

Tip: The transcript.done event

While you can receive meeting captions in real-time, 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": {}
          }
        },
        ...
      }
    }
  ],
  ...
}

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 🎉


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.