APIMaster.ai

Seedance 2.0 Mini API для генерации видео

Параметры Seedance 2.0 Mini, референсные медиа, асинхронные задачи, аутентифицированные загрузки и биллинг по длительности на APIMaster.

Генерация видео Seedance 2.0 Mini

Используйте seedance-2.0-mini для генерации видео из текста, из изображения, для создания первого/последнего кадра, а также для работы с видео- или аудио-референсами. Mini поддерживает 480p и 720p, с длительностью выходного видео от 4 до 15 секунд.

Для генерации первого/последнего кадра явно задайте aspect_ratio: "adaptive". Референсное аудио должно сопровождаться изображением или видео. Храните ваш APIMaster API-ключ на вашем сервере.

Эндпоинты и аутентификация

Базовый URL: https://apimaster.ai/v1. Передавайте Authorization: Bearer YOUR_API_KEY при отправке запроса, запросе статуса и загрузке.

Операция Метод и путь
Создание видео POST /v1/videos/generations
Запрос совместимого результата GET /v1/video/generations/{task_id}
Запрос результата в стиле OpenAI GET /v1/videos/{task_id}
Загрузка видео GET /v1/videos/{task_id}/content
Загрузка запрошенного последнего кадра GET /v1/videos/{task_id}/last-frame

Используйте публичный task_id, возвращаемый APIMaster. Задачи генерации видео и задачи проверки медиа — это разные ресурсы: для видео используйте указанные выше эндпоинты запроса видео. Принятый запрос создает одну асинхронную задачу; успешный HTTP-ответ не означает, что видео готово.

Параметры

Поле Тип Обязательно / по умолчанию Описание
model string Обязательно seedance-2.0-mini
prompt string Обязательно APIMaster не накладывает ограничений на длину промпта, специфичных для модели. Опишите субъект, движение, сцену, камеру и желаемое аудио; краткие промпты легче контролировать.
duration integer 5 Длина выходного видео, 4–15 секунд. -1 не поддерживается.
resolution string 720p 480p или 720p; 1080p и 4k не поддерживаются.
aspect_ratio string 16:9 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 или adaptive.
ratio string То же, что и aspect_ratio Псевдоним APIMaster. Если присутствуют оба, их значения должны совпадать.
size string То же, что и aspect_ratio Соотношение сторон, например 16:9 или adaptive. Предпочтительнее использовать aspect_ratio и resolution для указания двух измерений отдельно. Конфликтующие спецификации возвращают 400.
seed integer Не указывается Управляет вариативностью; совпадающие сиды не гарантируют идентичный результат.
generate_audio boolean true Генерировать сопровождающее аудио; используйте false для вывода без звука.
image_urls string[] Не указывается До 9 референсных изображений. Публичные URL изображений или одобренные APIMaster ID asset://.
image_with_roles object[] Не указывается Объекты изображений с url и role; не могут появляться вместе с image_urls. См. правила ролей ниже.
video_urls string[] Не указывается До 3 референсных видео, с общей биллинговой длительностью входных материалов не более 15 секунд. См. требования к материалам.
audio_urls string[] Не указывается До 3 референсных аудиофайлов, общая длительность не более 15 секунд. Требует наличия референсных изображений или видео.
return_last_frame boolean false При успешном завершении возвращать аутентифицированный APIMaster URL для загрузки последнего кадра, если результат включает последний кадр.
nsfw_check boolean false Запрашивать модерацию текстового/изобразительного контента перед генерацией. Видео и аудио не включаются в эту проверку модерации.
tools object[] Не указывается Объявление инструмента поиска: [{"type":"web_search"}].

Генерация черновиков и улучшение черновиков доступны только в Seedance 2.5. Не передавайте draft: true или draft_task_id в эту модель.

Справочные материалы

Предоставляйте публично доступные HTTPS-URL или утвержденные ID из вашей медиатеки APIMaster. Файлы, находящиеся за страницами с авторизацией или требующие ваши собственные заголовки авторизации, не могут быть получены. Успешная загрузка изображения не подразумевает одобрения контента или его соответствия всем требованиям модели.

Материал Требования
Справочные изображения До 9; используйте читаемые изображения в формате RGB JPEG/PNG. Конечная точка загрузки изображений APIMaster имеет собственное ограничение в 20 MiB и принимает JPEG, PNG, GIF и WebP.
Справочные видео До 3; видео MP4/MOV, H.264/H.265; аудио AAC/MP3 при наличии. Используйте видео длительностью от 480p до 720p. Общая длительность справочных материалов должна укладываться в 15 оплачиваемых секунд. APIMaster проверяет доступную длительность MP4/MOV перед списанием средств; длительности входных клипов округляются вверх до целых секунд для этой проверки и биллинга.
Справочное аудио До 3; WAV или MP3, не более 20 MB на файл, общая длительность не более 15 секунд. Всегда сопровождайте изображением или видео-справочником.

