Видео до 30 с, 50+ референсов. Попробовать

Добро пожаловать в SeeGen AI API — единый API для кинематографичной генерации видео и высококачественных изображений на основе нескольких ведущих моделей.

Обзор

SeeGen AI — это единый API генерации: один согласованный набор эндпоинтов для запуска нескольких ведущих ИИ-моделей видео и изображений. Выберите модель с помощью параметра model — аутентификация, отправка задач, опрос статуса и вебхуки работают одинаково для всех них.

Доступные модели:

  • Видео — Seedance 2.0 Pro (sd2), Seedance 2.0 Fast (sd2-fast), Seedance 2.0 Mini (sd2-mini), Seedance 2.5 (sd2.5), HappyHorse 1.1 (happyhorse)
  • Изображения — GPT Image 2 (gpt-image-2), Nano Banana 2 (nano-banana-2), Nano Banana Pro (nano-banana-pro), Seedream 5.0 Lite (seedream-v5.0-lite), Seedream 5.0 Pro (seedream-v5.0-pro)

Базовый URL: https://seegen.ai/api/v1

Модель: передайте любой из перечисленных выше алиасов в поле model (например, sd2, gpt-image-2).

Почему SeeGen AI?

Больше причин выбрать SeeGen AI:

  • Больше, чем Seedance 2.0: HappyHorse 1.1, Nano Banana, ChatGPT Image и другие.
  • Подписка не требуется — оплата по факту использования
  • Быстрый доступ к новейшим моделям
  • Поддержка клиентов 24/7
  • Поддержка по официальным вопросам, связанным с моделями
  • Доступ к консоли для разработчиков
  • Открыт как для компаний, так и для частных пользователей

Тарифы

40% OFF

API Pack

$500$833

125,000 кредитов ($0.004/кредит)

~781 5-секундных видео

40% OFF

API-XL Pack

$2,000$3,332

500,000 кредитов ($0.004/кредит)

~3,125 5-секундных видео

Seedance 2.0 / Fast / Mini / 2.5 — расчёт стоимости

Пусть out = output_seconds, а in = сумма ⌈duration⌉ каждого входного видео (каждое округляется вверх, минимум out × 2/3). Seedance 2.5 использует тот же расчёт, что и Seedance 2.0. Базовая ставка соответствующей модели умножается на 1.5 и округляется перед применением формулы задачи (1080P нативен на sd2.5, 2.5× от ставки 720P); независимые от модели надбавки за апскейл остаются +30 / +40 кредитов за выходную секунду для 2K / 4K (+20 за 1080P только на sd2-fast / sd2-mini).

Без входного видеоС входным видео
sd2.5: 480P30 × out23 × (out + in)
sd2.5: 720P60 × out45 × (out + in)
sd2.5: 1080P (нативно)150 × out113 × (out + in)
sd2.5: 2K(60 + 30) × out45 × (out + in) + 30 × out
sd2.5: 4K(60 + 40) × out45 × (out + in) + 40 × out
sd2-pro: 480P20 × out15 × (out + in)
sd2-pro: 720P40 × out30 × (out + in)
sd2-pro: 1080P (нативно)100 × out75 × (out + in)
sd2-pro: 2K(40 + 30) × out30 × (out + in) + 30 × out
sd2-pro: 4K (нативно)200 × out150 × (out + in)
sd2-fast: 480P16 × out12 × (out + in)
sd2-fast: 720P32 × out24 × (out + in)
sd2-fast: 1080P(32 + 20) × out24 × (out + in) + 20 × out
sd2-fast: 2K(32 + 30) × out24 × (out + in) + 30 × out
sd2-fast: 4K(32 + 40) × out24 × (out + in) + 40 × out
sd2-mini: 480P10 × out7.5 × (out + in)
sd2-mini: 720P20 × out15 × (out + in)
sd2-mini: 1080P(20 + 20) × out15 × (out + in) + 20 × out
sd2-mini: 2K(20 + 30) × out15 × (out + in) + 30 × out
sd2-mini: 4K(20 + 40) × out15 × (out + in) + 40 × out

Примечание: sd2-pro 1080P и 4K — нативный официальный вывод (4K = 5× ставки 720P); sd2-pro 2K и все режимы sd2-fast / sd2-mini 1080P/2K/4K апскейлятся силами SeeGen AI. sd2.5 генерирует нативно в 480P/720P/1080P (1080P = 2.5× ставки 720P, без надбавки за апскейл) и использует автоматический апскейл для 2K/4K. Запросите любой уровень через outputResolution: "4k" (например, "2k" / "4k"; шлюз сам выбирает нативный режим или апскейл — отличаются только цена и метка Native). sd2-mini стоит 50% от sd2-pro — самый дешёвый уровень. Seedance 2.5 использует округление длительности по каждому видео, минимальный порог входной длительности и расчёт апскейла от Seedance 2.0. Базовая ставка соответствующей модели умножается на 1.5 и округляется перед расчётом задачи (например, 1080P с видео: 75 × 1.5 → 113). Независимые от модели надбавки за апскейл 2K / 4K остаются на уровне +30 / +40 кредитов за выходную секунду. Если апскейл не удался, завершённая задача возвращает результат в 720P без частичного возврата кредитов.

  • sd2.5 480P, 4-секундный вывод без входного видео: 120 кредитов
  • sd2.5 720P, 5-секундный вывод без входного видео: 300 кредитов
  • sd2.5 720P, 5-секундный вывод + 3-секундное входное видео (минимум входа — 4 секунды): 405 кредитов
  • sd2.5 1080P нативно, 5-секундный вывод без входного видео: 750 кредитов
  • sd2.5 1080P нативно, 5-секундный вывод + 5-секундное входное видео: 1,130 кредитов

happyhorse — кредиты за секунду

ВыводКредиты / секПример на 5 с
720P32160
1080P60300
2K32 + 30310
4K32 + 40360

