Reference
Changelog
Dated, customer-visible changes to the API contract, limits, and served model builds. Newest first.
2026-09-01 — live-speaker project limit
Pay as you go projects now support 2 simultaneous live-speaker rooms within the unchanged 10-session realtime limit. Builder remains 2 live sessions including 1 speaker room. Excess labelled starts fail explicitly with SPEAKER_CAPACITY_FULL.
2026-08-28 — Builder, Pay as you go, and live billing
- Free is now called Builder; Pro is now Pay as you go. Adding a card preserves the same complete API and the monthly 25-hour pooled allowance.
- After covered hours, batch audio is $0.29/hour and realtime audio is $0.45/hour. Builder rejects new processing at the boundary; existing results remain retrievable.
- Interactive synchronous audio up to 60 seconds returns inline. Published project limits now separate sync requests, queued async jobs, live sessions, and live speaker rooms.
- Realtime and request-scoped Patterns are available on every plan. Builder supports 2 live sessions and 1 speaker room; Pay as you go supports 10 and 3.
2026-08-27 — hosted Edge route retired
The unused hosted omi-medical-edge-1 route has been removed from the model catalogue. Managed requests should use omi-medical-1; the retired identifier now returns 400 model_unknown. The open-source local runtime and downloadable on-device model remain available.
2026-08-27 — revisioned realtime previews and expanded capacity
- Realtime preview now supports explicit English, Spanish, Portuguese, French, German, Dutch, Arabic, and Hindi sessions.
- Mutable preview text now carries a
turn_id, sequence, and explicit revision chain. Clients replace the previous preview for the turn;turn_finalremains immutable and is the only text event that may authorize a response. - Realtime text sessions and live-speaker rooms are admitted from separate bounded pools. Speaker-capacity exhaustion is reported as
SPEAKER_CAPACITY_FULLrather than silently disabling labels.
2026-08-27 — provisional partial text on long async jobs
While a long job is still running, the status envelope may expose a transcription block with a partial_result_url: provisional text for the first minutes of audio, marked provisional: true with a revision number and completed_audio_seconds. The final result at succeeded replaces it entirely. Existing pollers that ignore the block are unaffected.
2026-08-26 — text-first delivery on diarized async jobs
Async jobs now reach succeeded as soon as the transcript text is final. On jobs with diarize, the first downloadable result may carry decoration: {"status": "processing", "stale_after": …} for a short window while speaker labels and word timestamps attach; the stored result is then replaced in place. Poll or re-download until decoration.status clears. Webhook callbacks still fire exactly once, at succeeded. Jobs without diarize are unchanged. Details: /async.
2026-08-22 — one flagship default and improved realtime endpointing
omi-medical-1now has one authoritative processing profile,default, with the same qualified behavior at every duration.- The legacy request values
standardandturboremain accepted as deprecated aliases fordefault; they no longer select separate processing behavior. - English realtime sessions gained faster endpointing for clearly completed turns and improved live-speaker attribution. Other languages retain conservative end-of-turn timing and the same provisional-speaker contract.
- Vocabulary audit schema v3 separates prompt admission from observed delivery, correction, and unresolved outcomes.
2026-08-16 — realtime and speaker preview
- Enabled keys can connect to
wss://api.omi.health/v1/streamfor the free, access-gated English realtime preview. Starts are admitted from bounded pools and are rejected explicitly when the requested pool is full. - Live speaker activity is opt-in, provisional, and free during the preview. It does no work when disabled and never changes transcript text.
- Completed-record diarization now reconciles speaker identity across long recordings and supports up to four speakers without folding an extra person into an existing label.
- Dutch diarized responses can return word timing; Arabic and Hindi remain segment-timing only.
2026-08-11 — omitted language now routes safely
- Requests without
languagenow detect the dominant language from the first speech-bearing window and transcribe the original full recording in that language. - Mixed probes escalate to the existing per-utterance path instead of guessing; responses declare
language_source=detectedand expose the detection mode in verbose JSON. - Explicit
language=autoremains the mode for deliberate code switching andlanguage_hints.
2026-08-11 — omitted language is explicitly warned
- Omitted-language JSON responses now include a structured
language_defaultedwarning and the effective default language. - All response formats expose
X-Omi-Language-Source; omitted requests also exposeX-Omi-Warning. - Console quickstarts now use
language=autoso a copied first request does not silently assume English.
2026-08-11 — Documentation and availability contract
- At that date, the direct-upload
profiledefault was documented conditionally by duration. This historical routing was superseded on 2026-08-22 by the singledefaultprofile above. - Realtime is explicitly documented as a private pilot with no self-serve production endpoint. File and long-audio transcription remain the generally available surfaces.
- Added an open-source local-runtime guide and a production checklist covering key safety, retries, idempotency, retention, model builds, and service status.
2026-08-08 — General availability contract
- 1,500 free audio-minutes per calendar month on every account, plus any promotional grant. At the cap, requests are refused with
402; you are never silently billed. Paid usage continued at the then-current rate with no subscription. - Explicit error codes in the standard envelope:
403 entitlement_deniedwhen a key is not entitled to a requested feature,503 capacity_unavailablewhen the requested serving capacity is not available, and402 billing_blockedfor billing stops. - Every error response is exactly
{"error": {"code": "…", "message": "…"}}. Branch onerror.code. - Terms changes that affect the contract are announced at least 30 days before they take effect.
2026-08-05 — EU region cutover
- All processing runs in the EU (eu-central-1). Both
api.omi.healthandapi.eu.omi.healthare served from that region. - Result and job-metadata retention is a console dial from 1 to 72 hours, default 24 hours. Webhook jobs keep an effective 9-hour minimum so the last delivery retry can still be picked up.
2026-08-04 — Longer audio per job
- Maximum audio duration raised from 30 minutes to 2 hours (7,200 seconds); minimum lowered to 1 second.
- The
min_audio_secondsandmax_audio_secondsvalues in the job envelope remain authoritative for the live deployment.
2026-07-31 — v6 benchmark board
- The published benchmark board now covers 29 systems, including gpt-transcribe.
- Benchmark claims apply to English unless stated otherwise.
2026-07-26 — language=auto generally available (sync)
- Per-utterance automatic language detection is generally available on the synchronous endpoint with
language=auto, optionally narrowed withlanguage_hints. - Omitting
languagestill uses the key default and then English; omission never enables detection. - Automatic detection on long-audio jobs is available to named evaluation accounts while the paid entitlement is introduced.
Served model builds
Verbose responses report the exact build in metadata.model_build. Pin against it to detect a model change.
| Model | Pinned build | Since |
|---|---|---|
omi-medical-1 | omi-medical-1@9e0248f339dc | 2026-07-29 |