Skip to main content
Use the official OpenAI SDK (or any OpenAI-compatible client) with base_url = https://stt.eu.mihu.ai/v1 and the Umay key as API key. OpenAI model names are recognised by Umay v1 (umay, files) and, live, by Umay Stream v1.

File: POST /v1/audio/transcriptions with an OpenAI model name

Answer formats (text always has Damga Pro ITN unless normalize=false; usage is the audio duration): Streaming (stream=true, text/event-stream): transcript.text.delta events ({"type", "delta"}) as parts of the file are decoded — a file is decoded in parts of up to 28 s, so a short file gives one delta — then transcript.text.done ({"type", "text", "usage"}, same text as json). With voice options the file is analysed first, then sent segment by segment; with diarization each delta has segment_id and is followed by a transcript.text.segment event (id, start, end, text, speaker). Errors after the stream started come as an event {"type": "error", "error": {...}}. Errors for OpenAI model names use OpenAI’s shape (400 also for invalid field values, where the native API answers 422):
503 (busy) has "type": "server_error"; GET /v1/models lists umay, umay-stream and the accepted OpenAI names.

Live: WS /v1/realtime (OpenAI Realtime transcription session)

Both the current session format (session.update with "type": "transcription") and the beta one (transcription_session.update) are accepted; the answer uses the same family. /v1/stream is unchanged. Client → server Turn detection is always the server’s: a turn ends after ~0.8 s of silence (as /v1/stream); turn_detection and noise_reduction settings are accepted and echoed but do not change it (voice_isolation removes other voices). Server → client (per turn, in this order)