Видео · готовый запрос · обновлено 20 октября 2026 г. · 11 минут

Seedance 1.5 Pro API: готовый JSON и запуск через Celestria Gate

Соберём один воспроизводимый запрос Seedance 1.5 Pro: пятисекундное видео 720p, один план и мягкий звук открываемой коробки. Ниже — что сохранить в файл, какие команды выполнить и какие поля прочитать после завершения.

Подключение Seedance 1.5 Pro и получение видео со звуком по API
Редакционная иллюстрация. Учебная сцена из статьи не запускалась платной генерацией.

Какой Seedance и какой API используем

Этот пример использует каноническую модель bytedance/seedance-1-5-pro и операцию text-to-video. Она создаёт новый ролик по тексту, поэтому фотография не требуется. Для оживления фото выберите operation=image-to-video той же карточки и прочитайте её схему: там нужны изображения в input.image_urls.

Все действия выполняются через /v1/media: чтение схемы, оценка, создание и проверка задания. Вы не выбираете площадку отдельным API-путём и не переводите параметры вручную. Gate сопоставляет общие настройки с совместимыми маршрутами и сохраняет выбранного провайдера вместе с заданием. При неполном сравнении минимум цены не обещается.

Инструкция использует общий контракт Gate на 20 октября 2026 года и ограничения модели из первоисточников. Это пример интеграции без нового платного теста сцены. Перед запуском проверьте актуальные схему и native_generation нужной операции: карточка с pricing_verification_required ещё не подтверждает готовность.

Как это устроено
  1. Прочитайте схему: Проверьте канонический ID, типы общих параметров и готовность выбранной операции.
  2. Сохраните JSON: Задайте duration числом, явную operation и модельные controls внутри parameters.
  3. Отправьте один раз: Платный POST создаёт ID; повторы защищает тот же Idempotency-Key.
  4. Получите итог: Через GET дождитесь completed, откройте MP4 и проверьте окончательный расход.
Seedance API за четыре шага: схема, JSON, создание задания, MP4 и расходы
Схема интеграции; технически корректный запрос не является опубликованным результатом генерации.

Подготовьте ключ и прочитайте схему

Создайте API-ключ в кабинете Celestria Gate и задайте его в переменной CELESTRIA_API_KEY своего сервера или терминала. Команды ниже читают эту переменную. В них не нужен ключ fal, а сам секрет не нужно сохранять в JSON с параметрами сцены. Для клиента используйте серверное обращение к Gate.

GET ниже возвращает input_schema, output_schema и openapi. Он не создаёт ролик и не запускает платную генерацию. Сверьте общие поля и допустимые значения parameters. В GET /v1/media/models найдите карточку по data[].id и проверьте native_generation выбранной операции. После загрузки схемы перечитайте состояние, особенно если раньше цена ещё проверялась.

curl --fail-with-body --get \
  'https://api.celestriagate.com/v1/media/models/schema' \
  -H "Authorization: Bearer $CELESTRIA_API_KEY" \
  --data-urlencode 'model=bytedance/seedance-1-5-pro' \
  --data-urlencode 'operation=text-to-video'

Сохраните JSON в seedance-box.json

Откройте текстовый редактор, создайте файл seedance-box.json и вставьте объект целиком. Описание просит руки открыть небольшую картонную коробку на столе, мягкий шелест картона и тихий фон комнаты. Это один план без речи, музыки и надписей; такой результат проще проверить, чем много событий за пять секунд.

duration в общем API — число 5 без кавычек, generate_audio — true или false. camera_fixed и enable_safety_checker помещены в input.parameters как настройки модели. Gate сам переводит общие поля для выбранного провайдера. Для немого варианта отдельной новой попытки используйте generate_audio: false и согласуйте с этим звуковую часть описания.

{
  "model": "bytedance/seedance-1-5-pro",
  "input": {
    "operation": "text-to-video",
    "prompt": "One continuous locked-off shot of hands slowly opening a small plain cardboard box on a clean wooden table. Soft daylight, natural hand motion. Gentle cardboard rustling synchronized with the lid opening, quiet room tone. No dialogue, no music, no text or logos.",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": 5,
    "generate_audio": true,
    "parameters": {
      "camera_fixed": true,
      "enable_safety_checker": true
    }
  }
}

Что можно менять в первом запросе

Сначала меняйте только prompt, сохраняя остальные параметры. Так проще понять, связана ли проблема с содержанием сцены или с форматом вызова. После первого корректного результата можно отдельно проверить вертикальное видео или другую длительность. Каждое изменение должно быть видно в сохранённом JSON.

seed можно использовать для повторяемости настроек, но одинаковое число не является обещанием идентичного файла во всех условиях и версиях сервиса. Для приёмки сохраняйте готовый результат, а не только seed. Если выбрали image-to-video вместо text-to-video, сначала прочитайте отдельную схему и добавьте нужное изображение.

