> ## Documentation Index
> Fetch the complete documentation index at: https://assemblyai.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Key terms

> Boost transcription accuracy for rare or domain-specific words by adding them to a voice agent's key terms.

If your conversation involves rare or domain-specific words, like a person's name, company name, or product, add them to the agent's key terms to improve transcription accuracy. This works like a word boost, biasing the speech recognition model toward these terms. Key terms live on the agent under `input.keyterms`, set when you [create](/voice-agents/voice-agent-api/create-agent) or [update](/voice-agents/voice-agent-api/manage-agents) it, or inline over the WebSocket via [`session.update`](/voice-agents/voice-agent-api/session-configuration).

## Set key terms

Pass `keyterms` inside the `input` object:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://agents.assemblyai.com/v1/agents \
    -H "Authorization: $ASSEMBLYAI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Support Assistant",
      "system_prompt": "You are a friendly support agent. Keep replies under two sentences.",
      "voice": { "voice_id": "ivy" },
      "input": { "keyterms": ["AssemblyAI", "Lemur", "Ozempic"] }
    }'
  ```

  ```python Python theme={null}
  # pip install requests
  import os
  import requests

  resp = requests.post(
      "https://agents.assemblyai.com/v1/agents",
      headers={"Authorization": os.environ["ASSEMBLYAI_API_KEY"]},
      json={
          "name": "Support Assistant",
          "system_prompt": "You are a friendly support agent. Keep replies under two sentences.",
          "voice": {"voice_id": "ivy"},
          "input": {"keyterms": ["AssemblyAI", "Lemur", "Ozempic"]},
      },
  )
  resp.raise_for_status()
  print(resp.json())
  ```

  ```javascript Node.js theme={null}
  // Node 18+ has fetch built in
  const res = await fetch("https://agents.assemblyai.com/v1/agents", {
    method: "POST",
    headers: {
      Authorization: process.env.ASSEMBLYAI_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name: "Support Assistant",
      system_prompt: "You are a friendly support agent. Keep replies under two sentences.",
      voice: { voice_id: "ivy" },
      input: { keyterms: ["AssemblyAI", "Lemur", "Ozempic"] },
    }),
  });
  const data = await res.json();
  console.log(data);
  ```
</CodeGroup>

| Field            | Type              | Required | Notes                                                                  |
| ---------------- | ----------------- | -------- | ---------------------------------------------------------------------- |
| `input.keyterms` | string\[] \| null | No       | Up to 100 transcription-bias strings. `null` or `[]` clears the boost. |

## What to add

* Brand, product, and feature names that aren't in everyday English (`"AssemblyAI"`, `"Lemur"`, `"Ozempic"`).
* Proper nouns specific to this caller: their full name, their account holder's name, the agent's name if it's unusual.
* Domain jargon that the model might otherwise transcribe as a common-word homophone (`"hemochromatosis"`, `"polysomnography"`).
* Acronyms you want spelled in full (`"PCI DSS"`, `"FedRAMP"`).

## What NOT to add

* Common English words. Each entry boosts that string, and adding common words at the same weight as your rare terms dilutes the boost.
* Whole sentences or phrases. The boost is per-term, not per-phrase.
* Punctuation, formatting, or instructions. The list is treated as transcription hints, not as prompt context.

## Update the list

Replace the list by sending a new `keyterms` array. The new list takes effect on the next user utterance:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT https://agents.assemblyai.com/v1/agents/$AGENT_ID \
    -H "Authorization: $ASSEMBLYAI_API_KEY" -H "Content-Type: application/json" \
    -d '{ "input": { "keyterms": ["AssemblyAI", "Universal", "hemochromatosis"] } }'
  ```

  ```python Python theme={null}
  # pip install requests
  import os
  import requests

  resp = requests.put(
      f"https://agents.assemblyai.com/v1/agents/{os.environ['AGENT_ID']}",
      headers={"Authorization": os.environ["ASSEMBLYAI_API_KEY"]},
      json={"input": {"keyterms": ["AssemblyAI", "Universal", "hemochromatosis"]}},
  )
  resp.raise_for_status()
  print(resp.json())
  ```

  ```javascript Node.js theme={null}
  // Node 18+ has fetch built in
  const res = await fetch(
    `https://agents.assemblyai.com/v1/agents/${process.env.AGENT_ID}`,
    {
      method: "PUT",
      headers: {
        Authorization: process.env.ASSEMBLYAI_API_KEY,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        input: { keyterms: ["AssemblyAI", "Universal", "hemochromatosis"] },
      }),
    },
  );
  const data = await res.json();
  console.log(data);
  ```
</CodeGroup>

**When to refresh the list:** when the conversation enters a new domain. If an inbound support call switches from "billing" to "technical", swap the toolset and the key terms list together.

<Note>
  `input.keyterms` accepts up to 100 strings. Passing `null` or `[]` clears the boost. When configured inline via [`session.update`](/voice-agents/voice-agent-api/session-configuration), the list can also be replaced mid-session and takes effect on the next user utterance.
</Note>