Примечание: апскейл 2K / 4K добавляется поверх базы 720P (не суммируется с нативным 1080P). t2v / i2v / r2v используют одну и ту же ставку за секунду — референсные изображения не тарифицируются.

🎉 Ограниченное по времени предложение: скидка 33% на всю генерацию изображений — все цены на изображения ниже уже указаны со скидкой.

gpt-image-2 — кредиты за изображение

РазрешениеСреднее качествоВысокое качество
1k10154770
2k (по умолчанию)233584125
4k4060154230

Каждая задача создаёт 1 изображение. Чтобы получить N вариантов, отправьте N задач. При сбое задачи кредиты возвращаются автоматически.

nano-banana-2 и nano-banana-pro — кредиты за изображение

Разрешениеnano-banana-2nano-banana-pro
1k20304060
2k (по умолчанию)30454060
4k477074110

Каждая задача создаёт 1 изображение. Чтобы получить N вариантов, отправьте N задач. При сбое задачи кредиты возвращаются автоматически.

Seedream 5.0 — кредиты за изображение

Модель / уровеньКредиты
Lite 2k / 4k (фиксированная цена)710
Pro 1k (по умолчанию)1015
Pro 2k2030

Каждая задача создаёт 1 изображение. Чтобы получить N вариантов, отправьте N задач. При сбое задачи кредиты возвращаются автоматически. Референсные изображения не тарифицируются отдельно.

Проверьте баланс: GET /api/v1/account/credits

Аутентификация

Все запросы к API требуют Bearer-токен в заголовке Authorization. Вы можете создавать и управлять API-ключами в разделе Настройки аккаунта.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://seegen.ai/api/v1/account/credits

Важно: ваш API-ключ показывается только один раз при создании. Храните его в безопасном месте. Вы можете создать до 10 API-ключей на аккаунт.

Быстрый старт

Сгенерируйте видео в два шага: создайте задачу, затем опрашивайте статус, чтобы получить результат.

# 1. Create a text-to-video task
TASK_ID=$(curl -s -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A golden retriever running on the beach at sunset",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask | jq -r '.taskId')

echo "Task created: $TASK_ID"

# 2. Poll for result
while true; do
  RESULT=$(curl -s -H "Authorization: Bearer $API_KEY" \
    "https://seegen.ai/api/v1/jobs/queryTask?taskId=$TASK_ID")
  STATUS=$(echo $RESULT | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

Эндпоинты

POST/api/v1/jobs/createTask

Создать новую задачу генерации видео

GET/api/v1/jobs/queryTask

Запросить статус и результат задачи

GET/api/v1/account/credits

Проверить баланс кредитов

POST/api/v1/assets/upload

Загрузить ассет (изображение/видео/аудио) на проверку

GET/api/v1/assets/status

Запросить статус проверки ассета

GET/api/v1/assets/list

Список загруженных ассетов

POST/api/v1/upscale/create

Отправить отдельную задачу апскейла видео (720p / 1080p / 2K / 4K)

GET/api/v1/upscale/query

Опросить статус и результат отдельной задачи апскейла

Выбор модели (видео)

Видео генерируют два семейства моделей. Выбирайте по режиму и цене; используйте вместе с разделом Тарифы, чтобы оценить стоимость.

МодельT2VI2VFirst–LastMulti-RefR2VНативный 1080pНативный 4KАудио720p / 5s
sd2.5апскейл300 кредитов
sd2200 кредитов
sd2-fastапскейлапскейл160 кредитов
sd2-miniапскейлапскейл100 кредитов
happyhorseапскейл160 кредитов

T2V = текст в видео · I2V = изображение в видео (первый кадр) · First–Last = первый + последний ключевой кадр · Multi-Ref = смешанные референсы: изображения / видео / аудио · R2V = 1–9 референсных изображений с маркерами персонажей

Seedance 2.0 / 2.0 Fast / 2.0 Mini / Seedance 2.5

Текст в видео

Сгенерируйте видео из текстового промпта. Изображения не требуются.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A futuristic city with flying cars at night, neon lights reflecting on wet streets",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ПараметрТипОбязательныйОписание
promptstringДаТекстовое описание видео для генерации. Максимум 20000 символов.
durationstringНетДлительность видео: от "4s" до "15s"; sd2.5 поддерживает до "30s" (по умолчанию: "5s")
resolutionstringНетСоотношение сторон через разрешение. Варианты: auto (по умолчанию), 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstringНетУровень выходного разрешения: "480p", "720p" (по умолчанию), "1080p", "2k" или "4k". Нативные разрешения различаются по модели: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Более высокие уровни апскейлятся автоматически.
seedintНетСид для воспроизводимости: -1 или не указывайте для случайного значения; 0–2147483647 для фиксированного.
generateAudiobooleanНетСинтезировать ли синхронизированную аудиодорожку. По умолчанию true; передайте false для видео без звука.

Изображение в видео

Анимируйте статичное изображение в видео. Укажите один URL изображения как начальный кадр.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": ["https://example.com/photo.jpg"],  // or "asset://asset-20260326-abc123"
      "prompt": "The woman slowly turns her head and smiles",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ПараметрТипОбязательныйОписание
urlsstring[]ДаМассив с одним URL изображения (исходный кадр). Поддерживает как HTTP-URL, так и ссылки на ассеты (например, "asset://asset-20260326-abc123")
promptstringНетТекстовое описание желаемого движения
durationstringНетДлительность видео: от "4s" до "15s"; sd2.5 поддерживает до "30s" (по умолчанию: "5s")
outputResolutionstringНетУровень выходного разрешения: "480p", "720p" (по умолчанию), "1080p", "2k" или "4k". Нативные разрешения различаются по модели: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Более высокие уровни апскейлятся автоматически.
seedintНетСид для воспроизводимости: -1 или не указывайте для случайного значения; 0–2147483647 для фиксированного.
generateAudiobooleanНетСинтезировать ли синхронизированную аудиодорожку. По умолчанию true; передайте false для видео без звука.

Первый и последний кадр

Задайте начальный и конечный кадры — модель сгенерирует переход между ними. Использует videoInputMode: "keyframe".

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/first-frame.jpg",
        "https://example.com/last-frame.jpg"
      ],
      "prompt": "Smooth camera transition from day to night",
      "duration": "5s",
      "videoInputMode": "keyframe"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ПараметрТипОбязательныйОписание
urlsstring[]ДаМассив ровно с 2 URL изображений: [first_frame, last_frame]. Поддерживает как HTTP-URL, так и ссылки на ассеты (например, "asset://asset-20260326-abc123")
videoInputModestringДаДолжно быть "keyframe"
promptstringНетТекстовое описание, направляющее переход
durationstringНетДлительность видео: от "4s" до "15s"; sd2.5 поддерживает до "30s" (по умолчанию: "5s")
outputResolutionstringНетУровень выходного разрешения: "480p", "720p" (по умолчанию), "1080p", "2k" или "4k". Нативные разрешения различаются по модели: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Более высокие уровни апскейлятся автоматически.
seedintНетСид для воспроизводимости: -1 или не указывайте для случайного значения; 0–2147483647 для фиксированного.
generateAudiobooleanНетСинтезировать ли синхронизированную аудиодорожку. По умолчанию true; передайте false для видео без звука.

Мульти-референс

Используйте несколько референсных изображений, видео и аудиофайлов для управления генерацией. Использует videoInputMode: "reference". Для sd2.5 это подзадача reference по умолчанию; чтобы отредактировать или продолжить существующее видео, см. раздел Редактирование и расширение видео ниже.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/ref1.jpg",
        "https://example.com/ref2.jpg"
      ],
      "videoUrls": ["asset://asset-motion-video"],
      "audioUrls": ["https://example.com/audio.mp3"],
      "prompt": "Character walks through a garden",
      "duration": "5s",
      "videoInputMode": "reference",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ПараметрТипОбязательныйОписание
