Seedance 2.5.
Dentro de tu producto.
Convierte texto, imágenes y archivos de referencia en vídeo con una sola API. Utiliza tus créditos de Seedance 3.0, conserva tu flujo de trabajo e integra la generación con un proceso claro desde la solicitud hasta el resultado.
{
"model": "seedance-2.5",
"mode": "text-to-video",
"prompt": "A paper boat drifting into the morning light",
"duration": 5,
"resolution": "720p",
"aspectRatio": "16:9"
}Tu primer vídeo en unas pocas solicitudes.
Guarda tu clave como SEADANCE_API_KEY en el servidor. Asigna a SEADANCE_REQUEST_KEY un valor único para este vídeo (por ejemplo, con uuidgen) y conserva ese valor para los reintentos. Asegúrate de que tu cuenta tenga suficientes créditos. Este ejemplo reserva 350 créditos para un vídeo de 5 segundos a 720p. Copia el id devuelto para consultar su estado.
export SEADANCE_API_KEY="sd_live_your_key"
# Keep this value for retries; choose a new value for a new video.
export SEADANCE_REQUEST_KEY="${SEADANCE_REQUEST_KEY:-$(uuidgen)}"
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos" \
-H "Authorization: Bearer $SEADANCE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SEADANCE_REQUEST_KEY" \
--data '{
"model": "seedance-2.5",
"mode": "text-to-video",
"prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
"aspectRatio": "16:9",
"resolution": "720p",
"duration": 5
}'Esta documentación nunca inicia una generación automáticamente. Enviar una solicitud de creación consume tus créditos.
Autentícate desde tu servidor.
Cada llamada a la API utiliza Authorization: Bearer sd_live_…. No incluyas las claves en navegadores, aplicaciones móviles, repositorios públicos ni código del cliente. La clave completa se muestra una sola vez; puedes revocarla desde el panel de la API.
https://seedance3ai.dev/api/v1Permisos predeterminados de las claves: videos:write para subidas y generación; videos:read para modelos y estado de las tareas; account:read para créditos. El acceso y los límites de la cuenta se aplican a todas las claves.
Crea una tarea de vídeo.
/api/v1/videosUtiliza Content-Type: application/json y un Idempotency-Key único para cada generación prevista. El servidor puede tardar en obtener la aceptación de la tarea por parte del proveedor. Si la conexión agota el tiempo de espera, repite el mismo cuerpo con la misma clave. HTTP 202 significa que la tarea se ha aceptado, no que haya terminado. Idempotency-Key admite entre 1 y 128 caracteres ASCII imprimibles sin espacios.
| Parámetro | Valores y requisitos |
|---|---|
modelstring | seedance-2.5Obligatorio. Actualmente, la API admite Seedance 2.5. |
modestring | text-to-video | image-to-video | reference-to-videoObligatorio. Elige el modo de entrada; los campos multimedia deben corresponder a ese modo. |
promptstring | 3–30.000 caracteresObligatorio. Describe la escena, el movimiento y el audio. |
durationinteger | 4, 5, 6, 8, 10, 12, 15, 20, 25, 29, 30Obligatorio, en segundos. La edición utiliza la duración del vídeo original, redondeada hacia arriba para la facturación. |
resolutionstring | 480p | 720p | 1080pObligatorio. Determina la tarifa en créditos. |
aspectRatiostring | 1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 21:9Obligatorio. La generación a partir de una imagen utiliza la relación de aspecto del primer fotograma. |
firstFrameUrl / lastFrameUrlstring | publicObjectUrl del archivo subidoLa generación a partir de una imagen requiere un primer fotograma. El último fotograma es opcional. |
referenceImageUrlsstring[] | Hasta 30 imágenesPara reference-to-video. Sube primero cada archivo a tu cuenta. |
referenceVideoUrls / referenceAudioUrlsstring[] | Hasta 10 vídeos / 10 archivos de audioCada grupo puede sumar como máximo 30 segundos. El servidor valida los archivos antes de generar el vídeo. |
referenceTaskTypestring | reference | edit | extendOpcional; el valor predeterminado es reference. edit y extend requieren reference-to-video con exactamente un vídeo original. |
generateAudioboolean | trueOpcional. Seedance 2.5 incluye audio nativo; se rechaza false. |
batchCountinteger | 1Opcional. Un vídeo por solicitud. |
Mediante estos campos, Seedance 2.5 admite texto, fotogramas iniciales y finales, referencias multimodales, edición y extensión de vídeo. GET /models es la referencia actualizada de las funciones y los precios disponibles.
Ejemplo de solicitud de imagen a vídeo
{
"model": "seedance-2.5",
"mode": "image-to-video",
"prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
"aspectRatio": "16:9",
"resolution": "720p",
"duration": 5,
"firstFrameUrl": "YOUR_UPLOADED_PUBLIC_OBJECT_URL"
}Ejemplo de solicitud con referencias
{
"model": "seedance-2.5",
"mode": "reference-to-video",
"prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
"aspectRatio": "16:9",
"resolution": "720p",
"duration": 5,
"referenceImageUrls": [
"YOUR_UPLOADED_IMAGE_URL"
],
"referenceVideoUrls": [
"YOUR_UPLOADED_VIDEO_URL"
]
}Sube una vez. Utiliza la URL como referencia.
Envía POST /uploads con fileName, contentType, size (en bytes) y kind (image, video o audio). Antes de expiresAt, envía los bytes originales del archivo a uploadUrl mediante PUT y las cabeceras requiredHeaders. Tras completar la subida, utiliza publicObjectUrl en la solicitud de generación. Las referencias deben pertenecer a la misma cuenta; no se aceptan URL externas arbitrarias ni entradas en base64.
// Node.js 20+ · upload once, then use publicObjectUrl
import { readFile } from "node:fs/promises";
const bytes = await readFile("./first-frame.jpg");
const signed = await fetch("https://seedance3ai.dev/api/v1/uploads", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SEADANCE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
fileName: "first-frame.jpg", contentType: "image/jpeg",
size: bytes.length, kind: "image",
}),
});
const upload = await signed.json();
if (!signed.ok) throw new Error(JSON.stringify(upload));
const stored = await fetch(upload.uploadUrl, {
method: "PUT", headers: upload.requiredHeaders, body: bytes,
});
if (!stored.ok) throw new Error("Upload failed");
console.log(upload.publicObjectUrl);
// Use this URL as firstFrameUrl in an image-to-video request.El tamaño y el tipo de contenido declarados deben coincidir con el archivo subido. Las URL de subida caducan; solicita otra si es necesario. La duración, las dimensiones y el formato de los archivos se validan antes de la generación.
Sigue la tarea hasta que termine.
GET /videos/:id devuelve la tarea actual. Consulta cada 5–10 segundos, detente al recibir succeeded o failed y respeta la espera indicada por Retry-After cuando esté presente. Las consultas se limitan a las tareas de API de tu cuenta. La integración actual utiliza consultas periódicas.
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos/TASK_ID" \
-H "Authorization: Bearer $SEADANCE_API_KEY"queuedprocessingsucceeded / failed{
"id": "a1b2c3d4-1234-4567-8901-abcdef123456",
"status": "succeeded",
"credits_reserved": 350,
"created_at": "2026-10-27T00:00:00.000Z",
"output": {
"url": "https://your-result-host.example/video.mp4"
},
"error": null,
"refund_status": "not_applicable"
}output es null hasta que el vídeo está disponible. Una tarea fallida incluye un error; consulta refund_status para conocer el estado del reembolso de créditos. Descarga cuanto antes los resultados completados. Eliminar un vídeo no restablece su solicitud: repetir ese Idempotency-Key devuelve 410 video_deleted y no puede volver a crearlo.
Conoce el coste en créditos antes de integrar.
La generación mediante la API utiliza los mismos créditos de la cuenta y las mismas tarifas de Seedance 2.5 que el sitio web. Los créditos se reservan al aceptar una solicitud. Si la generación falla, esos créditos se devuelven al saldo de créditos de compra única. Un error de validación anterior a la creación de la tarea no genera un vídeo facturable.
480p
30créditos / segundo de salida
+ 20 créditos / segundo de vídeo de referencia
720p
70créditos / segundo de salida
+ 50 créditos / segundo de vídeo de referencia
1080p
160créditos / segundo de salida
+ 90 créditos / segundo de vídeo de referencia
Coste = duración de salida × tarifa de salida, más la duración de cualquier vídeo de referencia × tarifa de referencia. La duración de los vídeos de referencia se mide en el servidor; el total se redondea hacia abajo a segundos enteros para la facturación. El audio nativo está incluido. Por ejemplo, 5 segundos a 720p cuestan 350 créditos, o 600 créditos con un vídeo de referencia de 5 segundos.
curl --fail-with-body "https://seedance3ai.dev/api/v1/models" \
-H "Authorization: Bearer $SEADANCE_API_KEY"
curl --fail-with-body "https://seedance3ai.dev/api/v1/credits" \
-H "Authorization: Bearer $SEADANCE_API_KEY"Consulta los créditos disponibles, el historial de solicitudes y los límites de la cuenta en el panel de la API. Añade créditos desde la página de precios del sitio web con la misma cuenta; no existe un saldo independiente ni un endpoint de recarga de la API. No necesitas una suscripción activa si dispones de créditos suficientes. La caducidad de las suscripciones y las reglas de los créditos de compra única son las mismas que en el sitio web.
Añadir créditos no aumenta los límites de frecuencia, concurrencia o uso diario de la API ni reactiva una cuenta desactivada. El límite diario cuenta todos los créditos reservados, incluidos los de generaciones fallidas reembolsadas, y se restablece a las 00:00 UTC. Contacta con soporte si tu aplicación necesita límites más altos.
Ver planes y añadir créditosReintenta de forma segura. Evita cargos duplicados.
Utiliza un Idempotency-Key por cada vídeo previsto y consérvalo junto con el cuerpo exacto de la solicitud hasta conocer el resultado. Las claves nuevas representan generaciones nuevas. Las respuestas de error contienen error.code, error.message y request_id; incluye el ID de la solicitud al contactar con soporte.
| HTTP | Significado | Siguiente paso |
|---|---|---|
| 400 | Solicitud no válida | Revisa el mensaje de error, los campos y las restricciones de los archivos antes de reintentar. |
| 401 | Clave de API no válida | Comprueba la cabecera Bearer. Las claves revocadas no se pueden volver a utilizar. |
| 402 | Créditos insuficientes | Añade créditos a la misma cuenta de Seedance 3.0. |
| 403 | Acceso denegado | El acceso a la API está desactivado o la clave no tiene el permiso necesario. |
| 404 | Vídeo no encontrado | Utiliza el ID de una tarea creada por tu cuenta a través de esta API. |
| 409 | Conflicto de solicitud | Si recibes request_in_progress, espera y reintenta con el mismo cuerpo y la misma clave. idempotency_conflict indica que la clave se reutilizó con un cuerpo diferente. request_expired o request_previously_failed confirma que no se envió ningún vídeo: corrige el problema indicado y utiliza una clave nueva. |
| 410 | Vídeo eliminado | video_deleted indica que se procesó la solicitud original, pero se eliminó su vídeo. Su clave no puede volver a generar el vídeo. Deja de reintentar; utiliza una clave nueva solo si quieres iniciar deliberadamente una nueva generación facturable. |
| 429 | Límite de la cuenta | Respeta Retry-After. Los límites de frecuencia, tareas simultáneas y créditos diarios se comparten entre todas las claves. Los presupuestos diarios se restablecen a las 00:00 UTC. |
| 500 / 503 | Error temporal del servicio | Conserva el Idempotency-Key. Reintenta el mismo envío; no crees una clave nueva cuando el resultado sea incierto. |
Si el envío devuelve request_in_progress, espera y repite la misma solicitud. No cambies nunca a una clave nueva solo para evitar un tiempo de espera agotado. Si el reembolso de una tarea fallida sigue pendiente, conserva su ID y contacta con soporte.
¿Listo para conectar tu aplicación?
Crea una clave y desarrolla tu primera integración.