Транскрибация в n8n и Python через API

Автоматизация без своего сервера распознавания: HTTP Request в n8n отправляет файл, Webhook-нода ловит событие о готовности, а текст уходит в таблицу, Telegram или CRM. Тот же сценарий — в паре десятков строк на Python.

API работает на любом платном тарифе, от Базового. Качество распознавания можно бесплатно попробовать в личном кабинете.

POST /v1/transcriptions · source_url
# Ссылка на YouTube, Rutube или VK Видео вместо файлаcurl -X POST "$API_BASE/v1/transcriptions" \  -H "Authorization: Bearer $AUDIO2TEXT_API_KEY" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: lecture-42" \  -d '{    "source_url": "https://www.youtube.com/watch?v=...",    "language": "auto",    "metadata": { "external_id": "lecture-42" }  }' # 202 Accepted{ "id": "125", "status": "queued", "duration_seconds": 3720, "request_id": "req_..." }

Нам доверяют команды из крупнейших компаний

РБК
Альфа-Банк
Avito
Сбер
Skyeng
Ozon
МТС
ВШЭ
Ведомости
Wildberries
РБК
Альфа-Банк
Avito
Сбер
Skyeng
Ozon
МТС
ВШЭ
Ведомости
Wildberries
РБК
Альфа-Банк
Avito
Сбер
Skyeng
Ozon
МТС
ВШЭ
Ведомости
Wildberries

Быстрый старт за три запроса

Ключ, задача и результат — без SDK и сложной настройки

Шаг 1Создайте API-ключ

Личный кабинет → Настройки → API. Выберите scopes — ключ показывается один раз.

Authorization: Bearer tr_live_…
Шаг 2Отправьте файл или ссылку

POST /v1/transcriptions принимает file или source_url и сразу отвечает 202 с id задачи.

POST /v1/transcriptions
→ 202 {"id":"123","status":"queued"}
Шаг 3Заберите результат

Дождитесь вебхука transcription.completed или опрашивайте статус, затем запросите результат.

GET /v1/transcriptions/123/result
→ 200 text, segments, …

Что вы получаете в ответе

Не просто распознанный текст, а готовая структура: реплики, спикеры, таймкоды, саммари и ваш ID

GET /v1/transcriptions/:id/result
{  "data": {    "id": "123",    "status": "done",    "language": "ru",    "duration_seconds": 1840,    "text": "Добрый день! Давайте сверим план на квартал. ...",    "segments": [      {        "start": 0.0,        "end": 4.2,        "speaker": "Speaker 1",        "text": "Добрый день! Давайте сверим план на квартал."      },      {        "start": 4.6,        "end": 9.8,        "speaker": "Speaker 2",        "text": "Да, по продажам идём с опережением на 12%."      }    ],    "participants": "...",    "summary": "Сверили квартальный план: продажи опережают план на 12%, ...",    "tags": "...",    "metadata": { "external_id": "crm-call-123" }  },  "request_id": "req_..."}
Так результат выглядит в вашей системе
00:00Speaker 1

Добрый день! Давайте сверим план на квартал.

00:04Speaker 2

Да, по продажам идём с опережением на 12%.

00:10Speaker 1

Отлично. Тогда обсудим бюджет на рекламу.

AI-саммари в ответе

Сверили квартальный план: продажи опережают план на 12%. Следующий шаг — обсудить рекламный бюджет.

textsegments[].start / endsegments[].speakersummarytagsparticipantsmetadata.external_id

Почему это удобно для автоматизаций

Стандартный REST и вебхуки — работает в любом инструменте, который умеет HTTP

Без своей ноды

Стандартные HTTP Request и Webhook в облачном и self-hosted n8n.

Ссылки на видео

source_url на YouTube, Rutube или VK Видео — без шага скачивания в сценарии.

Webhook вместо опроса

transcription.completed запускает следующую часть сценария сразу после готовности.

Безопасные повторы

Idempotency-Key защищает от дублей при ретраях n8n и сетевых ошибках.

Спикеры и таймкоды, саммари

В ответе сразу структура, которую удобно разложить по ячейкам таблицы или сообщению в Telegram.

Python без SDK

requests или httpx: отправка, ожидание и получение результата — пример ниже.

Рецепт для n8n: HTTP Request и Webhook

Без отдельной ноды — только стандартные ноды n8n. Адрес API скопируйте из документации в личном кабинете.

Шаг 1

Отправить файл — нода HTTP Request

Method
POST
URL
{API_BASE}/v1/transcriptions
Authentication
Generic Credential Type → Header Auth: Authorization = Bearer tr_live_…
Send Headers
Idempotency-Key = уникальный ID файла или записи
Send Body
Form-Data
Body: file
Parameter Type — n8n Binary File, Input Data Field Name — data
Body: metadata
{"external_id":"{{ $json.id }}"}

Шаг 2

Дождаться результата — Webhook и HTTP Request