Используйте четкие изображения с достаточной детализацией, избегайте поврежденных или неполных файлов, а также следите за тем, чтобы движение в справочном видео соответствовало вашему промпту. Медиа могут не пройти асинхронную проверку формата или содержания, даже если отправка была принята.

Роли изображений

role Значение
first_frame Начальный кадр; не более одного
last_frame Конечный кадр; не более одного, и требует наличия первого кадра
reference_image Справочное изображение, включая утвержденные ассеты персонажей

Для задач с первым/последним кадром установите aspect_ratio в значение adaptive и опустите video_urls и audio_urls. Используйте image_with_roles для явных ролей; не передавайте также image_urls.

{
  "model": "seedance-2.0-mini",
  "prompt": "A paper boat drifts gently from the starting composition to the ending composition",
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "adaptive",
  "image_with_roles": [
    {"url": "https://your-storage.example/start.png", "role": "first_frame"},
    {"url": "https://your-storage.example/end.png", "role": "last_frame"}
  ],
  "generate_audio": false
}

Загрузки и медиатека

Загрузите локальное изображение с помощью POST /v1/uploads/images, используя multipart-поле file и авторизацию Bearer. Возвращенный верхнеуровневый url может быть использован как публичный входной образ.

curl "https://apimaster.ai/v1/uploads/images" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@reference.png"

Для повторно используемых материалов или материалов персонажей создайте группу с помощью POST /v1/seedance2/private-avatar/groups, отправьте материалы с помощью POST /v1/seedance2/private-avatar/assets, запросите статус проверки с помощью GET /v1/tasks/{asset_task_id} и используйте только ассеты со статусом Active в качестве asset://{asset_id}. Эти ресурсы принадлежат вашему аккаунту. Явно указывайте model: "seedance-2.0-mini". ID ассетов с другой платформы или из другого аккаунта здесь использовать нельзя.

См. рабочий процесс медиатеки для создания, отправки, проверки, частичных сбоев и удаления. Конечные точки загрузки и управления ассетами являются общими; лимиты генерации на этой странице применяются к Mini. Неудачная проверка может не возвращать детальной причины; используйте четкий, соответствующий требованиям материал в поддерживаемом формате и отправьте новую проверку. Не создавайте задачу повторно, пока существующая проверка еще обрабатывается.

Отправка видео

curl "https://apimaster.ai/v1/videos/generations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model":"seedance-2.0-mini",
    "prompt":"A small paper boat on calm water at sunrise, gentle tracking shot",
    "duration":5,
    "resolution":"720p",
    "aspect_ratio":"16:9",
    "generate_audio":true,
    "return_last_frame":true
  }'

Ответ на создание:

{"code":200,"data":[{"status":"submitted","task_id":"task_PUBLIC_VIDEO_ID"}]}

Таймаут отправки неоднозначен: запрос мог быть принят. Проверьте историю ваших задач перед повторной отправкой; еще одна успешная отправка создаст отдельную оплачиваемую задачу.

Видео- и аудио-справочники

{
  "model": "seedance-2.0-mini",
  "prompt": "Follow the reference motion and keep the scene consistent with the image",
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "adaptive",
  "image_urls": ["https://your-storage.example/reference.png"],
  "video_urls": ["https://your-storage.example/reference.mp4"],
  "audio_urls": ["https://your-storage.example/reference.mp3"],
  "generate_audio": true
}

Запрос и загрузка

Опрашивайте каждые 3–5 секунд. Остановитесь при успехе или неудаче.

curl "https://apimaster.ai/v1/video/generations/task_PUBLIC_VIDEO_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"

Успешный запрос в совместимом формате:

{
  "code":"success",
  "message":"",
  "data":{
    "error":null,
    "format":"mp4",
    "metadata":null,
    "status":"succeeded",
    "task_id":"task_PUBLIC_VIDEO_ID",
    "url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content",
    "actual_time":138,
    "last_frame_url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame"
  }
}

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

Запрос в стиле OpenAI:

curl "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Значение Совместимый data.status Стиль OpenAI status
Ожидание queued queued
Генерация processing in_progress
Успех succeeded completed
Неудача failed failed

Объект в стиле OpenAI использует id для публичного идентификатора задачи и url для URL-адреса загрузки видео. Опциональные поля actual_time и last_frame_url появляются на верхнем уровне. При неудаче читайте error.message в соответствующем объекте результата. Ответы не включают денежные поля.

Загружайте с использованием API-ключа того же аккаунта. Открытие URL результата без авторизации недостаточно. Сохраняйте вывод своевременно.

curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content" \
  -H "Authorization: Bearer YOUR_API_KEY" -o output.mp4
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame" \
  -H "Authorization: Bearer YOUR_API_KEY" -o last-frame.jpg

Полный рабочий процесс на Python

