Deepgram

Set up and create transcripts using Deepgram as a speech-to-text provider for post-meeting and real-time transcription.

You can use Deepgram as a speech-to-text provider for transcription. This guide explains how to:

  • Set up Deepgram as a speech-to-text provider and configure Deepgram for post-meeting and real-time transcription
  • Learn how to configure AWS Transcribe for multilingual transcription and access custom AWS Transcribe-specific fields on the transcript data (available when not using Perfect Diarization or Hybrid Diarization)
  • Covers FAQs

You can use this sample app to compare transcription quality and output across multiple third-party providers using Recall.ai's async transcription API.


Setup

Before using Deepgram with Recall.ai, you must create a Deepgram API key and add it to the Recall.ai dashboard.

Create a Deepgram API key

Create a new API key in the Deepgram Console.

In Deepgram, API keys are scoped to a project. Make sure you create the API key in the Deepgram project you want Recall.ai to use for transcription.

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.

Take note of the:

  • Deepgram API key
  • Project ID

See Deepgram API key setup for details.

Add your Deepgram API key to the Recall.ai transcription dashboard

Add your Deepgram API key and Project ID in the Recall.ai dashboard for the Recall region where you will create recordings:

❗️

Recall.ai regions are isolated, so you must add your Deepgram API key in each Recall region where you want to use Deepgram transcription.


Implementation guide

Supported transcription workflows

WorkflowSupported
Post-meeting transcription✅ Yes
Real-time transcription with meeting bots✅ Yes
Real-time transcription with Desktop Recording SDK✅ Yes

Deepgram for post-meeting transcription

Use post-meeting transcription when you want to transcribe a recording after the recording has completed.

To use Deepgram for post-meeting transcription, call the Create Async Transcript endpoint and set provider to deepgram_async along with your preferred Deepgram transcription options:

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": {
    "deepgram_async": {
      "model": "nova-3"
    }
  }
}
'

See the provider.deepgram_async field on the Create Async Transcript endpoint for the full list of options available.

📘

See post-meeting transcription 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.

Deepgram for real-time transcription

To use Deepgram for real-time transcription, set the provider to deepgram_streaming when creating the recording. Real-time transcript delivery is configured separately through recording_config.realtime_endpoints.

Meeting bots

To use Deepgram real-time transcription with meeting bots, set recording_config.transcript.provider.deepgram_streaming in the Create Bot request along with your preferred Deepgram transcription options:

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": {
    "transcript": {
      "provider": {
        "deepgram_streaming": {
          "model": "nova-3"
        }
      }
    },
    "realtime_endpoints": [
      {
        "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
        "type": "webhook",
        "events": ["transcript.data"]
      }
    ]
  }
}
'

See the recording_config.transcript.provider.deepgram_streaming field on the Create Bot endpoint for the full list of options available.

📘

See Meeting Bot Real-time Transcription for the full meeting bot implementation, including how to create a bot with real-time transcription enabled, configure real-time transcript delivery, subscribe to transcript events, and receive transcript data from a live meeting.

Desktop Recording SDK

To use Deepgram real-time transcription with the Desktop Recording SDK, set recording_config.transcript.provider.deepgram_streaming in the Create Desktop SDK Upload request along with your preferred Deepgram transcription options:

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": {
    "transcript": {
      "provider": {
        "deepgram_streaming": {
          "model": "nova-3"
        }
      }
    },
    "realtime_endpoints": [
      {
        "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
        "type": "webhook",
        "events": ["transcript.data"]
      }
    ]
  }
}
'

See the recording_config.transcript.provider.deepgram_streaming field on the Create Desktop SDK Upload endpoint for the full list of options available.

📘

See Desktop Recording SDK Real-time Transcription for the full Desktop Recording SDK implementation, including how to create a Desktop SDK upload with real-time transcription enabled, configure transcript delivery, start recording from the SDK, and receive transcript data from the recording.


Additional configurations

Multilingual transcription with Deepgram

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:

FeatureDescription
Language detectionDetects the spoken language without requiring you to set a language explicitly.
Code-switchingHandles conversations where speakers switch between two or more languages during the same meeting.

Multilingual transcription options for post-meeting transcription

Deepgram post-meeting transcription supports both language detection and code-switching. To enable language detection and code-switching with Deepgram, set language to multi and use a Deepgram model that supports multilingual transcription:

{
  // ... other Create Async Transcript request options
  "provider": {
    "deepgram_async": {
      "model": "nova-3",
      "language": "multi"
    }
  }
}

Multilingual transcription options for real-time transcription

Deepgram real-time transcription supports both language detection and code-switching. To enable language detection and code-switching with Deepgram, set language to multi and use a Deepgram model that supports multilingual transcription:

{
  // ... other request options
  "recording_config": {
    // ... other recording options
    "transcript": {
      // ... other transcript options
      "provider": {
        "deepgram_streaming": {
          "model": "nova-3",
          "language": "multi"
        }
      }
    }
  }
}

Accessing provider-specific fields from Deepgram transcript data

If you need Deepgram-specific fields that are not exposed in the normalized Recall transcript, you can access the provider data.

❗️

Provider data is not available when using Perfect Diarization or Hybrid Diarization

Accessing Deepgram provider data post-meeting

For post-meeting transcription, you can access the raw Deepgram transcription response from the completed transcript artifact. To access provider data after the meeting, fetch the transcript artifact using the Retrieve Transcript endpoint. Use the data.provider_data_download_url field from the response to download the raw provider response.

The response returned by provider_data_download_url varies by provider. See the accessing provider data section of the post-meeting transcription guide for implementation details.

Accessing Deepgram provider data in real time

For real-time transcription, subscribe to transcript.provider_data in your real-time endpoint configuration if you need Deepgram-specific payloads:

{
  "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
  "type": "webhook",
  "events": ["transcript.data", "transcript.provider_data"]
}

See the accessing provider data section of the real-time transcription docs for implementation details.


FAQ

Do I need to add a Deepgram API key in every Recall.ai region?

Yes. Recall.ai regions are isolated, so you must add your Deepgram API key in each Recall.ai region where you want to use Deepgram transcription.

What regions can I configure with Deepgram?

By default, Deepgram will process data in the US. You can configure Deepgram to process data in the EU by setting the host to api.eu.deepgram.com in the Deepgram transcription setup dashboard. See Deepgram for details about their EU region support.

How do I opt out of Deepgram model training or model improvement?

Set mip_opt_out to true in the Deepgram provider config

Post-meeting transcription

{
  "provider": {
    "deepgram_async": {
      "model": "nova-3",
      "mip_opt_out": true
    }
  }
}

Real-time transcription example

{
  "recording_config": {
    "transcript": {
      "provider": {
        "deepgram_streaming": {
          "model": "nova-3",
          "mip_opt_out": true
        }
      }
    }
  }
}