Представляем API Наговори
Представляем API Наговори
Сегодня мы запускаем API Наговори — простой REST-интерфейс к нашему движку распознавания и синтеза речи. Если вы уже пользуетесь Наговори через веб-интерфейс или Telegram-бота, теперь вы можете встроить те же возможности напрямую в свои приложения.
Зачем API?
С момента запуска Наговори обработал сотни тысяч минут аудио через веб-панель и ботов в мессенджерах. Но разработчики продолжали спрашивать: «Можно ли вызвать это с моего сервера?»
Теперь ответ — да.
Мы создали API для команд, которым транскрипция нужна как строительный блок, а не отдельный инструмент. Например: CRM, которая автоматически расшифровывает звонки с клиентами. Подкаст-платформа, генерирующая поисковые транскрипты. Юридическая фирма, превращающая показания в структурированные документы. Служба поддержки, логирующая звонки текстом.
Это не гипотетические сценарии — это реальные запросы от команд, уже использующих Наговори через веб.
Что можно сделать
API покрывает всё, что есть в веб-интерфейсе, и спроектирован предсказуемо. Никаких websocket'ов, GraphQL или проприетарных SDK. Только JSON через HTTPS.
Распознавание речи:
- Загрузка аудио в любом распространённом формате (MP3, WAV, OGG, FLAC, M4A, WEBM)
- Автоматическое определение языка из 50+
- Сегменты с таймкодами для генерации субтитров
- Стриминг в реальном времени через SSE — текст появляется по мере распознавания
- AI-постобработка: очистка от слов-паразитов, структурированные резюме
Синтез речи:
- Преобразование текста в естественную речь с 7 голосами
- Стриминг аудио в реальном времени для интерактивных приложений
- Пакетный синтез для предварительного рендеринга контента
- Поддержка ударений в русском тексте (за́мок vs замо́к)
Управление использованием:
- Создание и управление API-ключами из профиля
- Отслеживание баланса через
/v1/profile/usage - Цены как в вебе — без дополнительной платы за API
Аутентификация
Мы сделали аутентификацию максимально простой. Создайте API-ключ на странице профиля и используйте его как Bearer-токен:
curl https://api.nagovori.ru/v1/me \
-H "Authorization: Bearer nag_ВАШ_КЛЮЧ"
Ключи начинаются с nag_ — их легко найти в code review и сканерах секретов. Ключи хешируются SHA-256 перед сохранением — мы никогда не храним сырой ключ. Если ключ утёк, мгновенно отзовите его в профиле и создайте новый.
Можно создать несколько ключей для разных сред (staging, production, CI) и отзывать их независимо.
Полный пример
Вот полный цикл транскрипции на Python — от загрузки файла до печати результата:
import requests
import time
import os
API_KEY = os.environ["NAGOVORI_API_KEY"]
BASE = "https://api.nagovori.ru/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}
# 1. Получаем presigned URL для загрузки
presign = requests.post(f"{BASE}/uploads/presign", headers=headers, json={
"filename": "call.mp3",
"content_type": "audio/mpeg",
"size_bytes": os.path.getsize("call.mp3"),
}).json()
# 2. Загружаем файл напрямую в хранилище
with open("call.mp3", "rb") as f:
requests.put(presign["upload_url"], data=f,
headers={"Content-Type": "audio/mpeg"})
# 3. Запускаем транскрипцию
job = requests.post(f"{BASE}/transcriptions", headers=headers, json={
"object_key": presign["object_key"],
"filename": "call.mp3",
"content_type": "audio/mpeg",
"size_bytes": os.path.getsize("call.mp3"),
"language": "auto",
}).json()
# 4. Ожидаем результат
while job["status"] in ("queued", "processing"):
time.sleep(3)
job = requests.get(
f"{BASE}/transcriptions/{job['id']}", headers=headers
).json()
if job["status"] == "completed":
print(job["transcript_text"])
else:
print(f"Ошибка: {job.get('error_message')}")
Тот же подход работает на любом языке. На странице Примеры — версии на TypeScript, Go и cURL.
Стриминг в реальном времени
Для приложений, которым нужно показывать текст по мере распознавания, API поддерживает Server-Sent Events:
import requests
url = f"{BASE}/transcriptions/{job_id}/stream"
response = requests.get(url, headers=headers, stream=True)
for line in response.iter_lines():
if line.startswith(b"data: "):
# Парсим JSON и обновляем интерфейс
pass
Стрим отправляет события token с отдельными словами и финальное событие done с полным текстом.
Тарификация
API использует тот же баланс минут, что и веб-интерфейс и боты. Отдельного прайса для API нет — бесплатные минуты или купленный пакет расходуются из общего пула.
Пакеты минут начинаются от 1.4 ₽/мин при больших объёмах. Каждый новый аккаунт получает бесплатные минуты без привязки карты.
Лимиты
Для стабильности сервиса:
- 60 API-запросов в минуту на пользователя
- 1 параллельная транскрипция (остальные встают в очередь)
- Загрузка файлов через presigned URL
Этих лимитов достаточно для большинства случаев. Если нужен больший throughput — напишите нам.
Начало работы
- Войдите на nagovori.ru
- Перейдите в Профиль и создайте API-ключ
- Следуйте Быстрому старту — первая транскрипция за 5 минут
- Изучите полную документацию и интерактивную справку API
Нам интересно увидеть, что вы создадите. Если есть вопросы — пишите через платформу.