> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.deepgram.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.deepgram.com/_mcp/server.

# Genesys and Deepgram (Legacy)

> **Warning**
>
> For a more modern approach, see [our updated guide](/docs/genesys-deepgram) that leverages Genesys' new Transcription Connector. The new approach allows you to load transcripts directly into Genesys instead of processing them in an external server.

In this guide, we'll explain how to configure Genesys to share call audio will Deepgram and have transcriptions sent to a callback URL of your choice.

## Before you Begin

> **Info**
>
> Before you can use Deepgram, you'll need to [create a Deepgram account](https://console.deepgram.com/signup?jump=keys). Signup is free and includes **\$200** in free credit and access to all of Deepgram's features!

> **Info**
>
> Before you start, you'll need to follow the steps in the [Make Your First API Request](/guides/fundamentals/make-your-first-api-request) guide to obtain a Deepgram API key, and configure your environment if you are choosing to use a Deepgram SDK.

### Set Up a Genesys Cloud Org

You'll also need a Genesys Cloud org where you have completed the [initial setup tasks](https://help.mypurecloud.com/articles/new-users-home/) so that your call center can receive calls.

## Install AudioHook Monitor

In your Genesys org, [install AudioHook Monitor](https://help.mypurecloud.com/articles/about-audiohook-monitor/). Note that you will also need to [configure voice transcription](https://help.mypurecloud.com/articles/configure-voice-transcription/) in order for [AudioHook Monitor to work](https://help.mypurecloud.com/faqs/why-do-i-need-to-configure-voice-transcription-in-order-to-use-audiohook-monitor/).

## Configure AudioHook Monitor

Once you've installed AudioHook Monitor, it will appear under **Admin > Integrations** in the Genesys UI, as in the image below. Now click the three dots on the **AudioHook** row and choose **Edit Integration**.

![Choose Edit Integration from the menu](/_fern-img/eb640923bc82c7d2a807a552ad320bc3e30928660a5a1fcdda5c6f6525662037.webp)

You should now see an interface like below. Under the **Details** tab, you can give your AudioHook instance a more useful name. Let's name it Deepgram.

![The details tab, where you can add a useful name.](/_fern-img/07c6ea2a4c5c49ec4921ad639ef1400249b91ef193a5a050bb0311738ab3fa89.webp)

Under **Configuration > Properties**, set **Channel** to `both` and **Connection URI** to `wss://integrations.deepgram.com/genesys`.

![Under the configuration tab in properties you can set the channel and the Connection URI](/_fern-img/a2a73d8ca1775f8e260f29157812d2c5167e0a3f0cbfc93bc41872cf2ab3143d.webp)

Under **Configuration > Credentials**, click **Configure** and paste your Deepgram API key into the **API Key** field. Leave the **Client Secret** field blank. Then click **OK**.

![A Deepgram API key pasted into the API Key field](/_fern-img/640743772318997b607354fe29d58082997ec2c310382f334c3f5c99a485e72c.webp)

> **Info**
>
> If you specify an API key and then change it, it can take a long time for the new API key to propagate through the Genesys system. Give it 30 minutes before you assume that Deepgram is receiving the new API key. If you don't want to wait, you can delete AudioHook from the **Integrations** page, reinstall it, and provide the new API key to the reinstalled AudioHook.

Under **Configuration > Advanced**, provide a JSON object to customize the Deepgram request. For example:

**`JSON`**

```json JSON
{
  "model": "nova-3",
  "punctuate": true,
  "smart_format": true,
  "tag": [
    "sometag1",
    "sometag2"
  ],
  "callback": "https://example.com/webhook/{conversation-id}"
}
```

Within this JSON object, you have access to [the full suite of features in Deepgram's streaming API](/reference/speech-to-text/listen-streaming). However, be careful **NOT** to include any of these:

* `sample_rate`
* `encoding`
* `channels`
* `multichannel`

Deepgram already knows the `sample_rate`, `encoding`, and `channels` based on the information sent from Genesys, and `multichannel` is locked to `true` so that you can tell who is speaking in your transcripts. If you include any of these four features, the integration will fail!

### Callback

Let's take a moment to look at the most important feature: the `callback`. The `callback` is the URL where your transcripts will be POSTed in real-time. It works [exactly like it does for a normal streaming request](/docs/callback), except when you are using Deepgram with Genesys, there are three special placeholders you can include in the `callback` URL:

* `{conversation-id}`
* `{participant-id}`
* `{session-id}`

In the example above, we provide a `callback` of `https://example.com/webhook/{conversation-id}`. This means that if there is a Genesys call with conversation id `fb486691-fbe1-4b8d-a28e-72ca891e8f0b`, the transcripts for that call will be POSTed to `https://example.com/webhook/fb486691-fbe1-4b8d-a28e-72ca891e8f0b`. This allows us to match up transcripts with calls.

To quickly validate that everything is working, it can be helpful to point your callback URL to a free tool that displays incoming requests. Consider using [beeceptor.com](https://beeceptor.com/), [webhook.site](https://webhook.site/), or--with slightly more effort but less rate limiting--[ngrok](https://ngrok.com/docs/).

## Understand Which Calls Will Be Transcribed

Now we are done with configuration and can click **Save**. Before flipping the switch to activate the integration, we should understand which calls will be transcribed by Deepgram. This information is available in the AudioHook docs, but it bears repeating here because it's easy to use far more Deepgram credit than you intended if you're not careful.

For historical reasons, Genesys built AudioHook on top of its transcription feature. This means AudioHook integrations will be used wherever transcription is active. At the time of writing, this can happen in two ways:

1. Transcription is active at the level of a queue, or
2. Transcription gets enabled with a **Transcription** action in an architect flow.

To check your queues, go to **Admin > Contact Center > Queues**. For any queue where **Voice > Voice Transcription** is set to **On**, all calls going through that queue will be transcribed by Deepgram and have their transcripts sent to the callback URL you specified.

To check your architect flows, go through each flow and look for one of these blocks:

![An \*\*Enable Transcription\*\* action in an architect flow](/_fern-img/8040fa919856da4697aaed2d8570d843869ff6e369f7e2e3e3e2c1f1273aa072.webp)

An **Enable Transcription** action in an architect flow

This block will trigger the Deepgram integration unless you've suppressed recording for the flow under **Settings > Recording and Speech Recognition**.

Once you've checked that Deepgram will be used exactly where you want, it's time to activate the integration.

## Activate Integration

Back in **Admin > Integrations**, flip the switch to activate the integration. Make sure it goes into the **Active** state and no errors are displayed, like the image below.

![The toggle should be set to Active state.](/_fern-img/65215d74ef748c2f61aca7b2163eff6bbb6814054c8f37136b996e27d9bc3de0.webp)

The integration has been activated successfully

At this point, if everything was done correctly, you should be able to put a call through the system and see your transcripts arriving at your specified callback URL.

---

What’s Next

* [Deepgram API Overview](/reference/deepgram-api-overview)