Автоматизация

Публичный API

Smart Reels API запускает нарезку из вашего кода: вы передаёте ссылку на видео, а получаете прямые ссылки на готовые клипы. Ниже — как получить ключ и сделать первый запрос. Полный справочник — в конце статьи.

Время чтения: 3 минуты

Ключ API

  1. Шаг 1. Откройте раздел «Для разработчиков» в боковом меню и перейдите на вкладку «Ключи».
  2. Шаг 2. Нажмите «Получить API ключ». Ключ начинается с mrfrt_usr_.
  3. Шаг 3. Скопируйте его кнопкой «Скопировать» и сохраните в настройках своего сервиса.

Ключ передаётся в каждом запросе в заголовке Authorization: Bearer mrfrt_usr_….

Первый запрос

Задача создаётся запросом POST https://api.mnogo-reels.ru/videos. Обязательное поле одно — url, публичная ссылка на видео. Остальные параметры можно не передавать.

Shell
curl -X POST https://api.mnogo-reels.ru/videos \
  -H "Authorization: Bearer mrfrt_usr_…" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/video.mp4",
  "clip_duration": 45,
  "max_clips": 10,
  "watermark": true,
  "video_mode": "general",
  "caption_style": "karaoke"
}'

В ответ приходит задача со статусом queued. Сохраните её id — это job_id для следующих запросов.

JSON
{
  "id": "job_123",
  "status": "queued",
  "source_url": "https://example.com/video.mp4",
  "progress": null,
  "error": null
}
ПараметрЧто задаётПо умолчанию
clip_durationжелаемая длина клипа в секундах45
max_clipsмаксимум клипов10
start_sec, end_secотрезок видео в секундах, от него зависит стоимостьвсё видео
video_modeрежим кадрирования: general, podcast или streamgeneral
caption_styleстиль субтитров, empty — без субтитровkaraoke
hook_styleстиль хука, none — без хукаdefault

Статус и результат

Обработка идёт асинхронно. Запрашивайте GET /videos/{job_id}, пока статус не станет completed или failed.

  • queued — задача в очереди.
  • processing — идёт обработка, поле progress растёт от 0 до 1.
  • completed — готово: в s3_clip_urls лежат ссылки на клипы, в s3_final_url — финальный ролик, в model_json_url — JSON-модель.
  • failed — обработка не удалась, причина в поле error.
Python
import time
import requests

API = "https://api.mnogo-reels.ru"
headers = {"Authorization": "Bearer mrfrt_usr_…"}
job_id = "job_123"

while True:
    job = requests.get(f"{API}/videos/{job_id}", headers=headers).json()
    if job["status"] in ("completed", "failed"):
        break
    print(job["status"], job["progress"])
    time.sleep(15)

if job["status"] == "completed":
    for clip_url in job["s3_clip_urls"] or []:
        print(clip_url)
else:
    print("Ошибка:", job["error"])

Отдельного эндпоинта для скачивания нет: файлы забираются по ссылкам из ответа. Список задач, созданных ключом, возвращает GET /videos, а в кабинете они видны на вкладке «Использование» раздела «Для разработчиков».

Сколько стоит

Задачи из API списывают кредиты с того же баланса, что и нарезка в воркспейсе, и по тем же правилам:

  • 1 кредит за каждую минуту выбранного отрезка (end_sec − start_sec) с округлением вверх, минимум 1 кредит.
  • Агентский режим (enable_critic: true) умножает стоимость на 1.2. В direct_mode эта надбавка не применяется.
  • Если задача не создалась, кредиты возвращаются.

Подробнее о балансе — в статье Кредиты и стоимость.

Справочник

Ниже — все параметры POST /videos, примеры запросов и ответов для каждого эндпоинта и коды ответов. Обзор возможностей API — на странице Smart Reels API.

Authentifizierung

