API транскрибации нужен в тот момент, когда записи перестают быть штучными. Пока это файл в неделю, его спокойно бросают в браузер руками. Когда в сутки прилетает двести звонков из телефонии, поток пользовательских видео или расписание вебинаров, ручная загрузка становится отдельной работой для живого человека, причём работой, которую никто не хочет делать.
У Шöпота есть публичное API, и вся его спецификация живёт на api.shopot.ai: методы, авторизация, формат результата, условия работы. Документация обновляется вместе с самим API, поэтому сверяться стоит с ней, а не с примерами из чужих статей, включая эту.
Как подключить API транскрибации
- Оцени качество текста до того, как писать код. Зарегистрируйся на app.shopot.ai и прогони через интерфейс свои реальные записи: шумный звонок, встречу с несколькими голосами, файл с терминами из твоей области. Если текст устраивает, дальше интеграция решает вопрос объёма, а не качества.
- Прочитай документацию на api.shopot.ai целиком, до первой строчки кода. Угадывать по аналогии с другими сервисами тут дороже, чем потратить полчаса на чтение.
- Ключ доступа храни на своей стороне, в секретах или переменных окружения. Не в коде фронтенда, не в репозитории, не в конфиге, который уезжает клиенту. Утёкший ключ это чужой доступ к твоим расшифровкам и к твоему балансу.
- Заложи асинхронность в архитектуру. Файл не превращается в текст в момент запроса: задача уходит в обработку, результат приходит позже. Чтобы не опрашивать статус в цикле, в API предусмотрен вебхук, детали настройки в документации. Синхронный пользовательский сценарий на расшифровку завязывать не стоит.
- Заложи время обработки. Ориентир тот же, что в интерфейсе: примерно минута на каждые 10 минут записи. Часовая встреча готова где-то за шесть минут, полтора часа около девяти, двухчасовой вебинар около двенадцати.
- Продумай ошибки и повторы. Сеть отваливается, файл приезжает битым, вебхук не доходит с первого раза. Нужны повторные попытки с нарастающей задержкой, защита от повторной обработки одного и того же файла и отдельная очередь для задач, которые не прошли даже после ретраев.
- Разложи результат туда, где он нужен: в свою базу, в карточку сделки, в файловое хранилище, в поисковый индекс. С этого момента расшифровка становится частью твоих данных, а не отдельной вкладкой в браузере.
Что приходит в результате кроме сплошного текста
Простыня текста без структуры для интеграции почти бесполезна. Поэтому расшифровка возвращается сегментами: у каждого куска речи есть тайм-коды и разметка по говорящим, то есть диаризация. Понятно, кто говорил и на какой минуте. Для аналитики звонков это база: можно считать, сколько времени говорил менеджер и сколько клиент, вытаскивать нужный фрагмент по времени, подсвечивать реплику в своём плеере, собирать цитаты с точной привязкой к записи. Саммари по записи доступно опцией.
Точный состав ответа, названия полей и порядок вызовов смотри в документации. Она меняется вместе с API, а статья нет, и это ровно тот случай, когда пять минут чтения экономят день на отладке.
Язык определяется автоматически, поддерживается 60+ языков, включая русский и английский. Оговорка важная для разноязычного потока: это распознавание речи, а не перевод. Русская встреча вернётся русским текстом, английская английским, переводить между языками Шöпот не умеет.
Что ещё умеет сам сервис, от поиска сразу по всем расшифровкам до AI-чата по записи, собрано в гиде по транскрибации аудио и видео.
Когда нужен API, а когда хватит интерфейса
Честный ответ: интеграция оправдана не всегда. Если записей десяток в месяц и они разные, расшифровка аудио в текст через браузер закроет задачу без единой строчки кода, и для команды из пяти человек этого хватает надолго.
Код начинает окупаться там, где файлы возникают сами. Звонки падают из телефонии по событию, вебинары идут по расписанию, пользователи заливают видео в твой сервис круглые сутки. Разбирать такой поток руками перестают на второй неделе. Дальше обычно вырастает и весь конвейер: загрузка, расшифровка, саммари, выгрузка в базу знаний, уведомление ответственному. Каждый шаг по отдельности несложный, ценность в том, что между шагами нет человека.
Вторая причина написать интеграцию: результат должен лежать внутри твоего продукта. Пользователь загружает запись у тебя и получает текст у тебя же, не уходя на сторонний сайт. Тот же случай, когда расшифровка звонка нужна прямо в карточке клиента в CRM: менеджер откроет её там, где работает, и не откроет в отдельном сервисе, куда надо специально заходить.
Что проверить до того, как писать код
Обычно вопрос упирается не в методы API, а в безопасников, юристов и бюджет.
Где физически лежат данные. Расшифровки и саммари хранятся на серверах в РФ без ограничения по сроку, исходные медиафайлы ограниченное время, срок зависит от тарифа. Удаление данных делается по запросу.
Чья инфраструктура их обрабатывает. Обработка идёт на собственных серверах Шöпота, а не на арендованных мощностях: около 99% процессинга остаётся внутри своего контура. Для интеграции это ещё и практический плюс, никакого VPN на стороне твоих серверов не потребуется.
Сколько это будет стоить. Условия работы через API описаны отдельно от того, как устроена оплата в интерфейсе, и завязаны на баланс. Считать бюджет стоит по актуальным цифрам с api.shopot.ai.
Остальные критерии, по которым имеет смысл сравнивать варианты, разобраны в статье о том, как выбрать сервис транскрибации.
FAQ
Чем API отличается от загрузки через сайт?
Разница в том, кто ставит задачу и куда уходит результат. В интерфейсе запись загружает человек и там же её читает. Через API запрос отправляет твой код по событию или по расписанию, а результат приезжает в твою систему в машиночитаемом виде, с сегментами, тайм-кодами и разметкой по говорящим.
Разница в том, кто ставит задачу и куда уходит результат. В интерфейсе запись загружает человек и там же её читает. Через API запрос отправляет твой код по событию или по расписанию, а результат приезжает в твою систему в машиночитаемом виде, с сегментами, тайм-кодами и разметкой по говорящим.
Как забрать результат, если обработка асинхронная?
Задача ставится в очередь, готовый результат приходит позже. Для уведомления о готовности в API есть вебхук: твой сервис получает сигнал и забирает данные, вместо того чтобы держать соединение или дёргать статус в цикле. Как его настроить, описано в документации.
Задача ставится в очередь, готовый результат приходит позже. Для уведомления о готовности в API есть вебхук: твой сервис получает сигнал и забирает данные, вместо того чтобы держать соединение или дёргать статус в цикле. Как его настроить, описано в документации.
Что делать, если запрос не прошёл или вебхук не доехал?
Закладывать повторные попытки с нарастающей задержкой и хранить у себя идентификатор каждой задачи, чтобы один и тот же файл не ушёл в обработку дважды. Задачи, которые не прошли и после ретраев, лучше складывать в отдельную очередь на ручной разбор, а не терять молча.
Закладывать повторные попытки с нарастающей задержкой и хранить у себя идентификатор каждой задачи, чтобы один и тот же файл не ушёл в обработку дважды. Задачи, которые не прошли и после ретраев, лучше складывать в отдельную очередь на ручной разбор, а не терять молча.
Где хранить ключ доступа?
На своей стороне, в хранилище секретов или переменных окружения бэкенда. В клиентский код ключ не кладут: оттуда его достанет любой желающий.
На своей стороне, в хранилище секретов или переменных окружения бэкенда. В клиентский код ключ не кладут: оттуда его достанет любой желающий.
Сколько ждать результат по длинному файлу?
Ориентир примерно минута обработки на каждые 10 минут записи, то есть двухчасовой вебинар обрабатывается около двенадцати минут. Для конвейера закладывай ожидание с запасом.
Ориентир примерно минута обработки на каждые 10 минут записи, то есть двухчасовой вебинар обрабатывается около двенадцати минут. Для конвейера закладывай ожидание с запасом.
Можно ли протестировать качество до интеграции?
Да, и так правильнее. Загрузи несколько боевых записей руками на app.shopot.ai и посмотри на текст и на разбивку по говорящим. К моменту написания кода у тебя будет понятное ожидание от результата, а не надежда.
Да, и так правильнее. Загрузи несколько боевых записей руками на app.shopot.ai и посмотри на текст и на разбивку по говорящим. К моменту написания кода у тебя будет понятное ожидание от результата, а не надежда.
Начни с документации
Всё описание API лежит на api.shopot.ai: методы, авторизация, формат результата, условия работы. Оттуда и стоит начинать, если решение уже принято.
Если сначала хочется посмотреть на качество расшифровки своими глазами, зарегистрируйся на app.shopot.ai и прогони пару своих записей через интерфейс.