---
title: "Распознать речь в аудио"
method: POST
path: "/v1/audio/transcriptions"
tags: ["Audio"]
---

# Распознать речь в аудио

`POST /v1/audio/transcriptions`

## Request

- Base URL: `https://api.hubris.pw`
- URL: `https://api.hubris.pw/v1/audio/transcriptions`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.hubris.pw/oauth/authorize`, token URL `https://api.hubris.pw/oauth/token`, scopes: `chat:write`)

OpenAI-совместимое распознавание речи: аудиозапись на входе, текст на выходе. Работает официальный SDK OpenAI (`audio.transcriptions.create`).

Два формата тела с одинаковым результатом: `multipart/form-data` с файлом, как у OpenAI, или `application/json` с аудио в base64 (`input_audio`). Ссылки на аудио не принимаются.

Стрима нет: `stream: true` — 400. `response_format` — только `json` или `verbose_json`.

Оплата по факту запроса: `usage.cost` — списано в копейках. Часть моделей тарифицируется по длительности записи, часть по токенам. Список моделей: `GET /v1/models?output_modalities=transcription`.

## Request body

- TranscriptionJsonRequest
  - `model` string, required
  - `input_audio` object, required: Аудио для распознавания. Прямые URL не поддерживаются.
    - `data` string, required: Аудио в base64 (без data:-префикса).
    - `format` string, required: Формат: wav, mp3, flac, m4a, ogg, webm, aac.

## Response `200`

Распознанный текст.

- TranscriptionResponse
  - `text` string, required: Распознанный текст. Пустая строка — тоже результат: в записи тишина.
  - `usage` object
    - `seconds` number: Длительность обработанного аудио в секундах, если модель её сообщает.
    - `input_tokens` integer
    - `output_tokens` integer
    - `total_tokens` integer
    - `cost` integer: Списано с баланса, в копейках.

## Other responses

- `400`: Невалидное тело: нет `model`, `file` или `input_audio`, `stream: true`, неподдерживаемый `response_format`; ключ BYOK.
- `401`: Ключ не передан, невалиден, отозван или заморожен (`invalid_api_key`, `key_frozen_spike`).
- `402`: Недостаточно средств на балансе (`insufficient_balance`).
- `403`: Нет права `chat:write`: ключ только для чтения (`key_read_only`) или OAuth-токен без него (`insufficient_scope`). Ещё причины: management-ключ (`inference_key_required`), запрос не с адреса, к которому привязан ключ (`key_ip_not_allowed`), или заблокированный аккаунт (`account_blocked`).
- `404`: Модель не найдена или это не модель распознавания (`model_not_found`).
- `413`: Тело запроса больше лимита (`request_too_large`).
- `429`: Исчерпан лимит расхода ключа (`daily_limit_exceeded`, `key_limit_exceeded`) или провайдер временно ограничил запросы. Пауза — в `Retry-After`.
- `502`: Ошибка провайдера или не удалось определить стоимость (`pricing_unavailable`). Списания нет.
- `503`: Курс ЦБ РФ временно недоступен (`exchange_rate_unavailable`).
- `504`: Таймаут распознавания (`upstream_timeout`).

---

[API](https://skmtc.dev/hubris/apis/hubris-api.md) · [All operations](https://skmtc.dev/hubris/apis/hubris-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hubris/apis/hubris-api/revisions/79ea91ed8f10?raw)
