Real-time Transcription
Real-time transcription enables your desktop app to receive live, speaker-attributed transcript data as meetings happen. Instead of waiting for a recording to finish and processing it asynchronously, you get transcript words and sentences streamed directly to your app within seconds of being spoken.
Quickstart
The Desktop Recording SDK currently supports AssemblyAI and Deepgram for real-time transcription, with more platform support planned for the future.
Add your API keys to the Recall transcription credential dashboardOnce you've created API keys for AssemblyAI or Deepgram, you need to add them to Recall. Add them at the following links depending on your Recall region:
AssemblyAI transcription setup
- Create an account with AssemblyAI.
- Link a credit card to your AssemblyAI account. Assembly gives you free credits when you sign up, but, you still must have a credit card on file with Assembly in order to use real-time transcription through the Desktop SDK. You do not need to add funds, but the card must be on file.
- Create a new API key from the Assembly dashboard and add it to the Recall Transcription dashboard.
Sample Assembly request
Choose the correct Assembly model!Use
assembly_ai_v3_streaming
notassembly_ai_streaming
when adding Assembly to your Create SDK Upload request. Transcription on the Desktop Recording SDK will fail if you chooseassembly_ai_streaming
.
Use the request below to create a desktop recording that transcribes in real time with Assembly. Replace YOUR_RECALL_REGION with your Recall region (either us-west-2
, us-east-1
, eu-central-1
, or ap-northeast-1
). Replace YOUR_API_KEY with an API key with a Recall API key.
const url = 'https:/YOUR_RECALL_REGION.recall.ai/api/v1/sdk_upload/';
const options = {
method: 'POST',
headers: {
accept: 'application/json',
'content-type': 'application/json',
Authorization: 'YOUR_API_KEY'
},
body: JSON.stringify({
recording_config: {
transcript: {
provider: {
assembly_ai_v3_streaming: {
// include any supported parameters for Assembly's real-time models
// https://www.assemblyai.com/docs/api-reference/streaming-api/streaming-api
}
}
},
realtime_endpoints: [
{
type: 'desktop_sdk_callback',
events: ['transcript.data']
}
]
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));
import requests
url = "https://YOUR_RECALL_REGION.recall.ai/api/v1/sdk_upload/"
payload = {
"recording_config": {
"transcript": {
"provider": {
"assembly_ai_v3_streaming": {
# include any supported parameters for Assembly's real-time models
# https://www.assemblyai.com/docs/api-reference/streaming-api/streaming-api
}
}
},
"realtime_endpoints": [
{
"type": "desktop_sdk_callback",
"events": ["transcript.data"]
}
]
}
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"Authorization": "YOUR_API_KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
Deepgram transcription setup
- Create an account with Deepgram.
- Create a new API key from the Deepgram dashboard. When creating the key, open the "Advanced" tab and give the API key Member, Admin, or Owner role. Transcription will fail with the Default role.

- Add your Deepgram API key to the Recall Transcription dashboard. Make sure to mark this API key as default, and to include your Deepgram Project ID.

Sample Deepgram request
Use the request below to create a desktop recording that transcribes in real time with Deepgram. Replace YOUR_RECALL_REGION with your Recall region (either us-west-2
, us-east-1
, eu-central-1
, or ap-northeast-1
). Replace YOUR_API_KEY with an API key with a Recall API key.
const url = 'https:/YOUR_RECALL_REGION.recall.ai/api/v1/sdk_upload/';
const options = {
method: 'POST',
headers: {
accept: 'application/json',
'content-type': 'application/json',
Authorization: 'YOUR_API_KEY'
},
body: JSON.stringify({
recording_config: {
transcript: {
provider: {
deepgram_streaming: {
// include any supported parameters for Deepgram's real-time models
// https://developers.deepgram.com/reference/speech-to-text/listen-streaming
}
}
},
realtime_endpoints: [
{
type: 'desktop_sdk_callback',
events: ['transcript.data']
}
]
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));
import requests
url = "https://YOUR_RECALL_REGION.recall.ai/api/v1/sdk_upload/"
payload = {
"recording_config": {
"transcript": {
"provider": {
"deepgram_streaming": {
# include any supported parameters for Deepgram's real-time models
# https://developers.deepgram.com/reference/speech-to-text/listen-streaming
}
}
},
"realtime_endpoints": [
{
"type": "desktop_sdk_callback",
"events": ["transcript.data"]
}
]
}
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"Authorization": "YOUR_API_KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
Updated about 14 hours ago