Представляем BillionVerify: проверяйте миллиарды email за 1% стоимости. Попробовать BillionVerify

transcript.im

REST API

API транскрибации для видео и аудио

transcript.im открывает тот же конвейер извлечения, на котором работает продукт, как версионированный API транскрибации. Отправьте URL видео или аудио и получите текст с таймкодами в JSON или обычном тексте — платформа определится сама. Сначала используются готовые субтитры; если у видео их нет, AI транскрибирует аудио, а результат доставляется асинхронно.

  • Один url принимает полную или короткую ссылку и определяет YouTube, TikTok, Instagram, LinkedIn и Twitter/X; для YouTube распознаётся и просто id видео, а platform вместе с externalId покрывают источник, который вы уже знаете.
  • Сначала используются субтитры; если у видео их нет, AI транскрибирует звук, а загруженный локальный файл всегда отправляется на распознавание речи.
  • format=json возвращает сегменты с таймкодами, а format=text — обычный текст, готовый к вставке.
  • Пакетное извлечение охватывает списки URL, плейлисты и каналы.
  • Пакетный экспорт поддерживает txt, csv, json, srt, vtt и zip; сохранённая расшифровка скачивается в txt, srt, vtt, json или md.
  • Сохранённые расшифровки хранятся в библиотеке аккаунта, а поиск по YouTube охватывает поиск, видео, каналы, загрузки, плейлисты и субтитры.
  • Полный контракт опубликован в виде документа OpenAPI.
Transcript API: запрос со ссылкой на видео возвращает расшифровку с таймкодами в формате JSON

Что делает API transcript.im

API transcript.im превращает публичную ссылку на видео или аудио в расшифровку с таймкодами, которую ваш продукт может читать, хранить, искать или передавать в модель. Вы отправляете URL; API определяет платформу, ищет уже существующую дорожку субтитров автора и возвращает текст с таймкодом в каждой строке. Если у видео вообще нет субтитров, API не останавливается на ошибке — он переключается на AI-транскрипцию озвучки, чтобы тот же запрос всё равно дал текст.

Именно в этом и есть суть API для извлечения расшифровки: вам не нужны отдельный загрузчик, парсер субтитров и сервис распознавания речи, сшитые вместе. API выбирает самый дешёвый источник, который работает для каждой ссылки, сохраняет таймкоды привязанными к тому, что действительно было сказано, и сообщает, какой язык он вернул. Готовая расшифровка приходит сразу; видео, которому нужно распознавание речи, передаётся как задача, чтобы длинная запись не держала ваш запрос открытым.
  • Один запрос — реальный текст: разрешите ссылку и получите сегменты расшифровки с таймкодами или простой текст.
  • Субтитры в первую очередь, AI во вторую — используйте дорожку автора, когда она есть, и распознавайте аудио, когда её нет.
  • Асинхронность по умолчанию для ASR — id задачи позволяет опрашивать длинную транскрипцию, не блокируя запрос.
  • Учёт языков — укажите приоритет языка и получите обратно язык, который определил API.
  • Независимость от платформы — вызывающему не нужно знать, где размещено видео.

Один API расшифровки для пяти платформ

Video Transcript API: один API подключает YouTube, TikTok, Instagram, LinkedIn и X к расшифровкам с таймкодами

YouTube

Расшифровки для любого публичного видео YouTube, Short или прямой трансляции: сначала используются субтитры автора, а при их отсутствии — AI-транскрипция. YouTube — ещё и платформа с полным набором функций поиска — поиск, видео, каналы, загрузки, плейлисты и субтитры — доступных вместе с самой расшифровкой. Архив канала или плейлист превращается в пакет расшифровок с таймкодами, а одиночная ссылка возвращается как читаемый текст, по которому можно искать.

TikTok

Расшифровки для публичных видео TikTok: сначала используются субтитры, а распознавание речи служит запасным вариантом. Вставьте ссылку на видео и читайте озвученный текст как чистый текст с таймкодами, который можно переиспользовать, переводить или цитировать. Один и тот же вызов охватывает и короткий клип, и длинную загрузку, поэтому тренд, туториал и говорящая голова — всё возвращается текстом.

