Один ключ для всех AI-моделейСоздать аккаунтОплата в рублях, без VPN

ДокументацияРаспознавание речи

Распознавание речи

POST /v1/audio/transcriptions преобразует аудио в текст (speech-to-text). Формат совместим с OpenAI Whisper API.

Адрес

~/zenvy · plain
POST https://api.zenvy.su/v1/audio/transcriptions

Заголовки

ЗаголовокЗначение
AuthorizationBearer sk-zenvy-...
Content-Typemultipart/form-data

Поля формы

ПолеТипОбязательноОписание
filefileдаАудиофайл: mp3, wav, webm, ogg, flac, m4a, aac. До 25 МБ
modelstringдаМодель с распознаванием аудио — см. Модели и баланс, в architecture.input_modalities должно быть "audio"
languagestringнетЯзык аудио: ru, en и др. — повышает точность
promptstringнетПодсказка: имена, термины, аббревиатуры
response_formatstringнетjson (по умолчанию) или text

Пример запроса

~/zenvy · zsh
curl https://api.zenvy.su/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-zenvy-..." \
  -F "file=@meeting.mp3" \
  -F "model=gemini-2.5-flash" \
  -F "language=ru"

Пример ответа

~/zenvy · json
{
  "text": "Привет! Это распознанный текст из аудио."
}

При response_format=text ответ приходит обычным текстом без JSON-обёртки.

OpenAI SDK

~/zenvy · typescript
import OpenAI from "openai";
import fs from "node:fs";

const client = new OpenAI({
  apiKey: process.env.ZENVY_API_KEY,
  baseURL: "https://api.zenvy.su/v1"
});

const transcription = await client.audio.transcriptions.create({
  file: fs.createReadStream("meeting.mp3"),
  model: "gemini-2.5-flash",
  language: "ru"
});

console.log(transcription.text);

Аудио в чате

Модели с architecture.input_modalities, содержащим "audio", принимают аудио напрямую в /v1/chat/completions через блок input_audio:

~/zenvy · json
{
  "model": "gemini-2.5-flash",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "О чём это аудио?" },
        {
          "type": "input_audio",
          "input_audio": { "data": "<base64>", "format": "mp3" }
        }
      ]
    }
  ]
}
Какие модели подходят

Смотрите Модели и баланс: в architecture.input_modalities должно быть "audio".

Биллинг

Аудио тарифицируется токенами входа выбранной модели, текст ответа — токенами выхода. Подробнее: Токены и биллинг.