Omi Medical Speech-to-Text

Build with accurate medical transcription

One API for short files and long consultations, with encounter vocabulary, automatic language detection, word timestamps, and speaker-labelled records.

Batch API liveAsync jobs liveOpen-source runtime liveRealtime preview

Transcribe your first file

Create an API key in the console, export it as OMI_API_KEY, then choose an example. Start with a clip under 30 seconds so automatic language detection returns inline on every plan. The endpoint is OpenAI-compatible, so existing OpenAI SDK clients only need a different base URL.

curl
curl https://api.omi.health/v1/audio/transcriptions \
  -H "Authorization: Bearer $OMI_API_KEY" \
  -F [email protected] \
  -F model=omi-medical-1 \
  -F language=auto \
  -F response_format=verbose_json
Python · OpenAI SDK

Install the SDK once:

python -m pip install openai
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.omi.health/v1",
    api_key=os.environ["OMI_API_KEY"],
)

with open("short-dictation.wav", "rb") as audio:
    result = client.audio.transcriptions.create(
        model="omi-medical-1",
        file=audio,
        response_format="verbose_json",
        extra_body={"language": "auto"},
    )

print(result.text)
JavaScript · OpenAI SDK

Install the SDK once:

npm install openai
import fs from "node:fs";
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.omi.health/v1",
  apiKey: process.env.OMI_API_KEY,
});

const result = await client.audio.transcriptions.create({
  model: "omi-medical-1",
  file: fs.createReadStream("short-dictation.wav"),
  response_format: "verbose_json",
  language: "auto",
});

console.log(result.text);

What you get back

Use verbose_json when you need timestamps, language metadata, model information, or a request ID for support. Use text for plain text and json for the smallest JSON response.

{
  "text": "The patient takes metformin 500 mg twice daily.",
  "language": "en",
  "language_source": "detected",
  "duration": 4.82,
  "model": "omi-medical-1",
  "request_id": "0b0e…",
  "segments": [
    {
      "id": "seg_0001",
      "speaker": "A",
      "text": "The patient takes metformin 500 mg twice daily.",
      "start": 0.22,
      "end": 4.60,
      "confidence": null
    }
  ],
  "metadata": {
    "api_version": "2026-07-01",
    "runtime": "omi-runtime",
    "processing_ms": {"asr": 640, "diarization": 0}
  }
}

Capabilities at a glance

  • English is the benchmarked, medically evaluated language.
  • Spanish, Portuguese, French, German, Dutch, Arabic, and Hindi are available for testing and evaluation, and are not medically evaluated.
  • language=auto
  • detects the spoken language on short inline requests. Automatic detection on long jobs is a Pro/Enterprise entitlement.
  • Encounter vocabulary accepts up to 1,000 terms against one shared 50-term budget; focused 5–50 term lists all apply directly.
  • Speaker labels and word timestamps decorate sealed transcript text; the decoration lane cannot rewrite it.
  • Patterns can recover expected dosage and identifier formatting, when enabled on your key, without acting as a source of transcript truth.

English is the medically benchmarked flagship

The seven additional languages are available with the same serving safety rails. Formal medical evaluation in each local language is still in progress, so public medical benchmark claims apply to the benchmarked English configuration only.