# YouTube Transcript API для видео с субтитрами и без них

> YouTube Transcript API вернёт JSON, текст, SRT или VTT по ссылке: сначала субтитры, иначе ИИ. Цена — 1 кредит за минуту.

Canonical: https://transcript1.com/ru/features/youtube-transcript-api
Language: ru
Last updated: 2026-10-19

Через YouTube Transcript API вы передаёте ссылку, а получаете текст, JSON, SRT или VTT. Если у видео есть подходящие субтитры, берём их. Иначе расшифровываем звук с помощью ИИ.

- Сначала субтитры, при их отсутствии — распознавание речи
- 1 кредит за минуту при любом источнике текста
- Ссылки watch, youtu.be, Shorts и embed

## Выберите, откуда брать текст

### Одна запись по разным ссылкам

Принимаем watch, короткие ссылки youtu.be, Shorts, embed и ссылки live, с www и без него. Формат ссылки может отличаться, но видео остаётся тем же.

### Субтитры автора в приоритете

При source=auto сначала ищем субтитры, загруженные автором, затем автоматические. Дорожки с автоматическим переводом не используем.

### Нет субтитров? Расшифруем звук

Если подходящей дорожки нет, распознаём речь. Чтобы всегда получать новую расшифровку аудио, укажите source=stt.

### Источник виден в JSON

Проверьте transcript_source: youtube_captions означает текст из субтитров, speech_to_text — расшифровку звука.

### Цена не зависит от источника

За каждую начатую минуту видео нужен 1 кредит. Если транскрибация завершится с ошибкой или вы её отмените, кредиты не потратятся.

## Как получить транскрипт YouTube автоматически

Создайте API-ключ в личном кабинете и отправьте ссылку через POST /v1/transcriptions со своего сервера или из скрипта. Подойдёт Python или любой HTTP-клиент. С wait=60 запрос ждёт до 60 секунд. [Параметры и коды ответа](https://transcript1.com/ru/docs/api-reference#create-a-transcription) описаны в документации.

Сразу сохраните ID созданной транскрибации. Если время ожидания истекло, задача продолжает работать. Проверяйте её через GET /v1/transcriptions/:id, а не создавайте заново.

Обрабатывайте статусы отдельно: queued, fetching и transcribing означают, что работа ещё идёт. При completed можно читать транскрипт, при failed нужно разобрать ошибку. Сбой сети или недоступное видео не должны превращаться в пустой текст с пометкой об успехе.

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"youtube","url":"https://youtu.be/dQw4w9WgXcQ"}'
```

## Сохраните transcript\_source вместе с текстом

В transcript_source указан источник текста, а в caption_kind — тип субтитров. Поле billed_minutes содержит длительность видео с округлением вверх до целой минуты. [Схема объекта](https://transcript1.com/ru/docs/api-reference#the-transcription-object) поможет разобрать остальные поля.

У субтитров автора сохраняем опубликованный текст, но времён отдельных слов нет. У автоматических субтитров YouTube есть начало каждого слова. При распознавании речи доступны начало, конец и confidence. Запрашивайте include=words, только если эти данные нужны вашему приложению.

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

### Сокращённый ответ JSON

```
{
  "id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "status": "completed",
  "transcript_source": "youtube_captions",
  "caption_kind": "auto_generated",
  "language": "en",
  "billed_minutes": 4,
  "transcript": {
    "text": "Welcome back to the channel. Today we are looking at how transcripts are made.",
    "segments": [
      { "start": 0, "end": 4.2, "speaker": null, "language": "en", "text": "Welcome back to the channel." }
    ]
  }
}
```

## Когда выбрать субтитры, а когда распознавание речи

По умолчанию source=auto. Режим captions (только субтитры) вернёт no_captions без списания кредитов, если подходящей дорожки нет. При source=stt всегда расшифровываем звук. Подробности — в [настройках source](https://transcript1.com/ru/docs/sources-and-options#source).

Выбирайте captions, если нужен именно опубликованный текст. Для новой расшифровки или определения говорящих используйте распознавание речи. При source=auto и diarize=true сразу переходим к аудио. Сочетание source=captions и diarize=true отклоним: незаметно отключать одну из опций не будем.

Язык тоже влияет на выбор субтитров. Ищем дорожку на указанном языке, а при language=auto — на языке оригинала. Автоматически переведённые дорожки не подходят. Подсказка языка для распознавания речи не переводит запись на другой язык.

### Тело запроса для распознавания речи

```
{
  "platform": "youtube",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "source": "stt"
}
```

## Проверьте ошибку, прежде чем повторять запрос

Повтор не откроет приватное видео, не снимет возрастное ограничение и не превратит текущую трансляцию в готовую запись. При no_captions решите, подойдёт ли расшифровка звука. Если обработка ещё идёт, проверяйте существующую задачу по ID. [Справочник ошибок](https://transcript1.com/ru/docs/errors) поможет выбрать следующий шаг.

Для повторной отправки запроса после сбоя используйте [Idempotency-Key](https://transcript1.com/ru/docs/api-reference#idempotency). Повторное использование недавней транскрибации — отдельная настройка: должны совпасть видео и параметры. Кешированный текст всё ещё может тарифицироваться как новая задача. Чтение уже готовой транскрибации минут не расходует.

Тот же API принимает [TikTok](https://transcript1.com/ru/features/rasshifrovka-tiktok), [Instagram](https://transcript1.com/ru/features/rasshifrovka-instagram-reels) и другие поддерживаемые ссылки. Например, YouTube, X, TikTok и Bluesky позволяют сначала искать субтитры, а затем переходить к аудио. Перед добавлением платформы сверьте допустимые сочетания опций с [таблицей источников](https://transcript1.com/ru/docs/sources-and-options).

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

### Если у видео нет субтитров, текст всё равно будет?

Да. При source=auto расшифруем звук, если подходящих субтитров нет. Если вам нужны только субтитры и такой переход не подходит, укажите source=captions.

### Какие ссылки YouTube можно отправлять?

Ссылки watch, youtu.be, Shorts, embed и live. Страница канала или ссылка только на плейлист не выбирают конкретное видео: для них API вернёт 422 invalid_url.

### Можно расшифровать приватное видео?

Нет. Нужен доступный публичный ролик или видео с доступом по ссылке. Приватные видео, записи с возрастным ограничением и текущие трансляции не обработаем. Если у вас есть собственный файл, загрузите его.

### Сколько стоит расшифровка?

1 кредит за каждую начатую минуту видео, независимо от того, использовали мы субтитры или распознавание речи. После подтверждения почты новый аккаунт получает 60 бесплатных минут один раз. Карта не нужна.

### Это Python-пакет youtube-transcript-api?

Нет. transcript1 — размещённый на сервере REST API. Из Python вы обращаетесь к нему по HTTP со своим API-ключом.

## Читайте также

- [Временные метки и субтитры](https://transcript1.com/ru/features/sozdat-srt-fayl)
- [API для аудио и видео](https://transcript1.com/ru/features/speech-to-text-api)
- [Вебхуки](https://transcript1.com/ru/features/vebhuk-transkribatsiya)
- [Из записи в публикацию](https://transcript1.com/ru/use-cases/video-v-statyu-dlya-bloga)
