> ## Documentation Index
> Fetch the complete documentation index at: https://developers.mihu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Umay speech recognition: files, live audio, voice features

Umay is Mihu's speech recognition service: files and live audio, Turkish first. Audio and transcripts stay on the server of the region you call.

> [!NOTE]
>
> `GET /health` lists the languages and models a server has.

## Regions

| Region | Base URL | WebSocket |
| - | - | - |
| Europe | `https://stt.eu.mihu.ai` | `wss://stt.eu.mihu.ai` |
| Türkiye | `https://stt.tr.mihu.ai` | `wss://stt.tr.mihu.ai` |

Choose the region when you call the API: the two regions have the same paths, fields and answers, and your data stays on the server of the region you call. Examples use the Europe address. Every REST endpoint has a page under **API Reference** where you can pick the region, send a request and see the answer.

## Quick start

```bash Europe theme={null}
curl https://stt.eu.mihu.ai/v1/audio/transcriptions -H "Authorization: Bearer $KEY" \
  -F file=@call.wav -F model=umay -F language=tr
```

```bash Türkiye theme={null}
curl https://stt.tr.mihu.ai/v1/audio/transcriptions -H "Authorization: Bearer $KEY" \
  -F file=@call.wav -F model=umay -F language=tr
```

```json theme={null}
{"text": "Merhaba siparişiniz yarın saat 14'te teslim edilecek.", "model": "umay", "language": "tr", "duration": 4.36, "processing_time": 0.124}
```

Two APIs on the same server, side by side:

* **Native API** — `model=umay` / `umay-stream` (or no model): the Umay API below, unchanged.
* **OpenAI-compatible API** — OpenAI transcription model names (`whisper-1`, `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`,
  `gpt-4o-transcribe-diarize`, `gpt-transcribe`, any `gpt-…transcribe…`): OpenAI's fields, defaults, answer formats and
  errors, so the official OpenAI SDKs work by changing `base_url`. See [OpenAI-compatible API](https://developers.mihu.ai/stt/openai.md).

The model name in the request decides which one answers; all Umay options (`normalize`, `gender_detection`, `diarize`,
`hints`, …) work with both.

## Authentication

Every request needs the API key: header `Authorization: Bearer <KEY>`, or in the URL `?api_key=<KEY>` (for WebSocket clients that cannot set headers, e.g. browsers).
Browser OpenAI Realtime clients may also send it as the WebSocket subprotocol `openai-insecure-api-key.<KEY>` (next to `realtime`).
Missing or wrong key → `401` (native body `{"error":"invalid api key"}`; OpenAI's error object on `/v1/models`, `/v1/realtime`
and for OpenAI SDK clients).

## Endpoints

| Method | Path | Use |
| - | - | - |
| `GET` | `/health` | Languages and loaded models |
| `POST` | `/v1/audio/transcriptions` | Transcribe a file (multipart) — native or OpenAI-compatible by `model`; with `webhook_url`: [asynchronous](https://developers.mihu.ai/stt/async.md) |
| `GET` | `/v1/audio/transcriptions/{id}` | Status and result of an asynchronous transcription |
| `WS` | `/v1/stream` | Live transcription, native protocol (voice agents, calls) |
| `WS` | `/v1/realtime` | Live transcription, OpenAI Realtime transcription session |
| `GET` | `/v1/models` | Model list (OpenAI list shape) |
| `POST` | `/v1/voiceprints` | Store one person's voiceprint (with their consent) for [`reference_voiceprint`](https://developers.mihu.ai/stt/voiceprints) |
| `GET` | `/v1/voiceprints`, `/v1/voiceprints/{id}` | List your voiceprints / one voiceprint |
| `DELETE` | `/v1/voiceprints/{id}` | Delete a voiceprint for good |
| `POST` | `/v1/voiceprints/verify` | [Speaker verification](https://developers.mihu.ai/stt/verification.md): is this recording the voiceprint's person? Signed result |
| `GET` | `/v1/voiceprints/jwks` | Public key of the verification signatures |
| `POST` | `/v1/audio/isolation` | [Audio isolation](https://developers.mihu.ai/stt/isolation.md): the recording back without background voices and noise |
| `GET`, `DELETE` | `/v1/audio/isolation/{id}`, `/v1/audio/isolation/{id}/audio` | Status, download and deletion of an asynchronous cleanup |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.