Webhook → HTTP Method
POST
Webhook → Path
transcription (любой)
Регистрация
Production URL ноды — в кабинете или POST /v1/webhook-endpoints, событие transcription.completed
HTTP Request → URL
{API_BASE}/v1/transcriptions/{{ $json.body.data.transcription_id }}/result
Дальше
Google Таблицы, Telegram, почта, CRM — любая нода n8n
Тот же сценарий на Python: отправка, ожидание, результат
import osimport timeimport requests API_BASE = os.environ["API_BASE"]  # адрес из документации в кабинетеHEADERS = {"Authorization": f"Bearer {os.environ['AUDIO2TEXT_API_KEY']}"} # 1. Поставить задачу: файл или ссылка на YouTube, Rutube, VK Видеоwith open("lecture.mp3", "rb") as audio:    task = requests.post(        f"{API_BASE}/v1/transcriptions",        headers={**HEADERS, "Idempotency-Key": "lecture-42"},        files={"file": audio},        data={"language": "auto"},    ).json() # 2. Ждать готовности; на 429 — пауза из Retry-Afterdelay = 3while True:    status = requests.get(f"{API_BASE}/v1/transcriptions/{task['id']}", headers=HEADERS)    if status.status_code == 429:        time.sleep(int(status.headers.get("Retry-After", delay)))        continue    state = status.json()["data"]["status"]    if state == "done":        break    if state in ("failed", "cancelled"):        raise SystemExit(f"Задача завершилась со статусом {state}")    time.sleep(delay)    delay = min(delay + 2, 15) # 3. Забрать результатresult = requests.get(    f"{API_BASE}/v1/transcriptions/{task['id']}/result", headers=HEADERS).json()["data"]for segment in result["segments"]:    print(f"[{segment['start']:.0f} c] {segment['speaker']}: {segment['text']}")print(result["summary"])

Telegram-боты и скрипты

  • Бот скачивает голосовое через Telegram Bot API и отправляет его в поле file.
  • Когда приходит вебхук transcription.completed, бот отвечает пользователю текстом.
  • Для пакетной обработки держите темп до 20 новых задач в минуту и повторяйте 429 после Retry-After.
  • Ключ храните на сервере бота, а не в клиентском коде.

Официальной ноды n8n, приложений для Make и Zapier и SDK нет — всё работает на обычных HTTP-запросах.

Расшифровывайте часы записей за минуты

API входит во все платные тарифы, минуты общие с кабинетом · от 0,50 ₽ за минуту на тарифе «Экспертный» при помесячной оплате

5,0 рейтинг пользователей•50 000+ пользователей•500 000+ часов расшифровки
−50%

Базовый

для регулярных задач

295 ₽/мес
590 ₽ /мес
Оплата за год — 3 540 ₽
500 минут в месяц

сверх лимита — 2 ₽/мин

Популярный
−50%

Стандартный

для большинства задач

495 ₽/мес
990 ₽ /мес
Оплата за год — 5 940 ₽
1 000 минут в месяц

сверх лимита — 1 ₽/мин

−50%

Экспертный

для больших объёмов

1 245 ₽/мес
2 490 ₽ /мес
Оплата за год — 14 940 ₽
5 000 минут в месяц

сверх лимита — 1 ₽/мин

Просто попробовать?15 минут в месяц бесплатно, навсегда
Начать бесплатно →
В каждом тарифе:
Telegram-ботЗапись встречИИ-отчёты и чатФайлы до 5 ГБСпикеры и таймкодыAPI
Отмена в один кликВозврат 7 дней

Только распознавание или API Audio2Text

Что остаётся сделать вашей команде в каждом варианте

Параметр
Только распознавание речи
API Audio2Text
Результат
Текст и таймкоды
Текст, сегменты с таймкодами и спикерами, саммари, теги
Разметка спикеров
Часто отдельный сервис или ручная разметка
speaker в каждом сегменте, подсказка num_speakers
Саммари
Нужно отдельно отправлять текст в LLM
summary в том же ответе /result
Видео по ссылке
Сначала скачать ролик и извлечь звук
source_url на YouTube, Rutube, VK Видео
Готовность результата
Держать соединение или часто опрашивать
Вебхук transcription.completed с подписью
Связь с вашими данными
Своя таблица соответствий
metadata.external_id возвращается в ответах
Оплата
Отдельный счёт за API
Минуты общие с кабинетом, оплата в рублях, счёт для юрлиц

Транскрибация в n8n без отдельной ноды

Официальной ноды Audio2Text для n8n нет, и она не нужна: достаточно стандартных нод HTTP Request и Webhook. Первая HTTP Request отправляет файл в POST /v1/transcriptions — тело Form-Data, поле file типа n8n Binary File, ключ в заголовке Authorization. Webhook-нода принимает событие transcription.completed, вторая HTTP Request забирает результат по id задачи, а дальше данные идут в любую ноду: Google Таблицы, Telegram, почту или CRM. Сценарий одинаково работает в облачном и self-hosted n8n.

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

Для скриптов и бэкендов не нужен SDK: хватит библиотеки requests или httpx. Скрипт отправляет файл или ссылку на YouTube, Rutube, VK Видео, получает id задачи, опрашивает статус с паузой в несколько секунд и забирает результат, когда статус становится done. Для пакетной обработки передавайте Idempotency-Key — повтор после сетевой ошибки не создаст дубль, а на ответ 429 ждите столько секунд, сколько указано в заголовке Retry-After.

Telegram-боты и скрипты: где ещё пригодится API

Бот для расшифровки голосовых собирается из того же сценария: бот скачивает голосовое через Telegram Bot API, отправляет его в поле file и отвечает пользователю, когда приходит вебхук. Так же автоматизируются выгрузки записей созвонов, лекций и подкастов — текст с таймкодами и спикерами и AI-саммари попадает туда, где с ним работает команда.

Частые вопросы

Коротко о подключении, лимитах и оплате API

Соберите свой сценарий транскрибации

Создайте ключ, добавьте HTTP Request в n8n или запустите скрипт на Python.

На любом платном тарифе · минуты общие с кабинетом · от 0,50 ₽ за минуту