# Deepgram (/en/ai/models/asr/deepgram)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

Deepgram provides fast, accurate automatic speech recognition with advanced AI models optimized for real-time streaming and conversational applications across multiple languages.

### Sample configuration [#sample-configuration]

The following example shows how to configure Deepgram ASR when starting a conversational AI agent.

<Tabs defaultValue="python" groupId="ai-sdk-language">
  <TabsList>
    <TabsTrigger value="python">
      Python SDK
    </TabsTrigger>

    <TabsTrigger value="typescript">
      TypeScript SDK
    </TabsTrigger>

    <TabsTrigger value="go">
      Go SDK
    </TabsTrigger>

    <TabsTrigger value="rest-api">
      REST API
    </TabsTrigger>
  </TabsList>

  <TabsContent value="python">
    ```python
    from agora_agent import Agent, DeepgramSTT

    # client is your configured Agora client
    agent = (
        Agent(client)
        .with_stt(DeepgramSTT(
            api_key='your-deepgram-key',  # omit to use Agora-managed mode
            model='nova-3',
            language='en',
        ))
        .with_llm(...)  # configure your LLM vendor
        .with_tts(...)  # configure your TTS vendor
    )
    ```
  </TabsContent>

  <TabsContent value="typescript">
    ```typescript
    import { Agent, DeepgramSTT } from 'agora-agents';

    // client is your configured Agora client
    const agent = new Agent({ client })
      .withStt(new DeepgramSTT({
        apiKey: 'your-deepgram-key',  // omit to use Agora-managed mode
        model: 'nova-3',
        language: 'en',
      }))
      .withLlm(/* configure your LLM vendor */)
      .withTts(/* configure your TTS vendor */);
    ```
  </TabsContent>

  <TabsContent value="go">
    ```go
    import "github.com/AgoraIO/agora-agents-go/v2/agentkit/vendors"

    // client is your configured Agora client
    agent := agentkit.NewAgent(client).WithStt(
        vendors.NewDeepgramSTT(vendors.DeepgramSTTOptions{
            APIKey:   "your-deepgram-key",  // omit to use Agora-managed mode
            Model:    "nova-3",
            Language: "en",
        }),
    ).WithLlm(/* configure your LLM vendor */).
      WithTts(/* configure your TTS vendor */)
    ```
  </TabsContent>

  <TabsContent value="rest-api">
    * **Managed mode**

      To use Deepgram ASR with Agora-managed credentials, set `credential_mode` to `"managed"` in the `asr` block. When using managed mode, `params.key` is not required. You can still use the `asr` field to configure additional settings such as `language` and `keyterm`. For more information, see [Use managed mode](/en/ai/build/custom-model-integration/managed-mode).

      ```json
      "asr": {
        "credential_mode": "managed",
        "vendor": "deepgram",
        "params": {
          "url": "wss://api.deepgram.com/v1/listen",
          "model": "nova-3",
          "language": "en",
          "keyterm": "agora%20convo"
        }
      }
      ```

    * **BYOK**

      ```json
      "asr": {
        "vendor": "deepgram",
        "params": {
          "url": "wss://api.deepgram.com/v1/listen",
          "api_key": "<deepgram_key>",
          "model": "nova-3",
          "language": "en",
          "keyterm": "term1%20term2"
        }
      }
      ```
  </TabsContent>
</Tabs>

### Key parameters [#key-parameters]

<ParameterList title="params" required="true">
  <Parameter name="url" type="string" required="false">
    The WebSocket URL for Deepgram's streaming API.
  </Parameter>

  <Parameter name="api_key" type="string" required="false">
    The API key used for authentication. Required when using your own API key (BYOK). Get your API key from the [Deepgram Console](https://console.deepgram.com/).
  </Parameter>

  <Parameter name="model" type="string" required="false">
    The speech recognition model to use.
  </Parameter>

  <Parameter name="language" type="string" required="false">
    The language code for speech recognition (For example, `en`, `es`, `fr`). See [supported languages](https://developers.deepgram.com/docs/models-languages-overview) for language codes.
  </Parameter>

  <Parameter name="keyterm" type="string" required="false">
    Boost specialized terms and brands. Only compatible with the `nova-3` model.
  </Parameter>
</ParameterList>

The parameters listed on this page are validated for use with Conversational AI Engine. Required parameters must be provided as documented. Any additional parameters are passed through directly to the underlying vendor without validation. For advanced configuration options, model selection, and detailed parameter descriptions, see the [Deepgram API documentation](https://developers.deepgram.com/docs/getting-started-with-live-streaming-audio).

<CalloutContainer type="warning">
  <CalloutTitle>
    Caution
  </CalloutTitle>

  <CalloutDescription>
    The following parameters are not passed through and instead use default values set by Agora:
    `callback`, `callback_method`, `channels`, `encoding`, `multichannel`, `sample_rate`
  </CalloutDescription>
</CalloutContainer>
