gensta DOCS
api-platform.gensta.ai/v1 Портал разработчика

Текст в видео

POST/v1/generationsmodel: seedance-2.5 · mode: text_to_video
json
{
  "model": "seedance-2.5",
  "mode": "text_to_video",
  "variant": "standard",
  "parameters": {
    "resolution": "720p",
    "duration_seconds": 6,
    "ratio": "16:9",
    "audio": true,
    "watermark": false,
    "output_format": "mp4",
    "return_last_frame": true,
    "priority": 0,
    "execution_expires_after_seconds": 172800,
    "num_outputs": 1
  },
  "input": { "prompt": "A paper kite rises above a windy coast, cinematic tracking shot" }
}

В текстовом режиме и режиме референсов доступны adaptive, 16:9, 4:3, 1:1, 3:4, 9:16 и 21:9. Длительность — целое число от 4 до 30 секунд.

Видео по первому и последнему кадрам

json
{
  "model": "seedance-2.5",
  "mode": "image_to_video",
  "variant": "standard",
  "parameters": {
    "resolution": "1080p", "duration_seconds": -1, "ratio": "adaptive",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Move smoothly from dawn to golden hour",
    "first_frame": { "type": "https_url", "url": "https://cdn.example.com/first.jpg" },
    "last_frame": { "type": "media_asset", "media_asset_id": "7c74c900-8b68-4b0f-a337-32ed3a9a2020" }
  }
}

first_frame обязателен, last_frame — нет. Режим требует ratio: adaptive. Укажите duration_seconds: -1, чтобы длительность выбрала модель, либо целое число от 4 до 30. Промпт необязателен.

Видео по omni-референсам

json
{
  "model": "seedance-2.5",
  "mode": "reference_to_video",
  "variant": "standard",
  "parameters": {
    "resolution": "720p", "duration_seconds": 8, "ratio": "9:16",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Keep the character identity and follow the motion reference",
    "references": [
      { "media_kind": "image", "locator": { "type": "https_url", "url": "https://cdn.example.com/character.png" } },
      { "media_kind": "video", "locator": { "type": "media_asset", "media_asset_id": "7c74c900-8b68-4b0f-a337-32ed3a9a2020" } },
      { "media_kind": "audio", "locator": { "type": "https_url", "url": "https://cdn.example.com/music.mp3" } }
    ]
  }
}

Передайте от 1 до 50 референсов: не более 30 изображений, 10 видео и 10 аудиофайлов. Промпт необязателен. Доступны HTTPS URL и готовые media assets; документы и веб-страницы Seedance не поддерживает.

Редактирование видео

json
{
  "model": "seedance-2.5",
  "mode": "video_edit",
  "variant": "standard",
  "parameters": {
    "resolution": "720p", "duration_seconds": -1, "ratio": "adaptive",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Replace the rainy sky with warm evening light",
    "video": { "locator": { "type": "https_url", "url": "https://cdn.example.com/source.mp4" } },
    "references": [
      { "media_kind": "image", "locator": { "type": "https_url", "url": "https://cdn.example.com/look.jpg" } }
    ]
  }
}

Для редактирования нужны duration_seconds: -1 и ratio: adaptive. Исходное видео должно длиться 4–30 секунд. Можно добавить до 49 референсов; вместе с исходником — до 50 файлов, включая максимум 10 видео, 30 изображений и 10 аудиофайлов.

Продление видео

json
{
  "model": "seedance-2.5",
  "mode": "video_extend",
  "variant": "standard",
  "parameters": {
    "resolution": "720p", "duration_seconds": -1, "ratio": "adaptive",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Continue the camera move into the open valley",
    "direction": "forward",
    "video": { "locator": { "type": "media_asset", "media_asset_id": "7c74c900-8b68-4b0f-a337-32ed3a9a2020" } }
  }
}

direction принимает forward или backward. Нужен ratio: adaptive; длительность результата — -1 либо 4–30 секунд.

Медиа и параметры

ВходОграничения
ИзображениеJPEG, PNG или WebP; менее 30 MiB; 300–6000 px по каждой стороне; соотношение 0,4–2,5
ВидеоMP4 или MOV; до 200 MiB; 2–30 сек (исходник edit: 4–30 сек); 407 696–8 295 044 пикселей; 24–60 fps
АудиоMP3 или WAV; до 15 MiB; 2–30 сек

Для загруженных media_asset проверенные размеры сверяются с ограничениями до создания генерации и резерва денег. При несовпадении API возвращает HTTP 422, код input_media_dimensions_invalid и error.details: поле field, ID файла media_asset_id, размеры width/height, причину reason и допустимые пределы. Слишком широкое изображение можно обрезать слева/справа или добавить поля сверху/снизу. Пропорциональное уменьшение не меняет соотношение сторон. Для старых запросов в очереди тот же код возвращается асинхронно, а резерв освобождается.

В одном запросе с референсами или редактированием суммарная длительность всех входных видео — не более 30 секунд, а всех входных аудиофайлов — не более 30 секунд.

Разрешение: 480p, 720p или 1080p. priority: 0–9. execution_expires_after_seconds: 3600–259200. num_outputs — число альтернативных видео, сейчас оно равно только 1. Установите return_last_frame: true, чтобы получить последний кадр отдельным изображением.

Актуальные машиночитаемые ограничения выбранного режима возвращаются в operation_constraints ответа GET /v1/models.

Асинхронный результат и стоимость в USD

Создание возвращает HTTP 202. Проверяйте GET /v1/generations/{id} до финального статуса. При успехе в ответе будет один MP4 с role: result; при return_last_frame: true также вернётся изображение с role: last_frame.

GET /v1/models публикует текущие цены Gensta в USD: расчётные ставки за секунду результата или тарифицируемую секунду выбранного режима и разрешения. Для запросов с входным видео также учитывается подтверждённая длительность входного видео. Финальное списание успешной генерации возвращается в billing.charged_amount; неиспользованный резерв освобождается. Неуспешные генерации не оплачиваются. Старый объект price сохраняется для совместимости.