urlsstring[]НетURL референсных изображений (максимум 9). Поддерживает как HTTP-URL, так и ссылки на ассеты (например, "asset://asset-20260326-abc123")
videoUrlsstring[]НетURI референсных видео asset:// — сначала загрузите через /api/v1/assets/upload; внешние URL отклоняются. sd2: максимум 3 видео, каждое ≤15s. sd2.5: до 10 видео, каждое 2–30s и ≤200MB, суммарная референсная длительность ≤30s, поддерживаются входы 480p–4K.
audioUrlsstring[]НетРеференсные аудиовходы. sd2 / sd2-fast / sd2-mini: до 3 аудиофайлов, каждый 2–15s, суммарно ≤15s — аудио не может быть единственным референсом для этих моделей (добавьте хотя бы одно изображение или видео). sd2.5: до 10 файлов, ≤15MB и 2–30s каждый, суммарно ≤30s, поддерживается вход только с аудио.
videoInputModestringДаДолжно быть "reference"
promptstringНетТекстовое описание
durationstringНетДлительность видео: от "4s" до "15s"; sd2.5 поддерживает до "30s" (по умолчанию: "5s")
resolutionstringДаОбязательно для режима reference. Варианты: 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstringНетУровень выходного разрешения: "480p", "720p" (по умолчанию), "1080p", "2k" или "4k". Нативные разрешения различаются по модели: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Более высокие уровни апскейлятся автоматически.
seedintНетСид для воспроизводимости: -1 или не указывайте для случайного значения; 0–2147483647 для фиксированного.
generateAudiobooleanНетСинтезировать ли синхронизированную аудиодорожку. По умолчанию true; передайте false для видео без звука.

Ограничения по референсам

  • Максимум 9 изображений, 3 видео, 3 аудиофайла
  • Максимум 12 файлов суммарно по всем типам
  • Каждое видео/аудио должно быть ≤ 15 секунд
  • Изображения должны быть не менее 400px по короткой стороне
  • sd2.5: максимум 30 изображений, 10 видео, 10 аудиофайлов, суммарно 50; суммарная длительность видео и аудио — каждая ≤ 30 секунд

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

sd2.5 разделяет генерацию на основе референсов на три подзадачи. Не указывайте mode для обычной reference-генерации, задайте mode: "edit", чтобы отредактировать существующее видео, или mode: "extend", чтобы продолжить его. Оба режима требуют как минимум одно видео в videoUrls и всегда выводят видео с соотношением сторон исходного видео.

Поместите видео, с которым хотите работать, первым в videoUrls и ссылайтесь на него как "Video 1" в промпте. edit принудительно делает длину вывода равной длине этого первого (исходного) видео, которое должно быть 4–30s, поэтому любой переданный вами duration игнорируется; тарификация использует длительность исходного видео как длительность вывода, плюс все референсные видео как вход. extend принимает 1–3 клипа, склеенных по порядку, и запрошенный вами duration — это длина вывода данной генерации (не связана с длиной исходника) — тарифицируется как обычная reference-генерация.

