# Seedance 2.5 · Token — /videos/generations

Generación de vídeo asíncrona facturada por los tokens de vídeo reales. El borrador y la mejora son trabajos de pago separados. Se incluyen los tokens de los vídeos de referencia. Consulte el ID de trabajo devuelto; no vuelva a enviarlo tras un tiempo de espera del cliente. 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 |
| `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 / 720p (por defecto) / 1080p. Los borradores requieren 480p. Las mejoras de borradores solo admiten 1080p (por defecto). |
| `ratio` | string | No | adaptive / 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
| `draft` | boolean | No | true crea un borrador 480p con facturación independiente. |
| `draft_task_id` | string | No | ID del trabajo de un borrador Token completado en su cuenta. Para mejorarlo, envíe solo model, draft_task_id, resolution y, opcionalmente, watermark/callback_url. Las mejoras de borradores solo admiten 1080p (por defecto). 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. |
| `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","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'
```

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

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