# Seedance 2.5 · Token — /videos/generations

Асинхронная генерация видео с оплатой по фактическим видеотокенам. Черновик и улучшение — отдельные платные задания. Учитываются токены референсных видео. Проверяйте возвращённый ID задания шлюза; не отправляйте запрос повторно после тайм-аута клиента. Контент проходит проверку. Режим без модерации не предлагается. Примерно 95% публичных международных тарифов BytePlus в USD, с округлением до одного десятичного знака. MP4 для обычного использования; MOV может требовать скачивания и совместимого плеера.

**Эндпоинт:** `POST https://nezhagate.com/v1/videos/generations`

## Аутентификация
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## Тело запроса
| Параметр | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| `model` | string | Да | seedance-2.5-token |
| `prompt` | string | Нет | Текстовый промпт. Используйте либо prompt, либо content. Обязателен, кроме улучшения черновика. |
| `content` | array | Нет | Блоки text/image_url/video_url/audio_url. HTTPS-ссылки: до 30 изображений, 10 видео и 10 аудио. ID материалов поставщика не принимаются. |
| `duration` | integer | Нет | 4–30 секунд; по умолчанию 5. Не передавайте при улучшении. |
| `resolution` | string | Нет | 480p / 720p (по умолчанию) / 1080p. Для черновика требуется 480p. Улучшение черновика доступно только в 1080p (по умолчанию). |
| `ratio` | string | Нет | adaptive / 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
| `draft` | boolean | Нет | true создаёт отдельно оплачиваемый черновик 480p. |
| `draft_task_id` | string | Нет | ID завершённого черновика Token в вашей учётной записи. Для улучшения передайте только model, draft_task_id, resolution и при необходимости watermark/callback_url. Улучшение черновика доступно только в 1080p (по умолчанию). Улучшить можно только завершённый Token-черновик своего аккаунта. Посекундные модели , обычные видео 480p и внешние ID не подходят. |
| `output_format` | string | Нет | mp4 / mov. MP4 для обычного использования; MOV может требовать скачивания и совместимого плеера. |

## Пример запроса
```bash
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model":"seedance-2.5-token","prompt":"A sunrise over the sea","duration":5,"resolution":"720p"}'
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
```

## Ответ
```json
{"id":"img_example","object":"video.generation.job","status":"queued","model":"seedance-2.5-token"}
```

## Требования к контенту

Каждая задача Seedance проходит проверку контента: промпт, файлы-референсы и готовый ролик — и изображение, и звук. Задача, не прошедшая проверку, завершается с `content_policy`, деньги не списываются.

### Когда идёт проверка

При отправке проверяются промпт и референсы; после генерации ролика ещё раз проверяются изображение и звук. Поэтому отказ может прийти через несколько секунд после отправки или только после окончания рендера (это может занять больше получаса). Задача, завершившаяся со `status` `failed` и `error.code` `content_policy`, не прошла проверку; с вебхуком придёт событие `video.failed`.

### Без оплаты

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

### Звук

Звук (реплики, закадровый текст, пение и эффекты) модель генерирует по промпту, и он проверяется вместе с изображением: реплики, закадровый текст и тексты песен из промпта озвучиваются или поются. Если в ролике не нужны голоса, не пишите в промпте реплики и тексты песен. Если не прошёл звук, `error.param` равен `audio`, а в message сказано, был ли это сгенерированный звук или ваше аудио-референс.

### Что чаще всего отклоняется

- Сексуальный контент, обнажённость или сексуальные намёки, в том числе изображения, созданные или смонтированные с помощью ИИ
- Кровь, жестокость, самоповреждение и насильственные травмы, например огнестрельные ранения и кровотечение
- Огнестрельное оружие, взрывчатка и наркотики
- Любой сексуализированный контент с несовершеннолетними; несовершеннолетние рядом с алкоголем, табаком, наркотиками или в опасных ситуациях тоже отклоняются
- Политики, знаменитости, спортсмены, бизнесмены и другие публичные лица — внешность или голос, включая двойников
- Персонажи и объекты, защищённые авторским правом, например персонажи Disney или Marvel
- Контент с ненавистью или дискриминацией, фейковые новости

### Длинные сценарии

Одна сцена с нарушением отклоняет весь ролик, и чаще всего это случается в длинных раскадровочных сценариях: перестрелка или крупный план крови в экшен-сцене, несовершеннолетние, которые пьют или курят, — и весь ролик не пройдёт. Перед отправкой прочитайте сценарий целиком и удалите или перепишите такие сцены.

### Реальные люди

Чтобы использовать фото реального человека как референс, нужно право на использование его изображения.

### После отказа

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

Код ошибки: `content_policy` · `status: failed`

## Черновик → 1080p

Улучшить можно только завершённый Token-черновик своего аккаунта. Посекундные модели , обычные видео 480p и внешние ID не подходят.

