hubris
API Reference
API REFERENCE

POST /v1/audio/transcriptions

Распознавание речи (транскрибация аудио в текст). OpenAI-совместимый формат — работает официальный openai SDK.

Превращает аудиозапись в текст: голосовые сообщения, звонки, подкасты, интервью, субтитры. OpenAI-совместимый формат — без переписывания работают openai Python/TypeScript SDK и любые клиенты под OpenAI Audio API: достаточно поменять base_url.

Стрима нет: один POST → один JSON-ответ с готовым текстом (stream: true отклоняется с кодом 400). Полный список моделей распознавания — в каталоге (фильтр «Транскрибация»): Whisper, GPT-4o Transcribe, Voxtral, Chirp и другие.

Эндпоинт

POSThttps://api.hubris.pw/v1/audio/transcriptions

Заголовки:

HeaderЗначение
AuthorizationBearer sk-gw-... (обязательно)
Content-Typemultipart/form-data (файл) или application/json (base64)

Тело запроса

Поддерживаются два формата — результат одинаковый.

Вариант 1: multipart/form-data (как у OpenAI)

ПолеТипПо умолчаниюОписание
filefileАудиофайл. Форматы: WAV, MP3, FLAC, M4A, OGG, WebM, AAC. До 25 МБ.
modelstringID модели распознавания, например openai/whisper-1.
languagestringавтоЯзык записи в ISO-639-1 (ru, en). Явное указание ускоряет и уточняет распознавание.
promptstringПодсказка: имена, термины, аббревиатуры, которые встречаются в записи.
temperaturenumber00–1. Выше — креативнее, ниже — детерминированнее.
response_formatstringjsonjson или verbose_json (поддержка verbose_json зависит от модели). Форматы text/srt/vtt не поддерживаются.
timestamp_granularities[]string[]segment и/или word — таймстемпы в verbose_json (поддерживается не всеми моделями).

Вариант 2: application/json (аудио в base64)

ПолеТипОписание
modelstringID модели распознавания.
input_audio.datastringАудио в base64 (без data:-префикса).
input_audio.formatstringФормат: wav, mp3, flac, m4a, ogg, webm, aac.

Прямые URL на аудио не поддерживаются — только файл или base64. Записи длиннее ~10 минут лучше резать на части: у провайдеров есть таймаут обработки (~60 секунд на запрос).

Минимальный пример

curl -s https://api.hubris.pw/v1/audio/transcriptions \-H "Authorization: Bearer sk-gw-..." \-F file=@voice.mp3 \-F model=openai/whisper-1 \-F language=ru
from openai import OpenAIclient = OpenAI(  base_url="https://api.hubris.pw/v1",  api_key="sk-gw-...",)with open("voice.mp3", "rb") as f:  r = client.audio.transcriptions.create(      model="openai/whisper-1",      file=f,      language="ru",  )print(r.text)
import fs from "node:fs";import OpenAI from "openai";const client = new OpenAI({baseURL: "https://api.hubris.pw/v1",apiKey: "sk-gw-...",});const r = await client.audio.transcriptions.create({model: "openai/whisper-1",file: fs.createReadStream("voice.mp3"),language: "ru",});console.log(r.text);

Ответ

{
  "text": "Привет! Это тестовая запись для распознавания речи.",
  "usage": {
    "seconds": 4,
    "input_tokens": 120,
    "output_tokens": 18,
    "total_tokens": 138,
    "cost": 6
  }
}

Поля ответа

ПолеТипОписание
textstringРаспознанный текст. Пустая строка — валидный результат (тишина в записи).
usage.secondsnumberДлительность обработанного аудио в секундах (если модель её сообщает).
usage.input_tokensintegerТокены аудио-входа.
usage.output_tokensintegerТокены текста на выходе.
usage.total_tokensintegerСумма.
usage.costintegerСтоимость в копейках. Hubris-расширение.

При response_format: "verbose_json" модели, которые это поддерживают, дополнительно возвращают language, duration, segments[] и words[] с таймстемпами.

HTTP-коды

КодКогда
200Успешное распознавание.
400Нет file/model (multipart) или input_audio (JSON), невалидное тело.
401Ключ отсутствует / отозван / невалиден.
402Недостаточно средств на балансе.
404Модели с таким model не существует или это не модель распознавания.
413Тело запроса больше лимита (файл до 25 МБ).
429Превышен дневной лимит на ключе.
502 / 503 / 504Транзиентные сбои у провайдера или курса ЦБ.

Формат тела ошибки и стратегия retry — Ошибки.

Биллинг

Стоимость считается по факту каждого запроса и возвращается в usage.cost в копейках — та же сумма, что списывается с баланса и видна в логах. Часть моделей тарифицируется по длительности записи, часть — по токенам; ориентиры цен — в каталоге с фильтром «Транскрибация».

Что дальше

  • Модели — как выбрать модель распознавания.
  • Ошибки — что делать на 429/502.
  • Цены — формула расчёта.

Обновлено: