# Seedance 2.5 · Token Draft — /videos/generations

Comprueba la composición y el movimiento con un borrador de 480p y mejora el borrador terminado. Se factura por los tokens de vídeo reales, incluidos los vídeos de referencia. Se devuelve el saldo reservado no utilizado. El borrador y la mejora se cobran por separado. Se aplica revisión de contenido. No hay modo sin moderación. Aproximadamente el 95% de las tarifas públicas internacionales de BytePlus en USD, redondeado a un decimal. MP4 para uso general; MOV puede requerir descarga y reproductor compatible.

**Endpoint:** `POST https://nezhagate.com/v1/videos/generations`

## Autenticación
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## Cuerpo de la petición
| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `model` | string | Sí | seedance-2.5-token-draft |
| `prompt` | string | No | Prompt de texto. Use prompt O content. Obligatorio salvo para mejorar un borrador. |
| `content` | array | No | Bloques text/image_url/video_url/audio_url. Referencias HTTPS: hasta 30 imágenes, 10 vídeos y 10 audio. No se aceptan IDs de recursos del proveedor. |
| `duration` | integer | No | 4–30 segundos; por defecto 5. Omítalo en las mejoras. |
| `resolution` | string | No | 480p |
| `ratio` | string | No | adaptive / 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
| `output_format` | string | No | mp4 / mov. MP4 para uso general; MOV puede requerir descarga y reproductor compatible. |

## Ejemplo de petición
```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-draft","prompt":"A sunrise over the sea","duration":5,"resolution":"480p"}'
# 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'
```

## Respuesta
```json
{"id":"img_example","object":"video.generation.job","status":"queued","model":"seedance-2.5-token-draft"}
```

## Requisitos de contenido

Todos los trabajos de Seedance pasan por una revisión de contenido que cubre el prompt, los archivos de referencia y el vídeo final, tanto la imagen como el sonido. Un trabajo que no la supera termina con `content_policy` y no se cobra.

### Cuándo se revisa

Al enviar se revisan el prompt y las referencias; cuando el vídeo está generado se revisan de nuevo la imagen y el sonido. Por eso un rechazo puede llegar segundos después de enviar o solo al terminar el renderizado (puede tardar más de media hora). Un trabajo que termina con `status` `failed` y `error.code` `content_policy` no superó la revisión; con un webhook recibes el evento `video.failed`.

### Sin cargo

Un trabajo rechazado no cuesta nada: el importe retenido al enviarlo se devuelve íntegro cuando termina, y el registro de llamadas lo muestra como no cobrado.

### Sonido

El sonido (diálogos, narración, canto y efectos) lo genera el modelo a partir de tu prompt y se revisa junto con la imagen: los diálogos, la narración y las letras del prompt se locutan o se cantan. Para un vídeo sin voces, no pongas diálogos ni letras en el prompt. Cuando el sonido no supera la revisión, `error.param` es `audio` y el mensaje indica si fue el sonido generado o tu audio de referencia.

### Contenido que más se rechaza

- Contenido sexual, desnudos o insinuación sexual, incluidas imágenes generadas o compuestas con IA
- Sangre, crueldad, autolesiones y heridas violentas como disparos o hemorragias
- Armas de fuego, explosivos y drogas
- Cualquier contenido sexualizado con menores; también se rechazan menores con alcohol, tabaco, drogas o en situaciones de peligro
- Políticos, famosos, deportistas, empresarios y otras figuras públicas, por su aspecto o su voz, incluidos los parecidos
- Personajes y propiedad intelectual protegidos, como personajes de Disney o Marvel
- Contenido de odio o discriminatorio, y noticias falsas

### Guiones largos

Una sola toma que incumpla las normas hace fallar el vídeo entero, y donde más ocurre es en los guiones largos: un tiroteo o un primer plano de sangre en una escena de acción, o menores bebiendo o fumando, hunden todo el vídeo. Lee el guion completo antes de enviarlo y elimina o reescribe esas tomas.

### Personas reales

Para usar la foto de una persona real como referencia necesitas el derecho a usar su imagen.