Модели семейства 2.0 (sd2 / sd2-fast / sd2-mini) также принимают mode: "edit" и mode: "extend": они определяют операцию по вашему промпту (явно опишите редактирование или продолжение), соотношение сторон следует исходному видео, а duration остаётся под вашим контролем при обычной тарификации.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2.5",
    "inputs": {
      "mode": "edit",
      "videoUrls": ["asset://asset-source-video"],
      "urls": ["https://example.com/annotation-at-1.2s.png"],
      "source_frame_timestamps_ms": [1200],
      "prompt": "Replace the marked object with a red umbrella",
      "outputResolution": "720p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ПараметрТипОбязательныйОписание
modestringНет"edit" или "extend". Не указывайте для обычной reference-генерации.
videoUrlsstring[]ДаМинимум одно видео; первое — исходное ("Video 1") — длина вывода и тарификация для edit следуют за ним. Последующие видео — дополнительные референсы (edit) или дополнительные клипы, склеенные по порядку (extend, максимум 3).
urlsstring[]НетНеобязательные изображения аннотаций/референсов.
source_frame_timestamps_msnumber[]Неттолько для mode "edit". Одна неотрицательная временная метка исходного видео в миллисекундах на каждое изображение в urls.
outputResolutionstringНетУровень выходного разрешения: "480p", "720p" (по умолчанию), "1080p", "2k" или "4k". Нативные разрешения различаются по модели: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Более высокие уровни апскейлятся автоматически.

Справочник параметров Seedance

Полный справочник всех параметров inputs для моделей sd2 / sd2-fast / sd2-mini / sd2.5.

ПараметрТипОбязательныйОписание
promptstringНетТекстовое описание (обязательно для text-to-video, необязательно для остальных режимов). Максимум 20000 символов.
urlsstring[]НетURL изображений. Поддерживает как HTTP-URL, так и ссылки на ассеты (например, "asset://asset-20260326-abc123"). Внутренне сопоставляется с uploadedUrls.
videoUrlsstring[]НетURI референсных видео asset:// (только для режима reference). Должны быть предварительно загружены через /api/v1/assets/upload — внешние URL отклоняются.
audioUrlsstring[]НетURL референсного аудио (только для режима reference). Вход только с аудио поддерживается на sd2.5; sd2 / sd2-fast / sd2-mini требуют хотя бы одно изображение или видео вместе с аудио.
durationstringНетобычно от "4s" до "15s"; sd2.5 поддерживает до "30s". По умолчанию: "5s"
resolutionstringНетСоотношение сторон: auto (по умолчанию) | 720x720 | 720x960 | 960x720 | 1280x720 | 720x1280 | 1280x540
outputResolutionstringНетУровень выходного разрешения: "480p", "720p" (по умолчанию), "1080p", "2k" или "4k". Нативные разрешения различаются по модели: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Более высокие уровни апскейлятся автоматически.
videoInputModestringНет"keyframe" (по умолчанию) или "reference"
modestringНетПодзадача режима reference (все модели Seedance): не указывайте для обычной reference-генерации, "edit" — чтобы отредактировать первое видео в videoUrls, "extend" — чтобы продолжить 1-3 клипа. См. раздел Редактирование и расширение видео.
source_frame_timestamps_msnumber[]Неттолько для sd2.5 Video Edit: одна неотрицательная временная метка в миллисекундах на каждое изображение-аннотацию.
seedintНетСлучайный сид для воспроизводимости. -1 или не указывайте для случайного значения на сервере. Один и тот же сид с теми же входами даёт близкий по результату вывод (не побитово идентичный из-за недетерминированности GPU). Диапазон: от -1 до 2147483647.
generateAudiobooleanНетСинтезировать ли аудиодорожку (речь, звуковые эффекты, фоновую музыку), синхронизированную с видео. По умолчанию true. Установите false, чтобы получить видео без звука — немного быстрее, полезно, если вы планируете озвучить отдельно.
bitrateModestringНетУровень битрейта вывода при том же разрешении: "standard" (по умолчанию) или "high". "high" сохраняет больше деталей и уменьшает бэндинг/блочность при размере файла ~3-5× больше — не меняет разрешение или цену.
upscaleResolutionstringНет(Устарело) Устаревшее раздельное поле, всё ещё принимается для обратной совместимости. Новым интеграциям следует использовать outputResolution, которое теперь напрямую принимает "2k" / "4k". Если переданы оба поля, приоритет имеет upscaleResolution — за исключением моделей с нативным 1080p (Seedance2 Pro / Seedance 2.5), где upscaleResolution:"1080p" разрешается в нативный 1080p (тарифицируется по нативной ставке).

Поля верхнего уровня запроса: model (обязательно), inputs (обязательно), callBackUrl (необязательный URL вебхука).

Ассеты

Ассеты — это изображения, видео и аудиофайлы, которые проходят проверку, прежде чем их можно будет использовать в задачах генерации видео. Загрузите ассет, дождитесь, пока он станет ACTIVE, а затем используйте его URL asset:// в своих задачах.

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

Загрузка ассета

Два способа загрузки: отправить локальный файл напрямую (multipart/form-data) или указать публично доступный HTTPS URL. В любом случае ассет обрабатывается и проверяется автоматически.

Способ A — прямая загрузка файла (multipart/form-data)

Отправьте локальный файл без необходимости в хостинге изображений. Тип медиа определяется по байтам файла (расширению имени файла не доверяют). Разрешено: изображения (jpg/png/webp/gif/bmp/tiff/heic), видео (mp4/mov), аудио (wav/mp3). Максимум 50MB на файл (изображение ≤30MB, видео ≤50MB, аудио ≤15MB).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@/path/to/photo.jpg" \
  -F "name=my-photo" \
  https://seegen.ai/api/v1/assets/upload
ПараметрТипОбязательныйОписание
filefileДаЛокальный файл (поле multipart-формы). Тип медиа определяется по содержимому.
namestringНетНазвание ассета (максимум 64 символа)

Способ B — по URL (application/json)

Если файл уже размещён по публичному HTTPS URL.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/photo.jpg",
    "type": "IMAGE",
    "name": "my-photo"
  }' \
  https://seegen.ai/api/v1/assets/upload
ПараметрТипОбязательныйОписание
urlstringДаПублично доступный HTTPS URL загружаемого файла
typestringДа"IMAGE", "AUDIO" или "VIDEO"
namestringНетНазвание ассета (максимум 64 символа)

Ответ на загрузку

{
  "assetId": 123,
  "volcAssetId": "asset-20260326-abc123",
  "type": "IMAGE",
  "status": "PROCESSING",
  "failReason": null,
  "url": "https://example.com/photo.jpg",
  "name": "my-photo",
  "createdAt": 1711234567890
}

