# Seedance 2.0 Mini — /videos/generations

Generación de vídeo con Seedance 2.0 Mini (asíncrona): el nivel de entrada, el más barato por segundo de la plataforma; la duración es cualquier entero de 5 a 15 segundos, resolución 480P / 720P (por defecto 720P), cinco relaciones de aspecto, y audio activa o desactiva la banda sonora (por defecto true); incluye image para imagen a vídeo. Devuelve un id de trabajo (HTTP 202); consulta GET /v1/videos/jobs/{id}. Se factura por segundo (incluidos los segundos de los vídeos de referencia) y se reembolsa íntegramente si falla.

**Endpoint:** `POST https://kovapi.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í | ID del modelo; aquí seedance-2.0-mini. |
| `prompt` | string | Sí | Prompt de texto que describe el vídeo, la cámara y el movimiento. Máximo 5000 bytes (UTF-8; un carácter chino cuenta como 3). Con varias imágenes de referencia puedes mencionarlas como @Image1 / @Image2 en el prompt, por ejemplo «el personaje de @Image1 en la escena de @Image2»; sin esas marcas, el modelo decide por su cuenta. |
| `duration` | integer | No | Duración en segundos, cualquier entero de 5 a 15 (por defecto 5); alias seconds. Se factura por segundo. |
| `resolution` | string | No | Resolución: 480P / 720P (por defecto 720P; cada nivel tiene su propia tarifa, consulta la página del modelo). |
| `size` | string | No | Relación de aspecto: 16:9 / 9:16 / 1:1 / 4:3 / 3:4 (por defecto 16:9); alias aspect_ratio. |
| `audio` | boolean | No | Cada vídeo sale con sonido (diálogo, efectos y música generados a partir del prompt); no se puede desactivar y false no tiene efecto. |
| `image` | string | No | Una imagen de referencia (URL pública, data: URI o base64) que llega al modelo como referencia de los personajes, los objetos, la escena o el estilo; para varias usa images. Esta línea no controla el primer fotograma, así que la imagen no tiene por qué abrir el clip. Sin ninguna referencia es texto a vídeo. |
| `images` | array | No | Varias imágenes de referencia. Este modelo admite hasta 9. Cada elemento puede ser una URL pública, un data: URI o base64. Si superas el límite se rechaza en lugar de recortar. Alias reference_images. Cada imagen hasta 16 MB, jpg / png / webp / gif; menciónalas en orden como @Image1, @Image2, ... en el prompt. |
| `image_role` | string | No | Opcional. Las imágenes de referencia se usan siempre como referencia (personajes, escena, estilo) y se mencionan como @Image1... en el prompt; el modelo no controla el primer ni el último fotograma. |
| `audio_reference` | string / array | No | Enlaces http(s) públicos de audio de referencia. Hasta 3, y deben acompañar a una imagen o un vídeo de referencia. Alias audio_references (no envíes ambos a la vez). También admite base64 (data:audio/mpeg;base64,...), mp3 / wav / m4a; menciónalo como @Audio1 en el prompt. |
| `video_references` | array | No | Vídeos de referencia, hasta 3. Cada uno puede ser una URL http(s) pública o un archivo local enviado en línea como base64 (data:video/mp4;base64,..., mp4 / mov, hasta 50 MB cada uno); lo alojamos nosotros y pasamos el enlace al proveedor. Se puede combinar con imágenes de referencia en la misma solicitud (por ejemplo, fotos para el aspecto de los personajes y un vídeo para el movimiento y la cámara); menciónalos en el prompt como @Image1 / @Video1. Cada vídeo dura como máximo 30 s, 15 s en total; las referencias que alojamos se guardan 7 días. |

## Ejemplo de petición
```bash
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://kovapi.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "seedance-2.0-mini", "prompt": "a cat surfing a wave at sunset", "duration": 5, "resolution": "720P", "size": "16:9"}'
# with references: add "images": ["https://example.com/a.png"], "video_references": ["https://example.com/move.mp4"], "audio_reference": ["https://example.com/bgm.mp3"] and name them @Image1 / @Video1 / @Audio1 in the prompt
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://kovapi.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
```

## Respuesta
```json
{
  "id": "img_3f9a...c2",
  "object": "video.generation.job",
  "status": "queued",
  "model": "seedance-2.0-mini"
}
```

## 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. Este modelo siempre añade sonido; no se puede desactivar y `audio: false` no tiene efecto. El audio de referencia que subas también se revisa, y la música con derechos de autor usada como referencia puede ser rechazada. 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`