APIMaster.ai

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

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

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

Используйте seedance-2.0-fast для генерации видео из текста, из изображения, для генерации первого/последнего кадра, а также для работы с видео- или аудио-референсами. Fast поддерживает 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-fast
prompt string Обязательно До 4000 символов. Опишите объект, движение, сцену, камеру и желаемый звук; краткие промпты легче контролировать.
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 или утвержденные идентификаторы из медиатеки 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-fast",
  "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} и используйте в качестве asset://{asset_id} только ассеты со статусом Active. Эти ресурсы принадлежат вашему аккаунту. Явно указывайте model: "seedance-2.0-fast". Идентификаторы ассетов с другой платформы или аккаунта здесь использовать нельзя.

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

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

curl "https://apimaster.ai/v1/videos/generations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model":"seedance-2.0-fast",
    "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-fast",
  "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":118,
    "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-fast",
    "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 Mini и Seedance 2.5.