Instagram

Расшифровки для публичных Instagram Reels и видеопостов. У Instagram нет дорожки субтитров, поэтому извлечение — это асинхронное распознавание речи: отправьте ссылку, опрашивайте задачу и заберите текст, когда он будет готов. Так Reels становится пригодным для цитирования и поиска, хотя платформа никогда не публиковала его слова в виде текста.

LinkedIn

Расшифровки для публичных видеопостов LinkedIn: сначала используются субтитры, а распознавание речи служит запасным вариантом. Результат приходит с таймкодами, поэтому выступление, продуктовый клип или записанная встреча становятся текстом с поиском, который можно цитировать и переиспользовать. Извлеките тезисы из записи вебинара или превратите апдейт основателя в черновик, который можно редактировать.

Twitter/X

Расшифровки для публичных видеопостов X. У X нет дорожки субтитров, поэтому извлечение идёт через асинхронное распознавание речи: отправьте ссылку, опрашивайте задачу и заберите текст с таймкодами, по которому можно искать. Точно цитируйте видео или сохраните его озвученный контент в архив, пока пост не отредактировали или не удалили.

Как проходит запрос на расшифровку

Один вызов проводит ссылку или загруженный файл от входа до расшифровки, и API сообщает, какой путь он выбрал.

YouTube Transcript API: ссылка YouTube проходит путь от очереди до готовой расшифровки
  • Отправьте источник — передайте url, укажите platform и externalId, если вы их уже знаете, или загрузите файл как multipart/form-data на тот же endpoint.
  • Получите совпадение по субтитрам — когда у видео есть субтитры на языке из вашего списка, расшифровка возвращается в ответе.
  • Обработайте промах по языку — когда субтитры есть, но ни одни не совпадают с вашим списком, запрос продолжается AI-транскрипцией и возвращает 202 с id задачи; 404 с availableLanguages возвращается только тогда, когда распознавание речи не разрешено для вызывающего.
  • Принудительно используйте ASR или переходите к нему — явная запись asr, видео вообще без дорожки субтитров или загруженный файл запускают задачу ASR и возвращают id задачи.
  • Опрашивайте или подпишитесь на поток — читайте задачу через GET /v1/transcript/job/{id}, пока она не завершится успешно или с ошибкой, либо подпишитесь на её поток /events для прогресса через server-sent. Запрос задачи возвращает 200 даже для неудачной задачи, поэтому ветвитесь по полю status.
  • Прочитайте результат — готовая расшифровка содержит определённый язык, длину, сегменты с таймкодами и, если запрошено, метаданные: название, автора и дату публикации.
  • Повторяйте безопасно — уже извлечённая расшифровка отдаётся из кэша вместо запуска новой задачи, поэтому тот же источник можно запросить снова.
  • Сначала проверьте — GET /v1/transcript/info разрешает источник и перечисляет языки, которые он может обслужить, прежде чем вы запустите извлечение.
Поскольку один и тот же endpoint обслуживает и попадание в кэш, и новое извлечение, ваша интеграция не ветвится по источнику: она всегда отправляет источник и реагирует на полученный статус. Совпадение по субтитрам возвращает расшифровку напрямую, промах по языку продолжается AI-транскрипцией и возвращает 202 с id задачи, а действительно отсутствующий ресурс или запрещённый запасной вариант возвращает 404. Каждый путь возвращает одну и ту же структуру расшифровки, как только текст готов.

Пакетное извлечение и экспорт

Реальные задачи редко ограничиваются одним видео, поэтому API принимает пакет в виде списка URL, плейлиста или канала. Каждый пакет ведёт собственную статистику — сколько элементов в ожидании, сколько успешно и сколько не удалось — и возвращает элементы постранично, чтобы длинный канал не приходил одним огромным набором данных.

  • Три формы пакета — POST /v1/batch принимает список URL, плейлист или канал в зависимости от отправленного тела запроса.
  • Независимый статус — одна неудачная ссылка отмечается отдельно и никогда не отбрасывает остальной пакет; неудачные элементы можно повторить через /retry.
  • Постраничные элементы — читайте пакет через GET /v1/batch/{batchId}, затем следуйте по возвращённому токену страницы для оставшихся элементов.
  • Прогресс в реальном времени — каждый опрос возвращает обновлённые счётчики, поэтому вызывающий может показать, какая часть длинного запуска завершена.
  • Экспорт в вашем формате — скачайте готовый пакет из /export в виде txt, csv, json, srt, vtt или zip.