Создайте черновик 480p и дождитесь succeeded. Передайте его ID NezhaGate как draft_task_id стандартной Token-модели: она создаст итоговое видео 1080p по исходному заданию. Это не увеличение произвольного MP4. Не передавайте повторно prompt, content, duration, ratio, seed или generate_audio. Черновик и итог оплачиваются отдельно.

`POST /v1/videos/generations`

```json

{
  "model": "seedance-2.5-token-draft",
  "prompt": "A sunrise over the sea",
  "duration": 5,
  "resolution": "480p"
}

```

`GET /v1/videos/jobs/{draft_job_id}`

`POST /v1/videos/generations`

```json

{
  "model": "seedance-2.5-token",
  "draft_task_id": "<completed NezhaGate draft job ID>",
  "resolution": "1080p"
}

```

`GET /v1/videos/jobs/{new_job_id}`

`data[0].source_url` — Исходная ссылка возвращается видеосервисом и может истечь. Сохраните видео заранее или скачайте размещённый у нас оригинал.

## Подготовка материалов

API: загрузите файлы в публичное HTTPS-хранилище и передайте image_url, video_url или audio_url в content. Ссылки должны оставаться доступными во время задачи. NezhaGate импортирует материалы в библиотеку и ждёт статуса Active для всех, включая референсы реальных людей. Загрузка файла ещё не означает готовность. Отдельный вызов API библиотеки не нужен.

Playground: файлы → прогресс загрузки → подготовка → готово → подтверждение резерва и генерация. API: на обеих стадиях опрашивайте GET /v1/videos/jobs/{id}. Таймаут не означает отказ; проверьте статус перед повторной отправкой. Исправьте недоступные ссылки до нового запроса.

До 30 изображений, 10 видео и 10 аудио, всего 50. Суммарно до 30с видео и до 30с аудио. Веб-загрузка: 16 МБ/изображение, 50 МБ/видео, 15 МБ/аудио. JSON API принимает HTTPS URL, не локальные пути и не байты файлов. Оригиналы менее 30 МБ; стороны 301–5999 пикселей, соотношение 0.4–2.5. Материалы с лицами требуют подготовки. MP4 для обычного использования; MOV может требовать скачивания и совместимого плеера.

```json

{
  "model": "seedance-2.5-token",
  "content": [
    {
      "type": "text",
      "text": "The character from @Image1 walks by the sea."
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/reference.jpg"
      }
    }
  ],
  "duration": 5,
  "resolution": "720p"
}

```

## Опрос статуса задачи

Опрашивайте GET /v1/videos/jobs/{id} каждые 3–5 секунд с тем же Bearer API-ключом. Доступ есть только у владельца. Логика status прежняя: queued / processing — продолжать; succeeded — читать data[0].url; failed — читать error. progress добавлен для Token. Обрабатывайте отсутствие полей и будущие неизвестные этапы.

phase — этап, не процент и не оценка времени. ready / total — число уникальных готовых / необходимых референсов; для текста и улучшения допустим ноль. label и detail — английские подписи, не условия программы. terminal отражает конечный статус; failed_stage равен null до ошибки. При восстановлении этапы могут пропускаться или повторяться.

submitted=true подтверждает ID генерации, false означает, что отправка не началась, null — отправка началась, исход неизвестен. Не повторяйте запрос автоматически при null или таймауте. reservation_released=true подтверждает освобождение резерва с нулевой стоимостью; false не доказывает списание. updated_at — время обновления записи задачи, не отдельного этапа; job_id — ID NezhaGate.

Отказ по параметрам, балансу или первичной проверке промпта возвращает HTTP-ошибку до создания задачи, без ID для опроса. Первичная проверка не гарантирует окончательного одобрения. Ошибка импорта/проверки референсов останавливает генерацию и возвращает failed и error. При временных сетевых ошибках увеличьте интервал и опрашивайте тот же ID. Промежуточные webhook-события не добавлены.

```http
GET /v1/videos/jobs/img_example
Authorization: Bearer YOUR_API_KEY
```

| progress.phase | |
| --- | --- |
| queued | Ожидание обработки |
| preparing | Подготовка референсов |
| reviewing | Проверка референсов |
| submitting | Отправка запроса |
| provider_queued | Ожидание генерации |
| generating | Генерация видео |
| delivering | Сохранение видео |
| succeeded | Готово |
| material_failed | Референс отклонён или не импортирован |
| submission_failed | Ошибка отправки или исход не подтверждён |
| generation_failed | Ошибка генерации |
| delivery_failed | Ошибка сохранения |
| failed | Ошибка задачи |

```json
{
  "id": "img_example",
  "object": "video.generation.job",
  "status": "processing",
  "created": 1792800000,
  "model": "seedance-2.5-token",
  "progress": {
    "phase": "reviewing",
    "label": "Reviewing references",
    "detail": "References ready: 3 / 5",
    "ready": 3,
    "total": 5,
    "terminal": false,
    "failed_stage": null,
    "submitted": false,
    "reservation_released": false,
    "updated_at": "2026-10-24T05:00:00+00:00",
    "job_id": "img_example"
  }
}
```