Jede Smart-Reels-API-Anfrage wird mit einem persönlichen Schlüssel im Authorization-Header autorisiert. Erstellen Sie einen Schlüssel im Tab „Schlüssel“ und halten Sie ihn geheim — er kann Ihre Credits verbrauchen.

HTTP
Authorization: Bearer mrfrt_usr_…

Basis-URL: https://api.mnogo-reels.ru

POST/videos

Создать задачу нарезки

Отправьте JSON с обязательным url и опциональными параметрами нарезки. Авторизация — персональный Bearer-токен mrfrt_usr_…. В ответ приходит job с id (job_id) и статусом queued.

Parameter

  • urlstringerforderlich

    Публичный URL исходного видео (YouTube, Rutube, прямой .mp4 и т.п.). Единственное обязательное поле.

  • direct_modebooleanoptional

    Без ИИ-монтажа: один итоговый ролик с субтитрами, опционально музыкой и водяным знаком. Тарифицируется по базовой ставке (1 кредит/мин выбранного фрагмента); не применяется только агентская наценка ×1.2.

  • clip_durationnumberoptionalStandard: 45

    Желаемая длительность одного клипа в секундах. По умолчанию 45. Не используйте вместе с clip_durations.

  • clip_durations[number, number][]optional

    Несколько допустимых диапазонов длины клипа в секундах (включительно), например [[30, 59], [90, 120]]. При передаче одиночный clip_duration не отправляется.

  • max_clipsnumberoptionalStandard: 10

    Максимальное число клипов для генерации. По умолчанию 10.

  • watermarkbooleanoptionalStandard: true

    Добавлять ли водяной знак на клипы. По умолчанию true.

  • b_rollbooleanoptionalStandard: true

    Добавлять ли B-roll вставки (изображения/видео). По умолчанию true.

  • b_roll_imagebooleanoptionalStandard: true

    Включить картиночный B-roll. По умолчанию true.

  • b_roll_videobooleanoptionalStandard: true

    Включить видео-B-roll. По умолчанию true.

  • b_roll_memesbooleanoptionalStandard: false

    Реакционные мемы: короткая вставка, не больше одной на ролик. Только явное включение — b_roll: true их не включает. В direct_mode не применяется. По умолчанию false.

  • gemini_promptstringoptional

    Пользовательский промпт для Gemini-анализатора; влияет на отбор и оформление клипов. Отправляется только в не-direct режиме.

  • start_secnumberoptional

    С какой секунды исходного видео начинать анализ. Если не передан — поле не отправляется и анализ идёт с начала ролика (дефолта на стороне API клиент не задаёт).

  • end_secnumberoptional

    На какой секунде остановить анализ. Если не передан — поле не отправляется и анализ идёт до конца видео.

  • video_mode"general" | "podcast" | "stream"optionalStandard: "general"

    Режим анализа: "general", "podcast" или "stream" (вебинары/стримы: вебка + демонстрация экрана). По умолчанию "general".

  • caption_stylestringoptionalStandard: "karaoke"

    Стиль субтитров. Допустимо: "karaoke", "karaoke_static", "minimal", "viral", "montserrat", "gilroy", "rubik", "bebas", "impact", "pixel", "gothic", "going", "hormozi", "boxed", "neon", "pop3d", "tiktok", "hormozi_pop", "money", "boxed_black", "boxed_pop", "chunky", "punch" и "empty" (без субтитров). Неизвестное значение молча заменяется на "karaoke". По умолчанию "karaoke".

  • hook_style"default" | "dark" | "accent" | "sticker" | "marker" | "neon" | "stagger" | "torn" | "keyword" | "impact" | "none"optionalStandard: "default"

    Стиль оформления хука-заголовка: "default", "dark", "accent", "sticker", "marker", "neon", "stagger", "torn", "keyword", "impact" или "none" (без хука). По умолчанию "default".

  • languagestringoptional

    Язык транскрибации в формате ISO-639-1, два строчных символа: "ru", "en", "uk", "de", "es". Регистр и регион нормализуются ("ru-RU", "RU" → "ru"). Не передавайте поле, если хотите автоопределение: бэкенд определит язык по трём отрезкам видео и зафиксирует его для всей транскрибации. Строку "auto" слать нельзя — она уйдёт в распознавание как код языка.

  • clip_analyzerstringoptional

    Движок анализа клипов (например "gemini"). В режиме podcast_smartcut выставляется автоматически в "gemini".

  • add_musicbooleanoptional

    Добавлять ли фоновую музыку к клипам. Если не указано — музыка не добавляется.

  • gemini_emojisbooleanoptional

    Добавлять ли эмодзи в субтитры при использовании Gemini-анализатора.

  • podcast_montagebooleanoptional

    Режим SmartCut: монтаж подкаста из нескольких склеенных фрагментов (с video_mode=podcast и clip_analyzer=gemini).

  • outro"default" | "soon" | "like" | "custom" | ""optional

    Пресет концовки клипа: "default", "soon", "like" или пустая строка (без аутро). JSON-ключ — именно outro. Значение "custom" подставляет вашу загруженную концовку — сначала загрузите её в настройках профиля, иначе аутро для этой задачи будет отключено.

  • is_nonlinearbooleanoptional

    Нелинейный монтаж: перестановка/склейка фрагментов вне исходного порядка.

  • enable_criticbooleanoptional

    Агентский режим: дополнительный ИИ-критик проверяет границы клипов. Увеличивает стоимость в 1.2 раза. Не применяется в direct_mode.

  • full_framebooleanoptional

    Использовать полный горизонтальный кадр без слежения за спикером (без авто-кадрирования под вертикаль).

  • portrait_onlybooleanoptionalStandard: false

    Только вертикальный кадр: всегда кроп по главному в кадре, без горизонтального кадра с полосами и размытыми полями. Работает в любом video_mode. Вместе с full_frame: true — ошибка 422.

