# Seedance 2.5 (https://wanapi.app/es/docs/seedance-2-5)





Seedance 2.5 admite texto, primer y último fotograma y referencias de imagen, vídeo y audio, con salida a 480p, 720p, 1080p. Genera vídeos de hasta 30 segundos por solicitud. [Detalles del modelo y área de pruebas](/es/models/seedance-2-5).

## Conecta con Wan API [#connect-to-wan-api]

Usa `https://api.wanapi.app` como URL base de la API. Crea una clave con la familia de modelos **Seedance** en [los ajustes de claves API](/es/settings/apikeys) y envíala como `Authorization: Bearer YOUR_API_KEY`. Guarda las claves en tu servidor. El área de pruebas usa tu sesión del sitio web y cobra del mismo saldo de cuenta; no requiere pegar una clave en el navegador.

El acceso requiere una cuenta habilitada con saldo suficiente. `GET /v1/models` enumera los modelos disponibles para tu clave. Los modelos Seedance usan `POST /v1/videos`; selecciona el modelo en el cuerpo JSON.

| Ajuste          | Seedance 2.5                                                                      |
| --------------- | --------------------------------------------------------------------------------- |
| ID del modelo   | `bytedance/seedance-2.5`                                                          |
| `resolution`    | `480p`, `720p`, `1080p`; por defecto: `720p`.                                     |
| `duration`      | 4–30 segundos de salida, o `-1` para automática; por defecto: `-1`.               |
| `aspectRatio`   | `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`; por defecto: `adaptive`. |
| `generateAudio` | `true` por defecto. `false` no reduce la tarifa por token.                        |
| Salida          | Un vídeo por solicitud, a 24 fps.                                                 |