Запрос статуса ассета

Опрашивайте статус проверки ассета. Когда статус — PROCESSING, эндпоинт автоматически проверяет обновления от системы проверки.

# Query by asset ID (numeric)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=123"

# Query by volcAssetId (string)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=asset-20260326-abc123"

Значения статуса ассета

  • PROCESSINGна проверке, ещё нельзя использовать
  • ACTIVEпроверка пройдена, готово к использованию в задачах
  • FAILEDпроверка не пройдена, проверьте failReason

Список ассетов

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

# List all assets
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list"

# Filter by type and status
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?type=IMAGE&status=ACTIVE&limit=10"

# Paginate with cursor
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?cursor=100&limit=20"
ПараметрТипОбязательныйОписание
typestringНетФильтр по типу: "IMAGE", "AUDIO" или "VIDEO"
statusstringНетФильтр по статусу: "NONE", "PROCESSING", "ACTIVE" или "FAILED"
cursornumberНетКурсор для пагинации (используйте nextCursor из предыдущего ответа)
limitnumberНетЭлементов на странице, 1-50 (по умолчанию: 20)

Ответ со списком

{
  "items": [
    {
      "assetId": 123,
      "volcAssetId": "asset-20260326-abc123",
      "type": "IMAGE",
      "status": "ACTIVE",
      "failReason": null,
      "url": "https://example.com/photo.jpg",
      "name": "my-photo",
      "width": 1920,
      "height": 1080,
      "size": 245000,
      "duration": null,
      "createdAt": 1711234567890
    }
  ],
  "nextCursor": 122
}

Использование ассетов в задачах

Как только ассет получает статус ACTIVE, используйте его volcAssetId с протоколом asset:// в URL вашей задачи:

{
  "model": "sd2",
  "inputs": {
    "urls": ["asset://asset-20260326-abc123"],
    "prompt": "The person slowly looks up and smiles",
    "duration": "5s"
  }
}

HappyHorse 1.1 (Alibaba)

Альтернативная модель генерации видео от Alibaba DashScope. Поддерживает три режима: text-to-video, image-to-video по первому кадру и reference-to-video (1–9 референсных изображений объединяются на один промпт; ссылайтесь на субъектов через character1, character2, … в промпте). HappyHorse 1.1 не поддерживает последний кадр, референсное видео или референсное аудио. Название модели: happyhorse.

Проверка ассетов не требуется — вы можете использовать публичные HTTPS URL изображений напрямую или передавать ссылки asset:// из библиотеки ассетов (автоматически разрешаются обратно в исходный URL R2).

Текст в видео

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "prompt": "A panda DJ at a beach party, smoky sunset",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Изображение в видео (первый кадр)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "urls": ["https://example.com/panda.jpg"],
      "prompt": "The panda blinks and smiles",
      "duration": "5s",
      "outputResolution": "1080p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Референс в видео (1–9 референсных изображений)

Передайте videoWorkflowTab: "multi-reference" вместе с 1–9 URL референсных изображений, чтобы объединить нескольких субъектов в один результат. Ссылайтесь на каждое изображение в промпте через character1, character2, … (в порядке urls). Соотношение сторон контролируется полем ratio (нет первого кадра, от которого можно было бы его вывести).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "videoWorkflowTab": "multi-reference",
      "urls": [
        "https://example.com/character.jpg",
        "https://example.com/folding-fan.jpg",
        "https://example.com/earrings.jpg"
      ],
      "prompt": "A woman in red character1 opening folding fan character2, with tassel earrings character3 swinging",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Справочник параметров HappyHorse

Полный справочник всех параметров inputs для модели happyhorse.

ПараметрТипОбязательныйОписание
promptstringНетТекстовое описание. Обязательно для text-to-video и reference-to-video; необязательно для image-to-video. Максимум 5000 не-CJK символов или 2500 CJK символов (выше этого предела апстрим автоматически обрезает). В r2v используйте character1/character2/… для ссылки на N-е референсное изображение.
urlsstring[]Нетt2v: не указывайте. i2v: ровно 1 URL (используется как первый кадр). r2v: 1–9 URL. Поддерживает публичные HTTPS URL и ссылки на ассеты (например, "asset://asset-20260326-abc123").
videoWorkflowTabstringНетУстановите "multi-reference", чтобы включить режим reference-to-video (должно сочетаться с 1+ urls). Не указывайте для text-to-video / image-to-video.
durationstringНетот "3s" до "15s" (по умолчанию "5s").
outputResolutionstringНет"720p" (по умолчанию) или "1080p".
ratiostringНет"16:9" / "9:16" / "1:1" / "4:3" / "3:4". Используется для text-to-video и reference-to-video — соотношение сторон для image-to-video определяется по первому кадру.
seedintНетот 0 до 2147483647. Оставьте пустым для случайного сида.

Требования к изображениям (i2v / r2v)

  • Короткая сторона ≥ 300px
  • Соотношение сторон от 1:2.5 до 2.5:1
  • Форматы: JPEG, JPG, PNG, BMP, WEBP
  • Максимальный размер файла 10MB на изображение (r2v: для каждого из 1–9 входов)

Выбор модели (изображения)

Модели изображений принимают промпт (и, опционально, референсные изображения) и возвращают одно изображение на задачу. Каждый запрос тарифицируется за изображение по тарифу выбранной модели (или по фиксированной цене для Seedream Lite). Неудачные задачи возвращаются автоматически. Параметра batch нет — чтобы получить несколько вариантов, вызывайте createTask отдельно для каждого изображения.

МодельT2II2I (редактирование)Multi-RefМакс. разрешение2k / medium
gpt-image-2до 104kсм. Тарифы
nano-banana-2до 104kсм. Тарифы
nano-banana-proдо 104kсм. Тарифы
seedream-v5.0-liteдо 104kфиксированная цена
seedream-v5.0-proдо 102kсм. Тарифы

