Как добавить генерацию видео в SaaS: архитектура API без очередей из ошибок

OdiRouter Team
Архитектура API генерации видео для SaaS-продукта

Видео API — это не chat completion с файлом на выходе

Главная ошибка при добавлении AI-видео в SaaS — проектировать функцию как синхронный запрос. Видео создаётся дольше текста, может стоять в очереди, завершаться модерацией, возвращать временную ссылку и требовать повторной генерации по причинам, которые пользователь считает «плохим качеством», а провайдер — успешной задачей.

Поэтому продукту нужен не один endpoint, а жизненный цикл задачи. Если его спроектировать правильно, модель можно менять. Если неправильно — любая новая модель только увеличит число зависших заказов и спорных списаний.

Минимальная архитектура

Компонент

Ответственность

API приложения

Проверяет запрос и создаёт внутренний job

Очередь

Ограничивает параллелизм и сглаживает нагрузку

Worker

Отправляет запрос модели и сохраняет provider task ID

Status service

Получает callback или опрашивает провайдера

Storage

Копирует результат из временной ссылки

Moderation

Проверяет входные и выходные материалы

Billing

Резервирует и списывает кредиты по правилам продукта

Observability

Связывает user job, provider task, стоимость и результат

Два идентификатора вместо одного

В базе должны храниться внутренний job_id и task_id провайдера. Пользователь видит только первый. Это позволяет повторить запрос у другой модели, не меняя публичный контракт, и не раскрывать внутреннюю маршрутизацию.

Статусы также должны принадлежать продукту: created, queued, submitted, processing, succeeded, rejected, failed, cancelled, expired. Статус провайдера переводится в эту схему через адаптер.

Retry: место, где сгорает бюджет

Ситуация

Повторять автоматически?

Почему

Timeout до получения task ID

Только с idempotency key

Задача могла быть создана

429

Да, с backoff и лимитом

Временное ограничение

Provider 5xx

Ограниченно

Нужен circuit breaker

Moderation rejected

Нет

Повтор того же запроса бессмысленен

Технически успешное, но плохое видео

Нет автоматически

Это новая платная творческая попытка

Временная ссылка истекла

Не генерировать заново

Нужно восстановить файл или обратиться к storage

Стоимость попытки и стоимость принятого ролика

Провайдер обычно считает успешную генерацию, даже если маркетолог отклонил результат. SaaS должен разделять provider success и product acceptance.

Стоимость принятого ролика = генерации + повторные попытки + хранение + проверка ÷ количество одобренных роликов. Эта метрика позволяет честно сравнивать модели с разной ценой и стабильностью.

Маршрутизация видео моделей

Задача

Логика маршрута

Быстрый черновик

Дешёвая модель или низкое разрешение

Товарный ролик

Модель с лучшей точностью объекта

Длинная история

Модель с большей длительностью и continuity

Reference-heavy

Модель с поддержкой изображений, видео и аудио

Финальный asset

Высокое разрешение после принятия композиции

Сбой основного маршрута

Fallback только если формат задачи совместим

OdiRouter.ai как модельный слой

OdiRouterобъединяет видео модели вместе с LLM, изображениями и аудио через единый каталог. Для SaaS это полезно на уровне маршрутизации: приложение хранит собственный job lifecycle, а model ID и параметры провайдера остаются в адаптере.

Российские команды могут свободно использовать сервис, пополнять баланс в рублях и тестировать модели без отдельного платёжного контура для каждого поставщика. Но данные о task status, callback, длительности ссылок и биллинге каждой модели всё равно нужно нормализовать внутри продукта.

Чек-лист перед публичным запуском

Проверка

Готово, если

Idempotency

Повтор API-запроса не создаёт второй платный job

Backpressure

Очередь ограничивает нагрузку по тарифу и пользователю

Cancellation

Отмена имеет понятные правила списания

Storage

Файл копируется до истечения ссылки

Moderation

Пользователь понимает причину отказа

Billing

Баланс не становится отрицательным при параллельных задачах

Fallback

Не меняет длительность, ratio и смысл запроса молча

Support

По одному job_id можно восстановить весь путь

Вывод

Видео-функция становится надёжной не тогда, когда модель генерирует красивый ролик, а когда продукт умеет объяснить любой статус, любое списание и любой повтор. Модель создаёт контент; SaaS отвечает за доверие.

#AI-видео для SaaS#API для разработчиков#MiniMax H3#OdiRouter.ai#Seedance#video generation API#асинхронный API#генерация видео API#очередь задач