Core workflow

Synchronous transcription

Send a short audio file as multipart form data and receive its transcript in the same response. This is the simplest and lowest-latency route.

POSThttps://api.omi.health/v1/audio/transcriptions

OpenAI-compatible multipart endpoint · audio under 30 seconds · 50 MB upload ceiling

Basic request

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

Authenticate every request with Authorization: Bearer <key>. The file may be WAV, MP3, M4A/MP4, WebM, OGG, FLAC, or AAC; Omi converts it to mono 16 kHz PCM internally.

Request fields

FieldTypeDefaultDescription
modelstringrequiredomi-medical-1 or omi-medical-edge-1.
response_formatstringdiarized_jsonverbose_json, json, text, or diarized_json.
languageBCP-47 tagkey default, then enExplicit supported language or auto. Omission is not automatic detection.
language_hintsJSON array stringall 8 families1–8 candidates, valid only with language=auto.
vocabularyJSON array stringnoneExact terms expected in this encounter; up to 1,000.
dictionarybooleantrueSet false to suppress the API key’s stored dictionary for this request.
patternscomma-separated stringnoneRequest-scoped structured-token hints; invited preview.
diarizebooleanfalseAttach speaker labels and word timestamps.

Combine features

curl https://api.omi.health/v1/audio/transcriptions \
  -H "Authorization: Bearer $OMI_API_KEY" \
  -F [email protected] \
  -F model=omi-medical-1 \
  -F language=en-AU \
  -F response_format=verbose_json \
  -F diarize=true \
  --form-string 'vocabulary=["Tinel","Hepcludex","tirzepatide"]'

For best vocabulary behavior, provide 5–30 exact terms likely to be spoken in this recording. Speaker decoration runs after the transcript is sealed, so it does not change the words.

Response formats

FormatShapeUse it when
texttext/plainYou only need final transcript text.
json{"text":"…"}You need a minimal JSON envelope.
verbose_jsontext, language, segments, duration, model, request_id, metadata; words when availableYou need the complete integration and evaluation shape.
diarized_jsonHistorical speaker-segment shapeYou already consume the original Omi/Scribe contract.

Use async jobs at 30 seconds

Audio of 30 seconds or longer belongs on the async jobs API, which uses the asynchronous-optimized pipeline, avoids long-lived HTTP connections, and keeps short requests fast.