GPT Image 2

Модель GPT Image 2 от OpenAI для высококачественного text-to-image и редактирования image-to-image. Один воркфлоу обрабатывает оба режима — передайте urls, чтобы автоматически переключиться в режим редактирования. Результат доставляется через R2 в запрошенном вами формате (PNG / JPEG / WEBP). Название модели: gpt-image-2.

Текст в изображение

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "quality": "medium",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Изображение в изображение (редактирование)

Передайте 1–10 референсных изображений через urls. Модель использует их как визуальный контекст для редактирования, описанного в prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "quality": "medium",
      "resolution": "1k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Справочник параметров GPT Image 2

Полный справочник всех параметров inputs для модели gpt-image-2.

ПараметрТипОбязательныйОписание
promptstringДаТекстовое описание изображения для генерации или редактирования, которое нужно применить, если указан urls.
urlsstring[]НетURL референсных изображений для режима image-to-image (редактирование) (1–10 изображений). Не указывайте для text-to-image. Принимаются публичные HTTPS URL.
qualitystringНет"medium" / "high". По умолчанию: "medium". Стоимость в кредитах зависит от уровня (см. Тарифы).
resolutionstringНет"1k" / "2k" / "4k". По умолчанию: "2k". Стоимость в кредитах зависит от уровня (см. Тарифы).
aspectRatiostringНет"1:1" / "16:9" / "9:16" / "4:3" / "3:4". По умолчанию: "1:1".
outputFormatstringНет"png" / "jpeg" / "webp". По умолчанию: "png".

Требования к входным изображениям (режим image-to-image)

  • До 10 референсных изображений на задачу
  • Максимальный размер файла 50 MB на изображение
  • Короткая сторона ≥ 256px
  • Соотношение сторон от 1:3 до 3:1
  • Форматы: JPEG, JPG, PNG, WEBP

Стоимость кредитов за изображение зависит от разрешения и качества — полную таблицу см. в разделе Тарифы.

Nano Banana 2

Nano Banana 2 — высококачественная модель изображений с более широким охватом соотношений сторон, чем gpt-image-2, — добавляет портретные/альбомные пресеты (3:2, 2:3, 4:5, 5:4) и кинематографический 21:9. Один воркфлоу обрабатывает оба режима — передайте urls, чтобы автоматически переключиться в режим редактирования. Название модели: nano-banana-2.

Текст в изображение

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Изображение в изображение (редактирование)

Передайте 1–10 референсных изображений через urls. Модель использует их как визуальный контекст для редактирования, описанного в prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Справочник параметров Nano Banana 2

Полный справочник всех параметров inputs для модели nano-banana-2.

ПараметрТипОбязательныйОписание
promptstringДаТекстовое описание изображения для генерации или редактирования, которое нужно применить, если указан urls.
urlsstring[]НетURL референсных изображений для режима image-to-image (редактирование) (1–10 изображений). Не указывайте для text-to-image. Принимаются публичные HTTPS URL.
resolutionstringНет"1k" / "2k" / "4k". По умолчанию: "2k". Стоимость в кредитах зависит от уровня (см. Тарифы).
aspectRatiostringНет"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". По умолчанию: "1:1".

Требования к входным изображениям (режим image-to-image)

  • До 10 референсных изображений на задачу
  • Максимальный размер файла 50 MB на изображение
  • Короткая сторона ≥ 256px
  • Соотношение сторон от 1:3 до 3:1
  • Форматы: JPEG, JPG, PNG, WEBP

Стоимость кредитов за изображение зависит от разрешения — полную таблицу см. в разделе Тарифы.

Nano Banana Pro

Nano Banana Pro — высококачественная модель изображений с более широким охватом соотношений сторон, чем gpt-image-2, — добавляет портретные/альбомные пресеты (3:2, 2:3, 4:5, 5:4) и кинематографический 21:9. Один воркфлоу обрабатывает оба режима — передайте urls, чтобы автоматически переключиться в режим редактирования. Название модели: nano-banana-pro.

Текст в изображение

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Изображение в изображение (редактирование)

Передайте 1–10 референсных изображений через urls. Модель использует их как визуальный контекст для редактирования, описанного в prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Справочник параметров Nano Banana Pro

Полный справочник всех параметров inputs для модели nano-banana-pro.

ПараметрТипОбязательныйОписание
promptstringДаТекстовое описание изображения для генерации или редактирования, которое нужно применить, если указан urls.
urlsstring[]НетURL референсных изображений для режима image-to-image (редактирование) (1–10 изображений). Не указывайте для text-to-image. Принимаются публичные HTTPS URL.
resolutionstringНет"1k" / "2k" / "4k". По умолчанию: "2k". Стоимость в кредитах зависит от уровня (см. Тарифы).
aspectRatiostringНет"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". По умолчанию: "1:1".

Требования к входным изображениям (режим image-to-image)

  • До 10 референсных изображений на задачу
  • Максимальный размер файла 50 MB на изображение
  • Короткая сторона ≥ 256px
  • Соотношение сторон от 1:3 до 3:1
  • Форматы: JPEG, JPG, PNG, WEBP

Стоимость кредитов за изображение зависит от разрешения — полную таблицу см. в разделе Тарифы.

Seedream 5.0 Lite

Быстрая генерация text-to-image и image-to-image в 2K или 4K с 15 соотношениями сторон. Название модели: seedream-v5.0-lite.

Текст в изображение

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "A cinematic product photograph, soft studio light",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Изображение в изображение (редактирование)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "Restyle the references as a premium fashion campaign",
      "urls": ["https://example.com/reference.png"],
      "resolution": "4k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Параметры Seedream 5.0 Lite