### Tras un rechazo

Reenviar lo mismo vuelve a ser rechazado. Localiza la parte que probablemente falla, reescribe el prompt o cambia la referencia y vuelve a enviarlo.

Código de error: `content_policy` · `status: failed`

## Borrador → 1080p

Solo se puede mejorar un borrador Token completado de tu cuenta. No se admiten tareas por segundo, vídeos estándar de 480p ni ID externos.

Genera un borrador de 480p y consulta hasta succeeded. Envía su ID de NezhaGate como draft_task_id al modelo Token estándar para generar el vídeo final de 1080p a partir de la tarea original. No amplía cualquier MP4. No repitas prompt, content, duration, ratio, seed ni generate_audio. Borrador y vídeo final se cobran por separado.

`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` — El enlace original lo devuelve el servicio de vídeo y puede caducar. Guárdalo pronto o descarga nuestra copia original alojada.

## Preparación de referencias

API: sube los archivos a un almacenamiento HTTPS público y envía image_url, video_url o audio_url en content. Mantén los enlaces accesibles durante la tarea. NezhaGate importa las referencias a la biblioteca y espera a que todas estén Active antes de generar, también para referencias de personas reales. Subido no significa preparado. No necesitas llamar a otra API de biblioteca.

Playground: archivos → progreso de subida → preparación → listo → confirmar el saldo reservado y generar. API: consulta GET /v1/videos/jobs/{id} durante ambas etapas. Un timeout no implica fallo; consulta antes de reenviar. Corrige las referencias fallidas antes de crear otra solicitud.

Hasta 30 imágenes, 10 vídeos y 10 audios; 50 en total. Vídeos de referencia: 30s combinados; audios: 30s combinados. Subida web: <30 MB/imagen, 50 MB/vídeo, 15 MB/audio. El JSON de la API acepta URL HTTPS, no rutas locales ni bytes. Imágenes originales de menos de 30 MB; lados 301–5999 px, proporción 0.4–2.5. Los retratos requieren preparación de materiales. MP4 para uso general; MOV puede requerir descarga y reproductor compatible.

```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"
}

```

## Consulta del estado

Consulta GET /v1/videos/jobs/{id} cada 3–5 segundos con la misma clave Bearer. Solo la cuenta propietaria puede consultar. Conserva status: queued / processing siguen consultando; succeeded lee data[0].url; failed lee error. progress se añade para Token; admite campos ausentes y fases futuras.

phase es una etapa, no un porcentaje ni una estimación. ready / total cuentan referencias únicas listas / necesarias; pueden ser cero para texto y mejoras. label y detail son textos en inglés, no condiciones de programa. terminal refleja el estado final; failed_stage es null salvo fallo. Las etapas pueden omitirse o repetirse al recuperar.

submitted=true confirma un ID de generación; false indica que no se inició el envío; null indica resultado de envío desconocido. No reenvíes automáticamente por null o timeout. reservation_released=true confirma liberación registrada con coste cero; false no demuestra un cobro. updated_at corresponde al registro del trabajo, no al cambio de fase; job_id es el ID de NezhaGate.

El rechazo de parámetros, saldo o texto inicial devuelve un error HTTP antes de crear el trabajo, sin ID para consultar. La revisión inicial no garantiza aprobación final. Un fallo de importación/revisión detiene la generación y devuelve failed y error. Ante errores temporales, espera y consulta el mismo ID. No se añaden eventos webhook intermedios.

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

| progress.phase | |
| --- | --- |
| queued | En espera de procesamiento |
| preparing | Preparando referencias |
| reviewing | Revisando referencias |
| submitting | Enviando generación |
| provider_queued | En espera de generación |
| generating | Generando vídeo |
| delivering | Guardando vídeo |
| succeeded | Completado |
| material_failed | Referencia rechazada o importación fallida |
| submission_failed | Envío fallido o sin confirmar |
| generation_failed | Generación fallida |
| delivery_failed | Error al guardar |
| failed | Tarea fallida |

```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"
  }
}
```