import os
import time
import requests

base = "https://apimaster.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['APIMASTER_API_KEY']}"}
response = requests.post(base + "/videos/generations", headers=headers, json={
    "model": "seedance-2.0-mini",
    "prompt": "A small paper boat on calm water at sunrise",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": True,
    "return_last_frame": True,
}, timeout=90)
response.raise_for_status()
task_id = response.json()["data"][0]["task_id"]
for _ in range(240):
    response = requests.get(base + "/video/generations/" + task_id,
                            headers=headers, timeout=30)
    response.raise_for_status()
    task = response.json()["data"]
    if task["status"] == "failed":
        raise RuntimeError((task.get("error") or {}).get("message", "Video failed"))
    if task["status"] == "succeeded":
        print("Elapsed seconds:", task.get("actual_time"))
        for field, filename in [("url", "output.mp4"), ("last_frame_url", "last-frame.jpg")]:
            if task.get(field):
                with requests.get(task[field], headers=headers, stream=True, timeout=120) as result:
                    result.raise_for_status()
                    with open(filename, "wb") as out:
                        for chunk in result.iter_content(1024 * 1024):
                            out.write(chunk)
        break
    time.sleep(5)
else:
    raise TimeoutError("Task still processing; query the same task_id later")

Биллинг по длительности

Существует четыре тарифа: 480P, 720P, 480P-input и 720P-input. Тариф с пометкой "загруженные видео" означает, что запрос содержит входные данные в виде референсного видео. Выбирайте входной тариф для запрошенного разрешения выходного видео, даже если также присутствуют референсные изображения или аудио.

  • Без референсного видео: секунды сгенерированного видео × цена за единицу для соответствующего разрешения.
  • С референсным видео: (общая длительность референсного видео в секундах + секунды сгенерированного видео) × цена за единицу для соответствующего входного тарифа.
  • Базовая цена за единицу, указанная в конфигурации, умножается на применимые коэффициенты канала и аккаунта/группы для получения итоговой цены за единицу. Проверьте карточку модели и записи потребления в кошельке, чтобы узнать применимую цену.

Например, референсное видео длительностью 4 секунд и выходное видео длительностью 5 секунд используют 9 биллинговых секунд по входному тарифу. Цена за единицу входного тарифа может отличаться от цены обычного тарифа; не рассчитывайте только длительность выходного видео и не применяйте обычный тариф к референсным видео. Изображения и аудио не добавляют секунды референсного видео. Генерируемое аудио не вводит отдельный тариф для звука/тишины для этих четырёх настроенных цен.

При отправке задачи резервируется запрошенная длительность выходного видео, а также проверенная длительность входного видео, если оно присутствует. Если длительность выходного видео не указана, резервируется 5 секунд выходного видео. Задача сохраняет тариф, действовавший на момент её отправки; при завершении происходит сверка с фактической длительностью. При неудачной генерации плата за видео-задачу возвращается.

Ошибки и устранение неполадок

Некорректные запросы возвращают ошибку HTTP. Читайте как JSON-сообщение об ошибке, так и код состояния. Проверка параметров использует обёртку ошибок APIMaster, например:

{"code":"invalid_request","message":"First/last-frame tasks require adaptive aspect_ratio","data":null}
Проблема Действие
Неподдерживаемое разрешение / длительность Выберите 480p или 720p и целочисленную длительность от 4 до 15.
Конфликтующие соотношения сторон или размеры Используйте согласованные aspect_ratio, ratio, size и resolution; предпочтительно оставлять только явную пару соотношение сторон/разрешение.
Ограничения на первый/последний кадр Используйте adaptive, не более одного для каждой роли, и опускайте видео/аудио референсы.
Невозможно проверить референсное видео Предоставьте доступный полный файл MP4/MOV с корректной длительностью.
Референсное аудио без изображения/видео Добавьте референсные изображения/видео или удалите референсное аудио.
Отклонение модерацией контента Измените текст или изображение и отправьте новый запрос. Сбой службы модерации может позволить продолжить генерацию; это не является абсолютной гарантией безопасности.
FormatUnsupported / Асинхронное отклонение из-за формата/содержимого Прочитайте error.message неудачной задачи, проверьте требования к форматам и материалам и замените источник.
401 Предоставьте действительный Bearer API-ключ.
Недостаточно средств Пополните баланс или используйте ключ с достаточной квотой.
429 / временная ошибка сервиса Подождите и повторите попытку с экспоненциальной задержкой; избегайте повторных отправок после неоднозначного таймаута.

Синхронные запросы с некорректными параметрами не создают видео-задачи и не взимают плату за генерацию. Принятые задачи всё равно могут завершиться неудачей асинхронно; проверяйте окончательный статус задачи перед использованием результата.

См. также: Обзор генерации видео, Seedance 2.0, Seedance 2.0 Fast и Seedance 2.5.