---
title: "API транскрибации для видео и аудио"
description: "Превращайте ссылки YouTube, TikTok, Instagram, LinkedIn и Twitter/X в расшифровки с таймкодами с помощью одного REST API — сначала субтитры, AI, когда их нет."
canonical: "https://transcript.im/ru/api"
markdown: "https://transcript.im/ru/api.md"
---

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

Превращайте ссылки YouTube, TikTok, Instagram, LinkedIn и Twitter/X в расшифровки с таймкодами с помощью одного REST API — сначала субтитры, AI, когда их нет.

## Ссылки

- [Канонический HTML](https://transcript.im/ru/api)
- [Markdown](https://transcript.im/ru/api.md)


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.

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

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

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

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

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

### YouTube

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

### TikTok

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

### Instagram

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

### LinkedIn

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

### Twitter/X

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

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

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

- Отправьте источник — передайте `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](/docs)
- [Документ OpenAPI](/docs/openapi.json)
- [MCP-сервер](/ru/mcp)
- [Навыки агентов](/ru/skills)
- [Расшифровка видео YouTube](/ru/youtube-transcript)
- [Конспект видео](/ru/youtube-video-summarizer)
- [Генератор субтитров](/ru/youtube-subtitle-generator)
- [Скачать субтитры YouTube](/ru/youtube-subtitle-downloader)
- [Транскрипт канала YouTube](/ru/youtube-channel-transcript)
- [Транскрипт плейлиста YouTube](/ru/youtube-playlist-transcript)
## Частые вопросы об 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 или простого текста.

- [Создать API-ключ](/app/account/api-keys)
- [Читать документацию](/docs)
