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
toprioritize_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
eventWhile 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
toprioritize_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
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
)
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 toen
(other languages or language detection are not supported)spelling
is not supportedfilter_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
Updated 1 day ago