Feature guide

Vocabulary and Patterns

Give Omi the exact encounter terms and structured token shapes that matter for this recording. Both features are constrained by safety rails and are never allowed to become a free-form prompt.

Custom vocabulary

Pass an exact list through vocabulary. Good entries are patient names, medicines, devices, procedures, abbreviations, clinic names, and other terms likely to be spoken in this encounter.

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

Use an encounter list, not a dictionary dump

Focused lists of 5–50 terms outperform large generic dictionaries. Lists of 50 terms or fewer are considered in full. Larger lists select the 50 most relevant terms. The outcome audit reports which terms reached the delivered transcript. Include only terms you expect in this visit. Do not send prose, instructions, or a transcript guess.

How vocabulary is applied

Effective list sizeModeBehavior
1–50 termsdirectConsiders every validated term and reports delivered and unresolved outcomes separately.
51–1,000 termsretrievalSelects the 50 most relevant candidates before transcription.
Arabic or Hindi · 1–50 termsdirectConsiders every validated term; delivery remains an observed transcript outcome.
Arabic or Hindi · 51–1,000 termsretrieval previewSelects up to 50 terms with a second transcription pass. Expect higher latency; this path is not medically evaluated.
language=autoper detected languageUp to 50 selected terms per detected language; the stored language view is selected after detection.

Request terms are merged above the API key’s stored, language-specific dictionary. Set dictionary=false to suppress stored terms for one request without deleting them.

Responses expose language_source asrequested, default, or detected so callers can distinguish an explicit language hint, the server default, and automatic detection. If a vocabulary safety fallback fires, only the affected chunks revert to their ordinary transcript. The audit keeps term acceptance and delivered transcript outcome separate, so it never claims that a term appeared merely because the request accepted it.

Safety and audit

Every vocabulary request runs structural and numeric safety checks. For long recordings, checks run independently on each transcription chunk: a failing chunk returns its plain no-context text while safe chunks keep their vocabulary-assisted result. Short requests still fall back as one unit.

{
  "vocabulary": {
    "schema": "omi-vocabulary-audit-v3",
    "enabled": true,
    "requested_terms": 3,
    "accepted_terms": 3,
    "accepted": ["Tinel", "Hepcludex", "tirzepatide"],
    "prompted_terms": 3,
    "prompted": ["Tinel", "Hepcludex", "tirzepatide"],
    "applied_terms": 3,
    "applied": ["Tinel", "Hepcludex", "tirzepatide"],
    "dropped": [],
    "dropped_reason": null,
    "suspect_insertions": 0,
    "safety_fallback": false,
    "chunk_count": 1,
    "fallback_chunks": 0,
    "applied_chunks": 1,
    "prompted_chunks": 1,
    "prompt_status": "complete",
    "fully_prompted": true,
    "coverage_summary": "3 accepted; 3 prompted",
    "delivery_status": "complete",
    "delivered_terms": 3,
    "delivered": ["Tinel", "Hepcludex", "tirzepatide"],
    "unresolved_terms": 0,
    "unresolved": [],
    "corrected_terms": 2,
    "corrected": ["Hepcludex", "tirzepatide"],
    "corrections_applied": 2,
    "result_summary": "3 of 3 requested terms delivered; 2 corrected",
    "observed_terms": 3,
    "observed": ["Tinel", "Hepcludex", "tirzepatide"],
    "missing_after_decode": [],
    "language": "en",
    "language_source": "requested",
    "numeric_arbitration": "none",
    "numeric_spans": 0,
    "patterns_requested": 0,
    "patterns_applied": 0,
    "pattern_evidence": []
  }
}

Use chunk_count, fallback_chunks,prompt_status, andcoverage_summary to understand decode-time request coverage. Use delivery_status,delivered, andunresolved for the final transcript outcome.corrected lists caller-owned spellings that the conservative final correction pass actually restored. The olderapplied fields remain as deprecated aliases for delivered outcome; they do not describe request coverage. Omi records tenant-scoped counts and fallback state without logging transcript content.

Patterns

Patterns are per-request hints for structured tokens such as dosage forms, order codes, and identifiers. Only set patterns you expect in the current audio. Omi applies formatting only when the transcript independently supports the same token.

curl https://api.omi.health/v1/audio/transcriptions \
  -H "Authorization: Bearer $OMI_API_KEY" \
  -F file=@dictation.wav \
  -F model=omi-medical-1 \
  -F language=en \
  -F response_format=verbose_json \
  --form-string 'patterns=[0-9]{1,3}(mg|ml|mcg),[A-Z]{2}-[0-9]{4}'
  • Up to 32 expressions; each is validated before inference.
  • Supported building blocks include [0-9], [A-Z], bounded repeats, literal groups/alternatives, letters, digits, spaces, and hyphens.
  • General-purpose regex operators and unbounded expansion are rejected with 422.
  • Patterns are never saved to the tenant dictionary or applied globally.
  • Patterns are available on every plan.

Vocabulary and Patterns affect final output only

Vocabulary and Patterns are final-output features. They never rewrite transcript text without independent evidence from the transcription pass and the safety checks above.