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

Публичный 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.

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

Все запросы к Smart Reels API авторизуются персональным ключом в заголовке Authorization. Создайте ключ во вкладке «Ключи» и держите его в секрете — он даёт доступ к вашим кредитам.

HTTP
Authorization: Bearer mrfrt_usr_…

Базовый URL: https://api.mnogo-reels.ru

POST/videos

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

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

Параметры

  • urlstringобязательный

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

  • direct_modebooleanопциональный

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

  • clip_durationnumberопциональныйпо умолчанию: 45

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

  • clip_durations[number, number][]опциональный

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

  • max_clipsnumberопциональныйпо умолчанию: 10

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

  • watermarkbooleanопциональныйпо умолчанию: true

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

  • b_rollbooleanопциональныйпо умолчанию: true

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

  • b_roll_imagebooleanопциональныйпо умолчанию: true

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

  • b_roll_videobooleanопциональныйпо умолчанию: true

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

  • b_roll_memesbooleanопциональныйпо умолчанию: false

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

  • gemini_promptstringопциональный

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

  • start_secnumberопциональный

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

  • end_secnumberопциональный

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

  • video_mode"general" | "podcast" | "stream"опциональныйпо умолчанию: "general"

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

  • caption_stylestringопциональныйпо умолчанию: "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"опциональныйпо умолчанию: "default"

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

  • languagestringопциональный

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

  • clip_analyzerstringопциональный

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

  • add_musicbooleanопциональный

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

  • gemini_emojisbooleanопциональный

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

  • podcast_montagebooleanопциональный

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

  • outro"default" | "soon" | "like" | "custom" | ""опциональный

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

  • is_nonlinearbooleanопциональный

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

  • enable_criticbooleanопциональный

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

  • full_framebooleanопциональный

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

  • portrait_onlybooleanопциональныйпо умолчанию: 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.

Параметры

  • limitnumberопциональныйпо умолчанию: 50

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

  • offsetnumberопциональныйпо умолчанию: 0

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

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

Коды ответов

Типичные ответы внешнего API. Точные схемы — в openapi.json.

КодЗначение
400Некорректный запрос — проверьте тело и параметры.
401Неавторизован — ключ отсутствует, неверен или отозван.
404Задача не найдена по указанному job_id.
5xxОшибка на стороне сервиса — повторите позже.
Переключайте «Запрос» и «Ответ» и язык примера — cURL, Node.js или Python. Подставьте в код свой ключ вместо mrfrt_usr_….