ПараметрТипОбязательныйОписание
promptstringДаОписание изображения или инструкция для редактирования.
urlsstring[]Нет1–10 публичных HTTPS URL референсных изображений. Не указывайте для text-to-image.
resolutionstringНет"2k" или "4k". По умолчанию: "2k".
aspectRatiostringНет"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", или "21:9".

Seedream 5.0 Pro

Генерация и редактирование высокой чёткости в 1K или 2K. Название модели: seedream-v5.0-pro.

Текст в изображение

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Editorial portrait with dramatic rim lighting",
      "resolution": "2k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Изображение в изображение (редактирование)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Turn the reference into a cinematic poster",
      "urls": ["https://example.com/reference.png"],
      "resolution": "2k",
      "aspectRatio": "1:2"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Параметры Seedream 5.0 Pro

ПараметрТипОбязательныйОписание
promptstringДаОписание изображения или инструкция для редактирования.
urlsstring[]Нет1–10 публичных HTTPS URL референсных изображений. Не указывайте для text-to-image.
resolutionstringНет"1k" или "2k". По умолчанию: "1k". 4k не поддерживается.
aspectRatiostringНет"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", или "21:9".

Апскейлер видео

Создать задачу

POST /api/v1/upscale/create

# source.url accepts ANY https video URL — your own CDN, OR a file you first
# uploaded to us via /api/v1/assets/upload (pass the r2Url it returns). No need
# to declare which: we detect it. External URLs are validated; our own are trusted.
curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": { "type": "url", "url": "https://your-cdn.com/video.mp4" },
    "targetResolution": "2k",
    "callBackUrl": "https://your-server.com/webhook"
  }' \
  https://seegen.ai/api/v1/upscale/create
ПараметрТипОбязательныйОписание
source.typestringДаИспользуйте "url" для любого источника. ("uploadId" — устаревший алиас, сохранённый для обратной совместимости.)
source.urlstringНетС type="url". Любой https URL видео — ваш собственный CDN или r2Url, возвращённый /api/v1/assets/upload. Для внешних URL http и приватные/внутренние IP-адреса отклоняются (защита от SSRF); URL на нашем собственном хосте ассетов эту проверку пропускают.
source.r2UrlstringНетУстарело — только с type="uploadId" (для обратной совместимости). Новым интеграциям следует использовать type="url".
targetResolutionstringДа"720p", "1080p", "2k" или "4k". Должно быть выше разрешения источника.
callBackUrlstringНетURL вебхука, вызываемый один раз при достижении финального статуса (completed или failed).

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

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "orderId": "ord_2026...",
  "status": "validating"
}

Запрос статуса

GET /api/v1/upscale/query?taskId=...

Статус проходит стадии validatingprocessingcompleted / failed.

curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/upscale/query?taskId=n770mo4sh6rpi690ff3gwymx"

Ответ при завершении

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "completed",
  "targetResolution": "2k",
  "creditsConsumed": 900,
  "result": {
    "url": "https://static.seegen.ai/standalone-upscale/results/...mp4",
    "probedDurationSeconds": 30,
    "probedSourceResolution": "1280x720"
  },
  "error": null,
  "createdAt": "2026-04-29T01:23:45.000Z",
  "finishedAt": "2026-04-29T01:35:01.000Z"
}

Ответ при ошибке

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "failed",
  "creditsConsumed": null,
  "result": null,
  "error": {
    "code": "SOURCE_RESOLUTION_TOO_HIGH",
    "message": "Source 3840x2160 is not below target 4k"
  }
}

Ограничения

  • Источник: https URL или ранее загруженный вами URL R2
  • Длительность до 600 s (клипы короче 5 s тарифицируются как 5 s)
  • Размер файла ≤ 200 MB
  • Формат: MP4 / MOV / WebM
  • Разрешение источника должно быть ниже целевого

Тарифы

  • 720P: 17 кредитов/сек (5s = 85, 30s = 510)
  • 1080P: 25 кредитов/сек (5s = 125, 30s = 750)
  • 2K: 38 кредитов/сек (5s = 190, 30s = 1140)
  • 4K: 50 кредитов/сек (5s = 250, 30s = 1500)
  • минимум 5 секунд; при сбое кредиты возвращаются автоматически

Коды ошибок

Частые ошибки, на которые вы можете отреагировать. Другие сбои возвращают самообъясняющее поле message — прочитайте его, прежде чем предполагать, что код относится к одному из этих.

КодЗначение
INVALID_URLURL некорректен или не https
URL_NOT_REACHABLEНе удалось получить URL — убедитесь, что он публичный и доступен
UNSUPPORTED_MEDIA_TYPEФайл не является видео или не в формате MP4 / MOV / WebM
FILE_TOO_LARGEИсточник превышает 200 MB
DURATION_EXCEEDS_LIMITИсточник длиннее 600 s
SOURCE_RESOLUTION_TOO_HIGHИсточник уже на уровне целевого разрешения или выше — выберите более высокую цель
INSUFFICIENT_CREDITSНедостаточно кредитов — пополните баланс и повторите попытку

Вебхук-колбэк