Для конвейера субтитров экспорт srt и vtt сразу попадает в редактор или плеер. Для архива csv, json и zip сохраняют целую библиотеку записей как единый корпус с поиском. Форматы совпадают с ответами для одиночной расшифровки, поэтому потребитель, обрабатывающий один результат, уже умеет читать пакет.

Сохранённые расшифровки в библиотеке аккаунта

Извлечение и хранение разделены: расшифровка становится частью библиотеки аккаунта после сохранения, и именно в библиотеке вы позже читаете, ищете, скачиваете и удаляете её без повторного запуска извлечения.

  • Список сохранённого — GET /v1/library/transcripts постранично перебирает расшифровки аккаунта, записи пакетов и строки истории неудач с поиском, фильтрами по платформе и языку и сортировкой.
  • Чтение одного элемента — GET /v1/library/transcripts/{platform}/{externalId} возвращает сохранённую расшифровку по платформе и external id или для указанного вами языка.
  • Скачивание — маршрут /download экспортирует сохранённую расшифровку в виде txt, srt, vtt, json или md.
  • Связанный контент — маршрут /related перечисляет другие сохранённые элементы с того же канала.
  • Удаление — DELETE убирает элемент из библиотеки, не затрагивая копии других.
  • Чтение в рамках аккаунта — запрос к библиотеке возвращает только то, что сохранил аккаунт, и никогда не запускает новое извлечение, поэтому повторное обращение к сохранённой расшифровке — это чтение, а не новая задача.

Поиск по YouTube помимо расшифровок

YouTube — платформа, где API также отвечает на вопросы вокруг расшифровки, используя те же имена ресурсов, что и YouTube Data API.

  • Поиск — GET /v1/youtube/search находит видео, каналы или плейлисты по запросу и возвращает результаты с постраничной навигацией по курсору.
  • Видео — GET /v1/youtube/videos возвращает сведения о видео, включая наличие субтитров.
  • Каналы — GET /v1/youtube/channels разрешает канал по id или @handle.
  • Загрузки канала — GET /v1/youtube/channels/{channelId}/videos перебирает загрузки канала.
  • Элементы плейлиста — GET /v1/youtube/playlists/{playlistId}/items перебирает плейлист.
  • Субтитры — GET /v1/youtube/captions возвращает метаданные дорожки субтитров и текст субтитров для видео. Он никогда не запускает задачу распознавания речи: когда он сообщает requiresAsync, вызовите POST /v1/transcript, чтобы выполнить транскрипцию.
Поиск отвечает на вопрос, что расшифровывать; извлечение отвечает на вопрос, что было сказано. Разделяя эти две вещи, вы можете сначала искать и перечислять, а затем отправлять только выбранные ссылки в запрос на расшифровку или в пакет.

Создан для продакшена

Интерфейс намеренно компактный, а всё, что важно для сервиса, задокументировано, а не оставлено на догадки.

  • Один ключ доступа — аутентификация по API-ключу, передаваемому как Bearer-токен, либо через X-API-Key из скрипта или с сервера.
  • Ключи с областями доступа — выдавайте только те области, которые нужны вызывающей стороне; transcripts и batches покрывают извлечение и пакетную обработку.
  • Структурированные ошибки — сбои извлечения и валидации возвращают объект ошибки со стабильным code и понятным message; ответы аутентификации (401) и ограничения частоты (429) используют более простой плоский формат ошибки.
  • Понятные лимиты — запрос, превысивший лимит частоты, возвращает 429 с Retry-After, а успешные ответы содержат заголовки X-RateLimit-*, чтобы клиент мог корректно выждать паузу.
  • Опубликованный контракт — полный документ OpenAPI лежит в основе API, так что вы можете сгенерировать клиент, поднять мок сервера или проверить реальные ответы на соответствие схеме.
  • Двойник для агентов — тот же аккаунт и инструменты доступны через MCP-сервер transcript.im, если ваш клиент — это AI-клиент, а не сервис.

