Model providers
Using Deepgram with OpenClaw
Browse more in Model providers.
All model providers guides →This guide shows you how to wire Deepgram into OpenClaw so your agents can transcribe inbound audio and voice notes. audio`, so every uploaded file turns into a transcript injected into the reply pipeline.
By the end, you will have Deepgram transcription working with model selection, language hints, and provider-specific options like punctuation and smart formatting.
Prerequisites
- ✓A Deepgram account with an API key that starts with `dg_...`.
- ✓An existing OpenClaw setup where you can edit the agent or server config that defines `tools.media.audio`.
- ✓Audio or voice note input flowing through `tools.media.audio` in your OpenClaw agent so Deepgram has files to transcribe.
Steps
- 1
Set your Deepgram API key
Start by exposing your Deepgram credentials to OpenClaw so it can authenticate when uploading audio. The docs recommend using the `DEEPGRAM_API_KEY` environment variable, which follows the standard provider auth order and is the simplest path.
bashDEEPGRAM_API_KEY=dg_... - 2
Enable Deepgram for inbound audio transcription
Next, enable the audio tool and point it at Deepgram so OpenClaw knows which provider to call. audio` and sets Deepgram with the `nova-3` model as the backend for pre-recorded transcription.
json{ tools: { media: { audio: { enabled: true, models: [{ provider: "deepgram", model: "nova-3" }], }, }, }, } - 3
Set a language hint for better transcripts
If you know the primary language of your users, add a language hint so Deepgram can optimize recognition. This example keeps the same `nova-3` model but specifies English with `language: "en"` on the model entry.
json{ tools: { media: { audio: { enabled: true, models: [{ provider: "deepgram", model: "nova-3", language: "en" }], }, }, }, } - 4
Tune Deepgram provider options
Deepgram exposes extra toggles like language detection, punctuation, and smart formatting that you can control from OpenClaw. deepgram` to shape the transcript output your agents receive.
json{ tools: { media: { audio: { enabled: true, providerOptions: { deepgram: { detect_language: true, punctuate: true, smart_format: true, }, }, models: [{ provider: "deepgram", model: "nova-3" }], }, }, }, } - 5
Override base URL or headers when using a proxy
If you front Deepgram with a proxy or gateway, you may need to change where OpenClaw sends audio and which headers it includes. headers` so the same Deepgram config works through your proxy.
Configuration
| Option | Description | Example |
|---|---|---|
| DEEPGRAM_API_KEY | Deepgram API key used for authenticating audio uploads from OpenClaw. | DEEPGRAM_API_KEY=dg_1234567890abcdef |
| tools.media.audio.enabled | Turns inbound audio/voice note transcription on or off in OpenClaw. | true |
| tools.media.audio.models[].provider | Selects Deepgram as the provider for audio transcription. | deepgram |
| tools.media.audio.models[].model | Deepgram model id used for transcription; defaults to `nova-3` if not set. | nova-3 |
| tools.media.audio.models[].language | Optional language hint passed to Deepgram to improve recognition. | en |
| tools.media.audio.providerOptions.deepgram.detect_language | Optional flag to enable automatic language detection in Deepgram. | true |
| tools.media.audio.providerOptions.deepgram.punctuate | Optional flag to enable punctuation in the Deepgram transcript. | true |
| tools.media.audio.providerOptions.deepgram.smart_format | Optional flag to enable smart formatting in the Deepgram transcript. | true |
| tools.media.audio.baseUrl | Optional override for the Deepgram endpoint when sending audio through a proxy. | https://my-proxy.internal/deepgram |
| tools.media.audio.headers | Optional custom headers to send when calling Deepgram via a proxy. | { "X-Forwarded-For": "openclaw-gateway" } |
Troubleshooting
Transcripts are missing and the agent never sees `{{Transcript}}` or the `[Audio]` block.
enabled` is true and a Deepgram model is configured. Verify your config matches the docs example with `enabled: true` and `models: [{ provider: "deepgram", model: "nova-3" }]` so inbound audio goes through Deepgram.
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "deepgram", model: "nova-3" }],
},
},
},
}Deepgram never receives audio and transcription fails silently when using a proxy.
When you front Deepgram with a proxy, OpenClaw still points at the default endpoint unless you override it. headers` so audio uploads go to your proxy instead of the default Deepgram URL.
{
tools: {
media: {
audio: {
// ...
// baseUrl and headers should be set here when using a proxy
},
},
},
}Frequently asked questions
Powered by Mem0
Add persistent memory to OpenClaw
Official Mem0 plugin for OpenClaw keeps context across chats and tools. Smaller prompts, lower cost, better continuity for your agents.