# Keyterm Prompting

`keyterm` _string_

Pre-recorded Streaming\:NovaStreaming\:Flux

Instantly increase accuracy and recognition of up to 100 important terminology, product and company names, industry jargon, phrases and more.

:::callout{intent="info"}
Keyterm Prompting is available for both monolingual and multilingual transcription using the [Nova-3 Models](/guides/models-and-languages-models-languages-overview#nova-3), as well as [Flux](/guides/models-and-languages-models-languages-overview#flux). To boost recognition of keywords using another Deepgram model (such as Nova-2), use the [Keywords](/guides/custom-vocabulary-keywords) feature.
:::

:::callout{intent="warning" title="Migrating from Keywords? The syntax is different"}
`keyterm` does **not** use the weight/intensifier syntax from the legacy [Keywords](/guides/custom-vocabulary-keywords) feature. `keyterm` accepts plain terms only—it does not support weights or intensifiers. The `keywords=KEYWORD:INTENSIFIER` pattern is valid for `keywords`, not for `keyterm`.

|                                                  | Example                        |
| ------------------------------------------------ | ------------------------------ |
| **Do** — repeat the parameter for separate terms | `?keyterm=term1&keyterm=term2` |
| **Do** — encode a multi-word phrase with `%20`   | `?keyterm=customer%20service`  |
| **Do** — encode a multi-word phrase with `+`     | `?keyterm=customer+service`    |
| **Don’t** — add a weight or intensifier          | `?keyterm=term:0.15`           |
| **Don’t** — separate terms with a comma          | `?keyterm=term1,term2`         |
| **Don’t** — separate terms with a semicolon      | `?keyterm=term1;term2`         |

To pass multiple separate keyterms, repeat the `keyterm` parameter. To boost one multi-word phrase, join the words with `%20` or `+`. Do not separate keyterms with commas, semicolons, or line breaks. None of the **Don’t** forms return an error—the API accepts the value and treats it as a single literal keyterm, so it silently boosts nothing instead of failing.
:::

## Enable Feature

To enable Keyterm Prompting, add a `keyterm` parameter in the query string and set it to your chosen key term:

`keyterm=KEYTERM`

To transcribe audio from a file on your computer, run the following cURL command in a terminal or your favorite API client.

```bash
curl \
  --request POST \
  --header 'Authorization: Token YOUR_DEEPGRAM_API_KEY' \
  --header 'Content-Type: audio/wav' \
  --data-binary @youraudio.wav \
  --url 'https://api.deepgram.com/v1/listen?model=nova-3&keyterm=KEYTERM'
```

:::callout{intent="warning"}
Replace `YOUR_DEEPGRAM_API_KEY` with your [Deepgram API Key](/guides/guides-docs-create-additional-api-keys).
:::

## Keyterm Examples & Best Practices

The following examples demonstrate how keyterms can significantly improve recognition accuracy and confidence scores for industry-specific terminology. These examples show typical improvements you might see across Drive-Thru, IVR, call center, and medical transcription use cases.

:::callout{intent="note"}
The confidence scores below are illustrative examples showing typical improvement patterns. Actual results may vary based on audio quality, accent, and context.
:::

| Source                         | Confidence Score before                               | Confidence Score after                               |
| ------------------------------ | ----------------------------------------------------- | ---------------------------------------------------- |
| nacho stack double crunch taco | `"word": "macho", "confidence": 0.88728034`           | `"word": "nacho", "confidence": 0.99029267`          |
| bacon cheeseburger             | `"word": "bake in", "confidence": 0.83456712`         | `"word": "bacon", "confidence": 0.98234156`          |
| crispy seasoned fries          | `"word": "crisp he", "confidence": 0.79812345`        | `"word": "crispy", "confidence": 0.97456789`         |
| account number                 | `"word": "a count", "confidence": 0.82154321`         | `"word": "account", "confidence": 0.97891234`        |
| representative                 | `"word": "represent a tip", "confidence": 0.79043218` | `"word": "representative", "confidence": 0.98654321` |
| billing department             | `"word": "building", "confidence": 0.81234567`        | `"word": "billing", "confidence": 0.96789012`        |
| escalation                     | `"word": "escalate shin", "confidence": 0.76543210`   | `"word": "escalation", "confidence": 0.98123456`     |
| customer service               | `"word": "customer", "confidence": 0.84567890`        | `"word": "customer", "confidence": 0.97234567`       |
| technical support              | `"word": "tech nil call", "confidence": 0.83456789`   | `"word": "technical", "confidence": 0.98345678`      |
| tretinoin                      | `"word": "try to win", "confidence": 0.71234567`      | `"word": "tretinoin", "confidence": 0.96543210`      |
| prescription refill            | `"word": "per scription", "confidence": 0.78901234`   | `"word": "prescription", "confidence": 0.97567890`   |
| diagnosis                      | `"word": "diagnose us", "confidence": 0.80123456`     | `"word": "diagnosis", "confidence": 0.98901234`      |
| appointment scheduling         | `"word": "a point men", "confidence": 0.85678901`     | `"word": "appointment", "confidence": 0.98234567`    |

### Best Practices for Keyterm Selection

When choosing keyterms, consider the following guidelines to maximize accuracy:

**Good Keyterm Examples:**

- **Industry-specific terminology**: Medical terms (`tretinoin`, `diagnosis`), technical jargon (`escalation`, `API`)
- **Product and company names**: Brand names, service names, competitor names
- **Multi-word phrases**: Common phrases in your domain (`account number`, `customer service`)
- **Proper nouns**: Names, brands, titles with appropriate capitalization (`Deepgram`, `iPhone`, `Dr. Smith`)
- **Common non-proper nouns**: Use lowercase (`algorithm`, `protocol`, `refill`)

**What to Avoid:**

- **Generic common words**: Very common words that are rarely misrecognized (`the`, `and`, `is`)
- **Overly broad terms**: Words that appear in many contexts without specific meaning
- **Excessive keyterms**: Stay well under the 500 token limit; focus on the most important 20-50 terms
- **Inconsistent formatting**: Ensure capitalization matches your desired output

## Case Sensitivity and Formatting

Keyterms preserve formatting (including case and punctuation) which can help control how proper nouns, product names, or company names are transcribed. The model will use both the keyterm formatting and the audio context to determine the final transcription format.

Best practices for keyterm formatting:

- For proper nouns (names, brands, titles): Use appropriate capitalization (`Deepgram`, `iPhone`, `Dr. Smith`)
- For non-proper nouns: Use lowercase (`tretinoin`, `algorithm`, `protocol`)

When smart formatting is applied to the transcript, words that start sentences may be automatically capitalized regardless of keyterm formatting.

Note that while the model was trained with formatted keyterms, the final transcription may not always exactly match the keyterm’s formatting. The model balances the keyterm information with the audio context when determining capitalization and punctuation in the output.

## Using Multiple Keyterms

A space must be properly URL-encoded to ensure compatibility. Both `%20` and `+` are valid encodings, but their usage depends on context. In URL paths, spaces must be encoded as `%20`, while in query parameters, either `%20` or `+` can be used.

You can pass in multiple keyterms in your query string in several ways. Do not separate keyterms with commas, semicolons, or line breaks, and do not append a weight or intensifier—`keyterm` does not support weights. None of these forms return an error: the API accepts the value and treats it as a single literal keyterm, so a value such as `keyterm=term:0.15` silently boosts nothing rather than failing.

To boost multiple separate keyterms, repeat the `keyterm` parameter so each keyterm is processed individually.

```bash
curl \
  --request POST \
  --header 'Authorization: Token YOUR_DEEPGRAM_API_KEY' \
  --header 'Content-Type: audio/wav' \
  --data-binary @youraudio.wav \
  --url "https://api.deepgram.com/v1/listen?model=nova-3&keyterm=KEYTERM1&keyterm=KEYTERM2"
```

To boost one multi-word phrase as a single keyterm, join the words with an encoded space `%20`:

```bash
curl \
  --request POST \
  --header 'Authorization: Token YOUR_DEEPGRAM_API_KEY' \
  --header 'Content-Type: audio/wav' \
  --data-binary @youraudio.wav \
  --url "https://api.deepgram.com/v1/listen?model=nova-3&keyterm=term1%20term2"
```

In query parameters, you can also join the words of a phrase with a plus `+`:

```bash
curl \
  --request POST \
  --header 'Authorization: Token YOUR_DEEPGRAM_API_KEY' \
  --header 'Content-Type: audio/wav' \
  --data-binary @youraudio.wav \
  --url "https://api.deepgram.com/v1/listen?model=nova-3&keyterm=term1+term2"
```

## Key Term Limits

Key Terms are limited to 500 tokens per request; anything beyond that will return an error like so:

```title="Error"
Keyterm limit exceeded. The maximum number of tokens across all keyterms is 500.
```

## Dynamic Keyterm Updates (Flux Only)

:::callout{intent="info"}
When using [Flux](/guides/streaming-audio-flux-quickstart), you can update keyterms mid-stream using the [Configure control message](/guides/streaming-audio-flux-configure). This allows you to adapt keyterm lists as conversation context changes without reconnecting.

For example, update keyterms when transitioning from general conversation to product-specific discussions, or clear keyterms when they’re no longer relevant.
:::

## Related pages

- [Amazon SageMaker](./amazon-sagemaker-index.md)
- [Aura](./aura-index.md)
- [Changelog](../changelog.md)
- [Custom Vocabulary](./custom-vocabulary-index.md)
- [Deepgram's Docs](../index.md)
- [Deployment](./deployment-index.md)
- [Docker/Podman](./docker-podman-index.md)
- [Features](./features-index.md)
- [Flux TTS](./flux-tts-index.md)
- [Formatting](./formatting-index.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
