API субтитрів YouTube і MCP-сервер

Отримуйте субтитри, транскрипти, переклади та готові статті зі свого коду або з AI-агента. Два способи: звичайний REST API або MCP-сервер, який підключається до Claude Code, Claude.ai і Cursor.

Швидкий старт

Створіть API-ключ і викличте API з ним. Керування ключами →

curl -X POST https://api.unwatched.click/api/v1/subtitles \
  -H "Authorization: Bearer unw_sk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","lang":"en"}'

Аутентифікація

Кожен запит потребує API-ключ. Працюють обидва варіанти заголовка — MCP-клієнти вміють лише Authorization, а x-api-key зручніший для curl. Ключі зберігаються як хеш: якщо втратили — відкличте і створіть новий.

Authorization: Bearer unw_sk_YOUR_KEY
# or, equivalently:
x-api-key: unw_sk_YOUR_KEY

MCP-сервер

Ендпоінт MCP — POST https://api.unwatched.click/mcp. Нічого встановлювати не треба: додайте URL і ключ у будь-який MCP-клієнт. У Claude Code:

claude mcp add --transport http unwatched https://api.unwatched.click/mcp \
  --header "Authorization: Bearer unw_sk_YOUR_KEY"

У Claude.ai: Settings → Connectors → додати custom connector з тим самим URL і заголовком. У Cursor додайте це у mcp.json:

{
  "mcpServers": {
    "unwatched": {
      "url": "https://api.unwatched.click/mcp",
      "headers": {
        "Authorization": "Bearer unw_sk_YOUR_KEY"
      }
    }
  }
}

Доступні інструменти

  • get_video_subtitles — повний транскрипт із таймкодами
  • list_subtitle_tracks — які мови субтитрів має відео
  • get_video_info — назва, тривалість, превʼю, дата публікації
  • get_video_frame — кадр за таймінгом, повертається зображенням
  • translate_transcript — переклад отриманого транскрипту зі збереженням таймкодів
  • summarize_video — генерація структурованої статті за відео
  • search_articles — пошук серед уже згенерованих статей

REST-ендпоінти

POST /api/v1/subtitles              { url | videoId, lang? }
GET  /api/v1/videos/:videoId
GET  /api/v1/videos/:videoId/tracks
POST /api/v1/frames                 { url | videoId, t | timestamps[], width?, includeBase64? }
GET  /api/v1/videos/:videoId/frame?t=&width=
POST /api/v1/transcripts/translate  { videoId, sourceLang, targetLang }
POST /api/v1/summaries              { url | videoId, lang, length?, sourceLang? }
GET  /api/v1/articles?query=&category=&lang=&page=&limit=
GET  /api/v1/credits

Транскрипт повертається як segments із { start, end, text } у секундах — за часом закінчення можна цитувати точні фрагменти.

Кредити

Виклики API та MCP витрачають ті самі кредити, що й сайт, і кожен акаунт має безкоштовну денну норму. Кешовані результати безкоштовні: повторний запит того самого відео й мови не коштує нічого.

ОпераціяЦіна
Отримання субтитрів (без кешу)2 кредитів
Звичайна сумаризація1 кредитів / год
Переклад транскрипту1 кредитів / год
Скриншот відео1 кредитів
Метадані, список дорожок, пошук статейВключено

Помилки

Помилки завжди повертають { "error": { "code", "message" } } — розбирати потрібно лише одну форму.

СтатусКодЗначення
400INVALID_REQUESTПараметри відсутні або некоректні.
401INVALID_API_KEYКлюч відсутній, недійсний, відкликаний або прострочений.
402INSUFFICIENT_CREDITSНедостатньо кредитів для операції.
404TRANSCRIPT_NOT_FOUNDТранскрипт не збережено — спершу отримайте субтитри.
422NO_SUBTITLESУ відео немає придатних субтитрів.
429RATE_LIMITEDЗанадто багато запитів. Типово 60 на хвилину на ключ.
502EXTRACTION_FAILEDНе вдалося витягти субтитри для цього відео.
503SERVICE_BUSYПотужності витягування перевантажені. Повторіть згодом.