Связанные

Частые вопросы об API транскрибации

Что такое API transcript.im?

API transcript.im — это REST-интерфейс, который превращает публичную ссылку на видео или аудио в расшифровку с таймкодами: сначала используются готовые субтитры, а если их нет — AI-транскрибация.

Какие платформы поддерживает API transcript.im?

Он извлекает расшифровки из YouTube, TikTok, Instagram, LinkedIn и Twitter/X, определяя платформу по отправленной ссылке. Для YouTube, TikTok и LinkedIn сначала используются субтитры, а распознавание речи — как запасной вариант; у Instagram и X дорожки субтитров нет, поэтому сразу применяется распознавание речи.

Что происходит, если у видео нет субтитров?

Если у видео вообще нет дорожки субтитров, API запускает задачу ASR и возвращает id задачи; вы опрашиваете эту задачу, пока расшифровка не будет готова, поэтому запрос никогда не блокируется на распознавании речи.

Можно ли расшифровать локальный аудио- или видеофайл?

Да. POST /v1/transcript принимает тело multipart/form-data с частью file вместо URL. Загруженный файл сразу отправляется на распознавание речи, поэтому возвращается задача 202 — или результат 200, если обработка успевает уложиться в бюджет ожидания.

Может ли API transcript.im возвращать таймкоды вместе с текстом?

Да. Ответы в JSON содержат сегменты с таймкодами, а текстовые ответы могут сохранять префикс с таймкодом в каждой строке, чтобы вы могли вернуться к моменту, когда была произнесена строка.

Как запросить расшифровку на определённом языке?

Отправьте список приоритета языков через запятую, включая записи asr и asr-<code>. Совпадение по субтитрам возвращается сразу; если субтитры есть, но ни одни не совпадают со списком, запрос переходит к AI-транскрибации и возвращает задачу 202, а 404 со списком доступных языков возвращается только тогда, когда распознавание речи запрещено.

Как узнать, что асинхронная расшифровка готова?

Опрашивайте GET /v1/transcript/job/{id} с тем же ключом доступа, пока он не сообщит success или failed, либо подпишитесь на GET /v1/transcript/job/{id}/events для обновлений через server-sent events. Запрос статуса задачи возвращает 200, даже если задача завершилась с ошибкой, поэтому читайте поля status и error, а не HTTP-код.

Поддерживает ли API transcript.im пакетное извлечение?

Да. Пакет принимает список URL, плейлист или канал, отслеживает статус каждого элемента и возвращает элементы постранично.

В каких форматах можно скачать результат?

Готовый пакет экспортируется в txt, csv, json, srt, vtt или zip; отдельная сохранённая расшифровка скачивается в txt, srt, vtt, json или md.

Где хранятся сохранённые расшифровки?

Сохранённые расшифровки и записи пакетов хранятся в разделе Library аккаунта, по пути /v1/library. Он предоставляет маршруты list, read, download, related и delete, а его чтение ограничено рамками аккаунта и никогда не запускает новое извлечение.

Что возвращает эндпоинт субтитров YouTube?

GET /v1/youtube/captions возвращает метаданные дорожки субтитров видео вместе с текстом субтитров. Он никогда не запускает задачу распознавания речи; когда он сообщает requiresAsync, вызовите POST /v1/transcript, чтобы запустить расшифровку.

Как API transcript.im сообщает об ошибках и лимитах частоты?

Ошибки извлечения и валидации используют объект с code и message; аутентификация возвращает плоский 401, а ограничение частоты — плоский 429 с Retry-After и заголовками X-RateLimit-*, чтобы клиент мог корректно выждать паузу.

Добавьте расшифровки в свой продукт

Создайте API-ключ, отправьте ссылку на видео или локальный файл и получите расшифровку обратно в виде JSON или простого текста.