cURL
curl -X POST https://api.mnogo-reels.ru/videos \
  -H "Authorization: Bearer mrfrt_usr_…" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://example.com/video.mp4",
  "clip_duration": 45,
  "max_clips": 10,
  "watermark": true,
  "video_mode": "general",
  "caption_style": "karaoke"
}'
GET/videos/{job_id}

Статус задачи и результат

Опрашивайте задачу по job_id, пока статус не станет completed. При completed ответ содержит прямые S3-ссылки на результат: s3_final_url (финальный ролик), s3_clip_urls (клипы), model_json_url (JSON-модель). Отдельного эндпоинта для скачивания нет — файлы забираются по этим ссылкам.

cURL
curl -X GET https://api.mnogo-reels.ru/videos/{job_id} \
  -H "Authorization: Bearer mrfrt_usr_…"
GET/videos

Список задач

Список задач, созданных вашим персональным API-токеном. Постраничный: total в ответе — размер текущей страницы, а не общее число задач, поэтому конец списка определяется как items.length < limit.

Parameter

  • limitnumberoptionalStandard: 50

    Размер страницы, от 1 до 200. По умолчанию 50.

  • offsetnumberoptionalStandard: 0

    Сдвиг постраничной выборки.

cURL
curl -X GET https://api.mnogo-reels.ru/videos \
  -H "Authorization: Bearer mrfrt_usr_…"

Antwortcodes

Typische Antworten der externen API. Genaue Schemas in openapi.json.

CodeBedeutung
400Ungültige Anfrage — Body und Parameter prüfen.
401Nicht autorisiert — Schlüssel fehlt, ungültig oder widerrufen.
404Aufgabe für die angegebene job_id nicht gefunden.
5xxDienstfehler — später erneut versuchen.
Переключайте «Запрос» и «Ответ» и язык примера — cURL, Node.js или Python. Подставьте в код свой ключ вместо mrfrt_usr_….