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
How vocabulary is applied
| Effective list size | Mode | Behavior |
|---|---|---|
| 1–50 terms | direct | Considers every validated term and reports delivered and unresolved outcomes separately. |
| 51–1,000 terms | retrieval | Selects the 50 most relevant candidates before transcription. |
| Arabic or Hindi · 1–50 terms | direct | Considers every validated term; delivery remains an observed transcript outcome. |
| Arabic or Hindi · 51–1,000 terms | retrieval preview | Selects up to 50 terms with a second transcription pass. Expect higher latency; this path is not medically evaluated. |
| language=auto | per detected language | Up 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