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_final remains 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 asSPEAKER_CAPACITY_FULL rather 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-1 now has one authoritative processing profile, default, with the same qualified behavior at every duration.
  • The legacy request values standard andturbo remain accepted as deprecated aliases for default; 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 language now 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=auto remains the mode for deliberate code switching and language_hints.

2026-08-11 — omitted language is explicitly warned

  • Omitted-language JSON responses now include a structuredlanguage_defaulted warning and the effective default language.
  • All response formats expose X-Omi-Language-Source; omitted requests also expose X-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 singledefault profile 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_denied when a key is not entitled to a requested feature, 503 capacity_unavailable when the requested serving capacity is not available, and 402 billing_blocked for billing stops.
  • Every error response is exactly {"error": {"code": "…", "message": "…"}}. Branch on error.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.health and api.eu.omi.health are 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_seconds and max_audio_seconds values 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 with language_hints.
  • Omitting language still 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.

ModelPinned buildSince
omi-medical-1omi-medical-1@9e0248f339dc2026-07-29