Skip to content

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see For full documentation content, see For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at

Medical Mode

Improve transcription accuracy for medical terminology in pre-recorded audio

For the complete documentation index, see llms.txt

Supported models: Universal-3 Pro (universal-3-pro), Universal-2 (universal-2). Supported languages: English (en), Spanish (es), German (de), French (fr). Supported regions: US and EU. Key parameter: Set "domain": "medical-v1" in the request body. Medical Mode improves transcription accuracy for medical terminology such as medications, procedures, conditions, and dosages.

cURL quickstart:

bash
curl  \
  --header "Authorization: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "audio_url": "",
    "speech_models": ["universal-3-pro"],
    "domain": "medical-v1"
  }'

US & EU

Medical Mode is an add-on that enhances transcription accuracy for medical terminology — including medication names, procedures, conditions, and dosages. It is optimized for medical entity recognition to correct terms that other models frequently get wrong.

Medical Mode can be used with all of our Pre-recorded STT models.

Enable Medical Mode by setting the domain parameter to "medical-v1". No changes to your existing pipeline are required.

Medical Mode is billed as a separate add-on. See the pricing page for details.

Medical Mode supports English, Spanish, German, and French.

If you use Medical Mode with an unsupported language, the API ignores the domain parameter and returns a warning indicating that Medical Mode was not applied: "Skipped medical-v1 domain correction because the language is not supported"

Your transcript is still returned using standard transcription, and you will not be charged for Medical Mode.

Quickstart

To enable Medical Mode, set domain to "medical-v1" in the POST request body:

python
import requests
import time

base_url = ""
headers = {"authorization": "<YOUR_API_KEY>"}

data = {
    "audio_url": "",
    "language_detection": True,
    "speech_models": ["universal-3-pro", "universal-2"],
    "domain": "medical-v1"
}

response = requests.post(base_url + "/v2/transcript", headers=headers, json=data)

if response.status_code != 200:
    print(f"Error: {response.status_code}, Response: {response.text}")
    response.raise_for_status()

transcript_response = response.json()
transcript_id = transcript_response["id"]
polling_endpoint = f"{base_url}/v2/transcript/{transcript_id}"

while True:
    transcript = requests.get(polling_endpoint, headers=headers).json()
    if transcript["status"] == "completed":
        print(transcript["text"])
        break
    elif transcript["status"] == "error":
        raise RuntimeError(f"Transcription failed: {transcript['error']}")
    else:
        time.sleep(3)

To enable Medical Mode, set domain to "medical-v1" in the transcription config.

python
import assemblyai as aai

aai.settings.api_key = "<YOUR_API_KEY>"

# You can use a local filepath:
# audio_file = "./example.mp3"

# Or use a publicly-accessible URL:
audio_file = ""

config = aai.TranscriptionConfig(
    speech_models=["universal-3-pro", "universal-2"],
    language_detection=True,
    domain="medical-v1",
)

transcript = aai.Transcriber().transcribe(audio_file, config)

print(transcript.text)

To enable Medical Mode, set domain to "medical-v1" in the POST request body:

javascript
const baseUrl = "";
const headers = {
  authorization: "<YOUR_API_KEY>",
};

const data = {
  audio_url: "",
  language_detection: true,
  speech_models: ["universal-3-pro", "universal-2"],
  domain: "medical-v1",
};

const url = `${baseUrl}/v2/transcript`;
let res = await fetch(url, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify(data),
});
if (!res.ok) throw new Error(`Error: ${res.status}`);
const response = await res.json();

const transcriptId = response.id;
const pollingEndpoint = `${baseUrl}/v2/transcript/${transcriptId}`;

while (true) {
  res = await fetch(pollingEndpoint, { headers });
  if (!res.ok) throw new Error(`Error: ${res.status}`);
  const transcriptionResult = await res.json();

  if (transcriptionResult.status === "completed") {
    console.log(transcriptionResult.text);
    break;
  } else if (transcriptionResult.status === "error") {
    throw new Error(`Transcription failed: ${transcriptionResult.error}`);
  } else {
    await new Promise((resolve) => setTimeout(resolve, 3000));
  }
}

To enable Medical Mode, set domain to "medical-v1" in the transcription config.

javascript
import { AssemblyAI } from "assemblyai";

const client = new AssemblyAI({
  apiKey: "<YOUR_API_KEY>",
});

// You can use a local filepath:
// const audioFile = "./example.mp3"

// Or use a publicly-accessible URL:
const audioFile = "";

const params = {
  audio: audioFile,
  speech_models: ["universal-3-pro", "universal-2"],
  language_detection: true,
  domain: "medical-v1",
};

const run = async () => {
  const transcript = await client.transcripts.transcribe(params);
  console.log(transcript.text);
};

run();

Example output

Without Medical Mode:

plain
I have here insulin to be used for both prandial mealtime and sliding scale is
insulin lisprohumalog subcutaneously.

With Medical Mode, lisprohumalog is updated to Lispro (Humalog) - following the standard medical convention of writing the generic name first, with the brand name in parentheses.

plain
I have here insulin to be used for both prandial mealtime and sliding scale is
insulin Lispro (Humalog) subcutaneously.

Use cases

Medical Mode is designed for healthcare AI applications where accurate medical terminology is critical:

  • Ambient clinical documentation — Capture medication names, dosages, and clinical terms correctly in real-time scribing workflows.
  • AI-powered clinical notes — Generate clean transcripts for downstream LLMs producing SOAP notes, discharge summaries, and referral letters.
  • Front-office automation — Handle drug names, provider names, and clinic-specific terminology in scheduling calls, insurance verification, and voice agents.
  • Multi-speaker clinical conversations — Combine with Speaker Diarization for provider/patient separation in telehealth, therapy documentation, and clinical settings.

Combine with other features

Medical Mode works alongside other transcription features. You can combine it with:

python
data = {
    "audio_url": "<YOUR_AUDIO_URL>",
    "speech_models": ["universal-3-pro", "universal-2"],
    "language_detection": True,
    "domain": "medical-v1",
    "speaker_labels": True,
    "keyterms_prompt": ["Lisinopril", "Metformin", "Humalog"]
}
python
config = aai.TranscriptionConfig(
    speech_models=["universal-3-pro", "universal-2"],
    language_detection=True,
    domain="medical-v1",
    speaker_labels=True,
    keyterms_prompt=["Lisinopril", "Metformin", "Humalog"],
)
javascript
const data = {
  audio_url: "<YOUR_AUDIO_URL>",
  speech_models: ["universal-3-pro", "universal-2"],
  language_detection: true,
  domain: "medical-v1",
  speaker_labels: true,
  keyterms_prompt: ["Lisinopril", "Metformin", "Humalog"],
};
javascript
const params = {
  audio: audioFile,
  speech_models: ["universal-3-pro", "universal-2"],
  language_detection: true,
  domain: "medical-v1",
  speaker_labels: true,
  keyterms_prompt: ["Lisinopril", "Metformin", "Humalog"],
};

HIPAA compliance

AssemblyAI offers a Business Associate Agreement (BAA) for customers who need to process Protected Health Information (PHI). AssemblyAI is SOC 2 Type 2, ISO 27001:2022, and PCI DSS v4.0 certified. Medical Mode does not change existing data handling or retention policies.

For BAA setup or enterprise pricing, contact our sales team.