ПараметрТип и назначение
operationСтрока text-to-video для этой задачи
promptСтрока: изображение, действие и звук
durationЧисло: допустимые значения модели 4–12 секунд
resolutionСтрока: 480p, 720p или 1080p
aspect_ratioСтрока, например 16:9 или 9:16
parameters.camera_fixedBoolean: пожелание неподвижной камеры
generate_audioBoolean: включить новую звуковую дорожку
parameters.enable_safety_checkerBoolean: доступная проверка содержимого
  1. Оцените подготовленный файл

    После сохранения seedance-box.json отправьте его в /v1/media/estimate. Этот POST не создаёт видео. Посмотрите provider, reason и estimate: только подтверждённые сопоставимые цены позволяют говорить о минимуме. При null окончательная стоимость заранее не доказана.

    curl --fail-with-body -X POST \
      'https://api.celestriagate.com/v1/media/estimate' \
      -H "Authorization: Bearer $CELESTRIA_API_KEY" \
      -H 'Content-Type: application/json' \
      --data-binary @seedance-box.json

Отправьте файл и сохраните ответ

Следующая команда выполняет платный POST. Запускайте её только для нужной попытки, из папки с seedance-box.json. --data-binary читает файл, а -o seedance-job.json сохраняет ответ отдельно. Это удобно, чтобы не потерять id при закрытии терминала.

Idempotency-Key связывает повторы именно этого JSON. При сетевом тайм-ауте не меняйте файл и ключ, пока выясняете состояние. Для нового промпта используйте новый ключ. Изменённое тело со старым ключом отклоняется, чтобы две разные задачи не оказались под одним обозначением.

curl --fail-with-body -X POST \
  'https://api.celestriagate.com/v1/media/generations' \
  -H "Authorization: Bearer $CELESTRIA_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: seedance-box-001' \
  --data-binary @seedance-box.json \
  -o seedance-job.json

Получите ID и проверяйте статус

Если команда создания завершилась успешно и вернула JSON задания, извлеките id командой ниже. Понадобится Python 3. Она читает сохранённый файл и не отправляет новый запрос. Затем GET читает состояние того же задания. При ошибке создания сначала прочитайте ошибку в файле, а не извлекайте несуществующий id.

Проверяйте статус с паузой 5–10 секунд. pending и in_progress означают, что видео ещё обрабатывается. awaiting_billing — результат получен, но окончательный расход ещё подтверждается. Не создавайте второй ролик ради ускорения этого этапа. При failed сохраните error.code и error.message.

GENERATION_ID=$(python3 -c 'import json; print(json.load(open("seedance-job.json"))["id"])')
curl --fail-with-body \
  "https://api.celestriagate.com/v1/media/generations/$GENERATION_ID" \
  -H "Authorization: Bearer $CELESTRIA_API_KEY"

Что открыть после completed

Готовое задание имеет object: media_generation. Список files помогает найти возвращённое видео; в исходном result также может находиться video.url и seed. Форма результата зависит от выбранного маршрута, поэтому сначала смотрите files и схему модели. Сохраните нужный MP4, пока ссылка доступна.

Откройте ролик и проверьте четыре вещи: коробка остаётся той же, руки не деформируются, шелест соответствует движению крышки и нет лишней речи. Промпт — пожелание, поэтому даже успешно завершённый файл требует просмотра. Отдельно запишите фактическую длительность и разрешение, если результат идёт клиенту.

Как рассчитать и проверить цену Seedance

Опубликованный тариф fal для Seedance 1.5 Pro использует видеотокены. Для 1280×720, 24 fps и пяти секунд получается 108 000 единиц по формуле ширина × высота × fps × время / 1024. При $2,40 за миллион со звуком оценка составляет $0,2592; без звука по $1,20 — $0,1296.

В рублях это примерно 28,68 ₽ и 14,34 ₽ по расчётному коэффициенту 110,63 ₽ за $1. Это ориентиры на 20 октября, не фактическое списание учебной сцены. После completed сверяйте billing.cost_rub и billing.upstream_cost_usd; предварительный резерв и estimated_cost_rub могут отличаться от итога.

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

Если запрос не сработал

При ошибке типа данных сначала проверьте числовой duration, operation и значения enum. Модельные controls должны находиться в parameters. При 401 проверьте ключ Gate. При сообщении о неготовности загрузите актуальную схему и состояние карточки. Не заменяйте неизвестную цену нулём и не считайте её бесплатным запуском.

Если после POST соединение оборвалось, проверьте сохранённый ответ и список своих заданий; затем повторяйте тот же запрос с прежним ключом. При completed без ожидаемого звука проверьте файл, громкость плеера и сохранённый generate_audio. У технической ошибки и неудачного художественного результата разные причины, поэтому исправлять их нужно отдельно.

Частые вопросы

Какой ID Seedance использовать в API Gate?

Канонический ID — bytedance/seedance-1-5-pro. Для этого примера задайте input.operation=text-to-video. Для работы с фотографией выберите image-to-video и проверьте её общую схему.

Как передавать длительность Seedance через Gate?

В общем /v1/media поле input.duration — число, например 5. Допустимые значения определяет схема выбранной модели и операции; ручной перевод в формат провайдера выполняет Gate.

Как включить и выключить звук?

Параметр generate_audio принимает true или false. Описание звука находится в prompt. Поле само по себе не гарантирует точную речь или качество синхронизации.

Можно ли повторить POST после тайм-аута?

Повторяйте тот же JSON с тем же Idempotency-Key и проверяйте созданный ID. Новый ключ обозначает новую попытку и может создать ещё одно оплачиваемое задание.

Где увидеть фактическую цену?

В billing.cost_rub и billing.upstream_cost_usd завершённого задания. Расчёт $0,2592 в статье является оценкой подписанных параметров, а не проведённым списанием.

Источники

Канонический адрес материала · Получить API-ключ