Вместо опроса вы можете указать callBackUrl, чтобы автоматически получать результаты при завершении или сбое задачи.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "callBackUrl": "https://your-server.com/webhook/callback",
    "inputs": {
      "prompt": "A cat playing piano",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Полезная нагрузка колбэка

Когда задача завершается, мы отправляем POST-запрос на ваш URL в том же формате, что и ответ queryTask:

// POST to your callBackUrl
{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",
  "creditsUsed": 200,
  "output": [
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

Политика повторов: если ваш эндпоинт возвращает статус, отличный от 2xx, мы повторяем попытку до 3 раз с увеличивающимися задержками (1s, 5s, 30s).

Формат ответа

Ответ createTask

// 200 OK
{ "taskId": "task_abc123" }

Ответ queryTask

{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",     // "PENDING" | "PROCESSING" | "COMPLETED" | "FAILED"
  "creditsUsed": 200,
  "output": [                // null when status is not "COMPLETED"
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,             // error message when status is "FAILED"
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

Ответ credits

{
  "credits": 5000,
  "availableCredits": 4800
}

Обработка ошибок

Код статусаЗначениеДействие
400Некорректные параметрыПроверьте сообщение об ошибке и исправьте запрос
401Недействительный или отсутствующий API-ключПроверьте формат заголовка Authorization
402Недостаточно кредитовПриобретите больше кредитов на seegen.ai
403Доступ запрещёнВы можете запрашивать только свои собственные задачи
404Задача не найденаУбедитесь, что taskId указан верно
429Лимит одновременных задач (3)Дождитесь завершения существующих задач
500Внутренняя ошибка сервераПовторите попытку через несколько секунд

Проверка перед отправкой (400 с кодом)

Запросы Seedance проверяются на соответствие апстрим-контракту до списания каких-либо кредитов. Если проверка не проходит, createTask возвращает { "message": "...", "code": "..." } с HTTP 400, и задача не создаётся. В сообщении точно указано, какое ограничение было нарушено и как это исправить.

ПараметрТипОбязательныйОписание
EMPTY_CONTENTcodeНетНет ни промпта, ни референсного изображения / видео / аудио.
AUDIO_ONLY_NOT_SUPPORTEDcodeНетАудио — единственный референс на sd2 / sd2-fast / sd2-mini. Добавьте изображение или видео, либо используйте sd2.5 (поддерживает только аудио).
DURATION_OUT_OF_RANGEcodeНетduration не является целым числом в пределах диапазона модели (семейство sd2 "4s"–"15s", sd2.5 "4s"–"30s").
EDIT_SOURCE_VIDEO_REQUIRED / EXTEND_SOURCE_VIDEO_REQUIREDcodeНетзапрошен mode "edit" / "extend" без видео в videoUrls.
EDIT_SOURCE_DURATION_INVALIDcodeНетsd2.5 Video Edit: видео в запросе короче 4s или длиннее 30s (ARK применяет диапазон 4–30s к каждому видео в задаче edit).
TOO_MANY_REFERENCEScodeНетБольше референсных изображений / видео / аудиоклипов, чем принимает модель (семейство sd2 — 9 / 3 / 3, sd2.5 — 30 / 10 / 10; extend ≤3 видео).
REFERENCE_VIDEO_DURATION_INVALIDcodeНетРеференсное видео превышает максимум на клип (семейство sd2 — 15s, sd2.5 — 30s) или суммарная референсная длительность превышает лимит (15s / 30s).
ASSET_NOT_FOUND / EXTERNAL_URL / READ_TIMEOUT / READ_FAILEDcodeНетЗапись videoUrls не удалось сопоставить ни с одним из ваших загруженных ассетов, либо не удалось прочитать её длительность.

Полные примеры

Полный воркфлоу: загрузите ассет, дождитесь проверки, создайте задачу с одобренным ассетом и опрашивайте результат.

const API_KEY = process.env.API_KEY;
const BASE = "https://seegen.ai/api/v1";
const headers = {
  "Authorization": `Bearer ${API_KEY}`,
  "Content-Type": "application/json",
};

// 1. Upload asset and wait for review
// (To upload a LOCAL file instead of a URL, POST multipart/form-data with a "file"
//  field — no Content-Type header, no "type" — see the Upload Asset section above.)
async function uploadAndWaitForAsset(url, type = "IMAGE") {
  const res = await fetch(`${BASE}/assets/upload`, {
    method: "POST",
    headers,
    body: JSON.stringify({ url, type }),
  });
  if (!res.ok) throw new Error(`Upload failed: ${(await res.json()).message}`);
  const asset = await res.json();
  console.log(`Asset uploaded: ${asset.assetId}, status: ${asset.status}`);

  // Poll until review completes
  while (true) {
    const statusRes = await fetch(
      `${BASE}/assets/status?assetId=${asset.assetId}`,
      { headers }
    );
    const status = await statusRes.json();
    if (status.status === "ACTIVE") {
      console.log(`Asset approved: asset://${status.volcAssetId}`);
      return status.volcAssetId;
    }
    if (status.status === "FAILED") {
      throw new Error(`Asset review failed: ${status.failReason}`);
    }
    await new Promise((r) => setTimeout(r, 3000));
  }
}

// 2. Create a task
async function createTask(inputs, callBackUrl) {
  const res = await fetch(`${BASE}/jobs/createTask`, {
    method: "POST",
    headers,
    body: JSON.stringify({
      model: "sd2",
      inputs,
      ...(callBackUrl && { callBackUrl }),
    }),
  });
  if (!res.ok) throw new Error(`[${res.status}] ${(await res.json()).message}`);
  return res.json();
}

// 3. Poll until done
async function waitForResult(taskId, timeoutMs = 300000) {
  const start = Date.now();
  while (Date.now() - start < timeoutMs) {
    const res = await fetch(
      `${BASE}/jobs/queryTask?taskId=${taskId}`,
      { headers }
    );
    const result = await res.json();
    if (result.status === "COMPLETED") return result;
    if (result.status === "FAILED") throw new Error(result.error);
    await new Promise((r) => setTimeout(r, 5000));
  }
  throw new Error("Timeout waiting for task");
}

// Full workflow: upload → review → generate → result
async function main() {
  // Upload image and wait for review
  const volcAssetId = await uploadAndWaitForAsset(
    "https://example.com/photo.jpg", "IMAGE"
  );

  // Create task with approved asset
  const { taskId } = await createTask({
    urls: [`asset://${volcAssetId}`],
    prompt: "The person slowly looks up and smiles",
    duration: "5s",
  });
  console.log(`Task: ${taskId}`);

  // Wait for video
  const result = await waitForResult(taskId);
  console.log(`Video: ${result.output[0].url}`);
}

main().catch(console.error);

Нужна помощь? Присоединяйтесь к нашему Discord или свяжитесь с нами