Los [campos de la solicitud](#request-fields) describen los 13 campos de nivel superior. Usa los nombres de campo indicados aquí, incluidos `aspectRatio` y `generateAudio`.

## Envía una tarea de Seedance 2.5 [#submit-a-seedance-2-5-task]

Esta solicitud de texto a vídeo pide una salida de cuatro segundos a 720p. Asigna tu clave de Seedance a `WAN_API_KEY` en el servidor. Envía la solicitud una sola vez y guarda el `id` devuelto.

```bash
curl https://api.wanapi.app/v1/videos \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "720p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true
}'
```

## Consulta una tarea de Seedance 2.5 [#query-a-seedance-2-5-task]

Guarda el `id` devuelto como `TASK_ID` y consulta con la misma clave. El envío devuelve un comprobante de tarea; el vídeo está disponible al completarse. Empieza consultando cada cinco segundos; consulta [los estados de tarea y las descargas](#poll-and-download-the-video).

```bash
curl "https://api.wanapi.app/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $WAN_API_KEY"
```

## Precios de Seedance 2.5 [#seedance-2-5-pricing]

Las tarifas están en USD por un millón de tokens de vídeo. Los tokens de vídeo de entrada y salida determinan el coste final. La resolución, la duración y los vídeos de referencia afectan al consumo; usa la tarifa correspondiente a solicitudes con o sin vídeo de referencia. El audio no tiene un nivel de precio independiente.

<SeedanceModelPricing model="findSeedanceModel('seedance-2-5')" />

[Consulta los precios y las estimaciones de Seedance 2.5](/es/models/seedance-2-5#pricing). Revisa la estimación en el [área de pruebas](/es/models/seedance-2-5#playground) antes de enviar la solicitud.

## Campos de la solicitud [#request-fields]

Envía un objeto JSON. `model` es obligatorio, junto con un prompt no vacío o al menos una entrada multimedia. Los demás campos son opcionales. Se rechazan los campos desconocidos.

| Campo             | Tipo             | Contrato                                                                                                                                                                                                                               |
| ----------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | cadena           | Obligatorio: `bytedance/seedance-2.5`.                                                                                                                                                                                                 |
| `prompt`          | cadena           | Instrucciones de texto; hasta 20.000 caracteres en este servicio. Se requiere un prompt o una entrada multimedia.                                                                                                                      |
| `image`           | URL u objeto URL | URL de imagen del primer fotograma, o un objeto con `type: "url"`, `url` y `mediaType` opcional. Usa `image` o `frameImages`, no ambos.                                                                                                |
| `frameImages`     | lista            | Un `first_frame` y un `last_frame` opcional. Cada entrada tiene `frameType` e `image`; consulta el ejemplo de fotogramas de abajo.                                                                                                     |
| `inputReferences` | lista            | Hasta 30 imágenes y 10 vídeos. Cada entrada tiene `type: "url"`, `url` y `mediaType`. También se acepta la forma de URL con `data`/`mediaType`.                                                                                        |
| `aspectRatio`     | cadena           | `adaptive` (por defecto), `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`. Los modos de primer fotograma requieren adaptive.                                                                                                               |
| `resolution`      | cadena           | `480p`, `720p`, `1080p`. Por defecto: `720p`. También acepta `854x480`, `1280x720`, `1920x1080` como niveles de resolución; usa `aspectRatio` para seleccionar el formato.                                                             |
| `duration`        | entero           | 4–30 segundos de salida, o `-1` para automática. Por defecto: `-1`.                                                                                                                                                                    |
| `fps`             | entero           | Fijo en `24`; omite el campo o envía `24`.                                                                                                                                                                                             |
| `seed`            | entero           | Opcional; de `-1` a `2147483647`. Sin garantía de repetibilidad. No especifiques también `providerOptions.bytedance.seed`.                                                                                                             |
| `generateAudio`   | booleano         | Genera audio. Por defecto: `true`; desactivarlo no cambia la tarifa por token.                                                                                                                                                         |
| `n`               | entero           | Fijo en `1`; un vídeo por solicitud.                                                                                                                                                                                                   |
| `providerOptions` | objeto           | Objeto `bytedance` opcional: `referenceAudio` (hasta 10 URL HTTP(S)), `seed` (mismos límites que `seed` en el nivel superior), `draft` (booleano; por defecto `false`; `true` requiere `480p`). Se rechazan las opciones desconocidas. |

### Combinaciones de entrada y límites multimedia [#input-combinations-and-media-limits]

* Usa `image` para un primer fotograma o `frameImages` para un primer fotograma y un último fotograma opcional. Se rechazan un último fotograma aislado y los tipos de fotograma duplicados.

* Los fotogramas no se pueden combinar con `inputReferences` ni con `providerOptions.bytedance.referenceAudio`.

* El modo de referencias acepta hasta 30 imágenes, 10 vídeos y 10 clips de audio, con un máximo de 50 referencias en total.

* Las entradas de fotogramas requieren `aspectRatio: "adaptive"`. El audio de referencia puede usarse sin imagen ni vídeo.

* Las entradas multimedia deben ser URL HTTP(S) públicas. No se aceptan cargas de bytes ni URL que contengan credenciales.

* Imágenes: JPEG, PNG, WebP, BMP, TIFF o GIF, HEIC o HEIF; menos de 30 MB; cada lado de 300–6000 píxeles; relación de aspecto de 0.4–2.5.

* Vídeos: MP4 o MOV; como máximo 200 MB por archivo; cada clip de 2–30 segundos y como máximo 30 segundos en conjunto; 300–6000 píxeles por lado, relación de aspecto de 0.4–2.5, 24–60 fps.

* Audio: MP3 o WAV; como máximo 15 MB por archivo; cada clip de 2–30 segundos y como máximo 30 segundos en conjunto.

* El tamaño, la codificación y la duración de los archivos multimedia remotos se comprueban durante el procesamiento; validar solo la URL no garantiza que el archivo sea utilizable.

* Este endpoint no ofrece renderizado final a partir de un borrador de una tarea anterior ni opciones nativas de tarea arbitrarias.

## Ejemplos de fotogramas y referencias [#frame-and-reference-examples]

Envía estos cuerpos al mismo endpoint `POST /v1/videos`. Sustituye cada URL de `example.com` por una URL propia de archivo multimedia directamente accesible antes de enviar la solicitud. Mantén las URL de entrada disponibles hasta que termine la tarea.

### Primer y último fotograma [#first-and-last-frames]

Para un único primer fotograma, usa `image: "https://example.com/first-frame.jpg"` y omite `frameImages`. Para definir ambos extremos del clip, usa:

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "The camera slowly moves from the opening scene to the closing scene.",
  "frameImages": [
    {
      "frameType": "first_frame",
      "image": "https://example.com/first-frame.jpg"
    },
    {
      "frameType": "last_frame",
      "image": "https://example.com/last-frame.jpg"
    }
  ],
  "aspectRatio": "adaptive",
  "resolution": "720p",
  "duration": 4
}
```

### Referencias de imagen, vídeo y audio [#image-video-and-audio-references]

Coloca las entradas de imagen y vídeo en `inputReferences`, con un tipo MIME explícito. Coloca las URL de audio en `providerOptions.bytedance.referenceAudio`. No añadas entradas de fotogramas a esta solicitud.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "Use the character from the image and the camera movement from the video.",
  "inputReferences": [
    {
      "type": "url",
      "url": "https://example.com/character.jpg",
      "mediaType": "image/jpeg"
    },
    {
      "type": "url",
      "url": "https://example.com/motion.mp4",
      "mediaType": "video/mp4"
    }
  ],
  "providerOptions": {
    "bytedance": {
      "referenceAudio": [
        "https://example.com/sound.wav"
      ]
    }
  },
  "resolution": "720p",
  "duration": 4
}
```

### Vista previa de borrador [#draft-preview]

Usa `providerOptions.bytedance.draft: true` con `resolution: "480p"` para crear un borrador. El borrador usa la tarifa normal por token a 480p. Este endpoint no acepta una tarea de borrador anterior como entrada de un renderizado final; una nueva generación es una solicitud independiente.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "480p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true,
  "providerOptions": {
    "bytedance": {
      "draft": true
    }
  }
}
```

## Consulta el estado y descarga el vídeo [#poll-and-download-the-video]

Una tarea aceptada devuelve un objeto como este. Los ID y las marcas de tiempo del ejemplo son ilustrativos:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "queued",
  "progress": 0,
  "created_at": 1792022400
}
```

Consulta `GET /v1/videos/{task_id}` con tu clave API. La consulta devuelve el mismo ID público de tarea y el mismo modelo. Usa `status` para decidir cuándo dejar de consultar; `progress` no estima el tiempo restante.

| Estado        | Significado                  | Siguiente paso                      |
| ------------- | ---------------------------- | ----------------------------------- |
| `queued`      | La tarea se ha aceptado.     | Sigue consultando.                  |
| `in_progress` | La generación está en curso. | Sigue consultando.                  |
| `completed`   | El vídeo está listo.         | Lee `videos[0].url` y descárgalo.   |
| `failed`      | La generación ha fallado.    | Deja de consultar y revisa `error`. |

Una consulta completada incluye `videos`, una lista de objetos con `url` y `mediaType`. Las marcas de tiempo usan segundos Unix; `completed_at` aparece cuando se registra la finalización.

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "completed",
  "progress": 100,
  "created_at": 1792022400,
  "completed_at": 1792022460,
  "videos": [
    {
      "url": "/v1/tasks/task_EXAMPLE/artifacts/video/content",
      "mediaType": "video/mp4"
    }
  ]
}
```

Si la URL devuelta es una ruta relativa, resuélvela con respecto a `https://api.wanapi.app` y autentícate con tu clave API. Para el ejemplo anterior:

```bash
curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -o video.mp4
```

Si se devuelve una URL HTTPS firmada de un archivo multimedia, úsala directamente sin reenviar tu clave API a ese host. Las URL de resultados pueden caducar. Guarda en tu propio almacenamiento los vídeos que quieras conservar. Consultar el estado y descargar un resultado existente no crea otra generación.

Una tarea fallida incluye un objeto `error` con `code` y `message`, por ejemplo:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.5",
  "status": "failed",
  "error": {
    "code": "generation_failed",
    "message": "Video generation failed"
  }
}
```

## Facturación y gestión de errores [#billing-and-failure-handling]

El cargo final depende del consumo real de tokens de vídeo y de la tarifa actual del modelo. La estimación del área de pruebas es una estimación máxima, no un presupuesto fijo. Los clips más largos y las resoluciones de salida mayores pueden aumentar el consumo de tokens. Las solicitudes fallidas no se cobran.

* **Parámetros no válidos:** corrige los campos o la combinación de entradas antes de enviar de nuevo. Comprueba los formatos y límites multimedia, además de la sintaxis de las URL.
* **Autenticación o acceso al modelo:** usa una clave Seedance válida y habilitada para el modelo solicitado.
* **Saldo insuficiente:** añade fondos antes de una nueva solicitud de pago. Un límite de clave no añade crédito a la cuenta.
* **Fallo temporal al consultar el estado:** reintenta el GET con intervalos crecientes y un periodo máximo de espera. Una consulta fallida no significa que la generación haya fallado.
* **Tiempo de espera agotado al enviar o ID de tarea ausente:** el resultado puede ser desconocido. No repitas el POST automáticamente; podría crear una segunda tarea de pago.
* **Fallo de descarga:** reintenta la descarga del resultado existente antes de iniciar una nueva generación.

Conserva el ID de tarea y contacta con [soporte](/es/contact) si es necesario investigar un envío incierto.

[Descarga el esquema OpenAPI de Seedance 2.5](https://wanapi.app/models/seedance-2-5/openapi.json).
