API генерации видео: видео из текста и изображения (Seedance, MiniMax)

Авторизация: Authorization: Bearer $TEAMO_API_KEY. Все эндпоинты начинаются с /v1.

Метод Путь Назначение
GET /v1/models?type=video Модели и поддерживаемые параметры
POST /v1/videos Создать задачу
GET /v1/videos Список ваших задач
GET /v1/videos/{video_id} Получить метаданные
GET /v1/videos/{video_id}/content Скачать готовое видео
DELETE /v1/videos/{video_id} Удалить завершённую или неудачную задачу и её файлы

Спецификация OpenAPI. Жизненный цикл задачи такой же, как в OpenAI Videos. Используйте ID модели TeamoRouter и её параметры. Files API, remix, редактирование, продление, превью и спрайты не поддерживаются.

Модели

Video model catalogLoading models…

Models come from the current service. Values are case sensitive; GET /v1/models?type=video has the latest constraints. Check the API response for account availability.

Scroll the table horizontally for all parameters. — means the catalog does not list that option.

Video model IDs, types, durations, resolutions, aspect ratios and catalog status
Model / API IDTypeDurationResolutionAspect ratioCatalog status

Актуальные ограничения отдаёт GET /v1/models?type=video. Модели с model_spec.offline недоступны. Страницы моделей с ID, параметрами и примерами: все видеомодели, API Seedance 2.5, API Seedance 2.0, API MiniMax H3.

Создание и получение

Отправляйте JSON или multipart/form-data. Обязательны model и prompt; seconds — строка с целым числом (по умолчанию "4"). size в формате WIDTHxHEIGHT должен соответствовать разрешению и формату, которые поддерживает модель. Если его не передать, используются первое разрешение и первый формат из каталога модели.

python
import os, time
from openai import OpenAI
client = OpenAI(api_key=os.environ["TEAMO_API_KEY"], base_url="https://api.teamorouter.com/v1")
video = client.videos.create(
    model="seedance-2-0-mini-text-to-video-basic",
    prompt="A small dog running on grass", seconds="4", size="854x480",
    extra_headers={"Idempotency-Key": "my-video-request-001"},
)
while video.status in ("queued", "in_progress"):
    time.sleep(5)
    video = client.videos.retrieve(video.id)
if video.status == "failed":
    raise RuntimeError(video.error)
client.videos.download_content(video.id).write_to_file("video.mp4")

Если неясно, дошёл ли запрос, повторяйте его только с тем же Idempotency-Key и теми же параметрами. Метаданные всегда приходят в JSON с полями id, object: "video", status, progress, created_at, completed_at, expires_at, seconds, size и error. Время — в секундах Unix. Статусы: queued, in_progress, completed или failed.

Для входного изображения используйте input_reference: {"image_url":"https://..."} (или data URL); в multipart можно передать в input_reference файл PNG, JPEG или WebP. Модели с референсами получают его как референс. Параметры конкретных моделей — duration, resolution, aspect_ratio, audio, последний кадр и несколько референсов — остаются расширениями. Противоречащие друг другу стандартные и нативные параметры отклоняются.

Скачивание, пагинация и удаление

Скачивайте через GET /v1/videos/{video_id}/content; поддерживается только variant=video. Для незавершённых задач возвращается 409; для просроченных, удалённых или недоступных файлов — 404. Файлы хранятся семь дней, срок указан в expires_at.

Список поддерживает limit (1–100, по умолчанию 20), order (asc или desc, по умолчанию desc) и after (last_id предыдущей страницы). В ответе — object: "list", data, first_id, last_id и has_more.

DELETE возвращает {"id":"video_id","object":"video.deleted","deleted":true}. Удаляются только завершённые или неудачные задачи, генерация не отменяется. Удалённые задачи нельзя получить или скачать.

Расширения для Video Studio

/v1/videos/catalog, /v1/videos/models, /v1/videos/quote, /v1/videos/{video_id}/request и /v1/videos/conversations используются сайтом и являются расширениями TeamoRouter.

Готовы? Три шага, чтобы начатьВойдите в консоль · пополните баланс · создайте API Key
TelegramВопросы по подключению, оплате или маршрутизации? Мы в Telegram.