
Seedance 2.5 API: Guía para tu primer vídeo
Usa la API de Seedance 2.5 con una clave, cURL y consultas de estado en Python. Aprende los modos de entrada, el encadenado de fotogramas y los costos.
Para llamar a la API Seedance 2.5 en reAPI, crea una clave de API, envía una solicitud a /api/v1/videos/generations con model: "doubao-seedance-2.5-face", luego sondea el id devuelto. La tarea completada contiene una URL de vídeo. Usas el mismo id de modelo para solicitudes de texto, imagen, primer/último fotograma y referencias multimodales.[1]
Comienza con una solicitud de texto de cuatro segundos para que no haya archivos subidos que diagnosticar. A la tarifa del 12 de septiembre de $0,118589 por segundo para 480p sin vídeo de referencia, esa solicitud cuesta 475 créditos, o $0,475 después del redondeo hacia arriba de créditos. La página del modelo Seedance 2.5 tiene la tabla de tarifas en vivo y un área de pruebas para verificar los mismos parámetros.[2]
Resumen
- Crea una clave Bearer en Claves de API, luego envía
model: "doubao-seedance-2.5-face". El slug de páginaseedance-2-5no es el id de modelo de la solicitud.[1] - Envía una vez, guarda la respuesta
id, y sondea/api/v1/tasks/{id}. Un POST exitoso inicia una tarea; no significa que el vídeo esté listo.[1] - Elige
durationde 4–30 segundos yresolutionde480p,720po1080p. Usa una duración fija para una reserva inicial predecible.[1] - Establece
size: "adaptive"para entradas explícitas de primer/último fotograma. La salida sigue la forma del fotograma.[1] - Una solicitud de 10 segundos a 720p sin vídeo de referencia es 2.669 créditos, o $2,669, usando la tarifa del 12 de septiembre. La facturación de vídeo de referencia cuenta más que solo los segundos de salida.[1][2]
Crea una clave de API Seedance 2.5 y prepara una solicitud
Inicia sesión en reAPI, abre Claves de API, y crea una clave para el espacio de trabajo que pagará la generación. Cópiala en una variable de entorno local llamada REAPI_API_KEY. Mantén la clave fuera del JavaScript del navegador, repositorios públicos y capturas de pantalla. Las solicitudes se autentican a través del encabezado Authorization: Bearer ...; el flujo documentado no requiere un encabezado de proyecto separado.[1]
También necesitas créditos suficientes para la reserva inicial de la solicitud. Los créditos promocionales, cuando se ofrecen a una cuenta elegible, son independientes de si un vídeo en particular puede financiarse completamente. Lee la cantidad que se muestra en tu cuenta. Este tutorial asume una cuenta financiada y no promete una generación gratuita.[2]
Mantén la primera carga pequeña. Un aviso, duración fija, relación de aspecto y resolución son suficientes para una solicitud de texto. Añade imágenes o sonido después de que funcione la ruta de envío y sondeo. Eso hace que un primer intento fallido sea más fácil de diagnosticar: no puede ser causado por una URL de referencia inaccesible o un archivo de origen incompatible.
Envía la primera solicitud cURL y guarda su id de tarea
Con REAPI_API_KEY ya configurado en tu shell, envía esta solicitud:
curl --fail-with-body https://reapi.ai/api/v1/videos/generations \
-H "Authorization: Bearer $REAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2.5-face",
"prompt": "A matte cobalt ceramic mug stands on an ivory turntable. One continuous studio shot. Over four seconds the turntable rotates clockwise by about 45 degrees. The camera stays fixed at mug height. Keep the handle, rim and glaze consistent. Soft side light, plain background, no text or logos.",
"duration": 4,
"size": "16:9",
"resolution": "480p",
"generate_audio": false,
"return_last_frame": true
}'Guarda el id de la respuesta antes de hacer cualquier otra cosa. Ese identificador pertenece a esta generación y es el valor que usas para las solicitudes GET posteriores. No lo reemplaces con el id de modelo, una URL de archivo, o un identificador adivinado. La respuesta también incluye un estado de tarea; las URLs de vídeo aparecen cuando la tarea se completa.[1]
La solicitud de ejemplo pide una imagen de último fotograma además del vídeo. Puedes ignorar esa imagen para un clip independiente, o usarla más tarde al encadenar tomas. El mismo aviso y parámetros se incluyen en nuestra biblioteca de avisos probados, donde puedes inspeccionar la toma generada en lugar de tratar el texto como una garantía de calidad.
Envía y sondea una tarea de API Seedance 2.5 en Python
El ejemplo de Python a continuación es una alternativa al ejemplo de cURL: crea una nueva tarea de vídeo y sondea esa tarea. Elige un método de envío para tu primer test. Ejecutar ambos ejemplos crea dos generaciones pagadas.
El script espera hasta 30 minutos localmente. Ese tiempo de espera es una política de cliente de ejemplo, no un tiempo de generación prometido. Reporta un fallo HTTP en lugar de iniciar silenciosamente otro trabajo. Instala requests y configura REAPI_API_KEY antes de ejecutarlo.
import os
import time
import requests
BASE = "https://reapi.ai/api/v1"
headers = {"Authorization": f"Bearer {os.environ['REAPI_API_KEY']}"}
payload = {
"model": "doubao-seedance-2.5-face",
"prompt": "A ceramic mug on a table. Locked camera, soft daylight.",
"duration": 4,
"resolution": "480p",
"size": "16:9",
"generate_audio": False,
}
submitted = requests.post(
f"{BASE}/videos/generations",
headers=headers,
json=payload,
timeout=120,
)
submitted.raise_for_status()
task_id = submitted.json()["id"]
print("Save this task id:", task_id, flush=True)
deadline = time.monotonic() + 30 * 60
while time.monotonic() < deadline:
response = requests.get(
f"{BASE}/tasks/{task_id}", headers=headers, timeout=60
)
if response.status_code in (429, 500, 502, 503, 504):
time.sleep(10)
continue
response.raise_for_status()
task = response.json()
if task["status"] == "completed":
for url in task["output"]["video_urls"]:
print(url)
break
if task["status"] == "failed":
raise RuntimeError(task.get("error"))
time.sleep(10)
else:
raise TimeoutError(f"Resume polling existing task {task_id}")El sondeo no consume créditos de generación. Si el proceso local agota el tiempo de espera, mantén el id guardado y reanuda las solicitudes GET para esa tarea. Un tiempo de espera local por sí solo no establece que la generación remota haya fallado. Del mismo modo, si una conexión POST se rompe antes de que recibas una respuesta, verifica tu historial de tareas antes de enviar el mismo trabajo de nuevo.[1]
Para una integración de servicio, persiste el id de tarea en tu propia base de datos inmediatamente después del envío. La distinción importante es entre reintentar una lectura de una tarea existente y crear una nueva tarea. Este último es otra solicitud de generación.
Selecciona cuatro modos de entrada a través de los campos de medios
Los campos de medios seleccionan la forma de la solicitud. Usa esta tabla junto con la documentación completa de la API Seedance 2.5.[1]
| Solicitud prevista | Campos a enviar | Restricción a recordar |
|---|---|---|
| Texto a vídeo | prompt | Una solicitud solo de texto necesita un aviso |
| Imagen de referencia a vídeo | image_urls más aviso de movimiento | URLs de imagen pública; hasta 30 imágenes |
| Primer fotograma explícito o primer/último fotograma | image_with_roles | Usa size: "adaptive"; un último fotograma necesita un primer fotograma |
| Referencia multimodal | image_urls, video_urls y/o audio_urls | Cada tipo de medio tiene sus propios límites de archivo y duración |
Por ejemplo, reemplaza las entradas de imagen de la carga solo de texto con un primer fotograma explícito:
{
"image_with_roles": [
{
"url": "https://file.deepytb.com/landing/qwen-image-2/playground-input.webp",
"role": "first_frame"
}
],
"size": "adaptive"
}Este bloque muestra campos para combinar en una solicitud completa, no un cuerpo POST completo. Reemplaza la muestra con una imagen que tengas derecho a usar. No envíes tanto image_urls como image_with_roles; son mutuamente excluyentes. Tampoco debes mezclar roles de fotograma y roles reference_image en el mismo array.[1]
Para entrada de vídeo, un clip de origen debe tener 2–30 segundos de duración, con como máximo diez clips y no más de 30 segundos combinados. El audio tiene límites separados de diez pistas y 30 segundos combinados. Más archivos no hacen que una solicitud sea más controlada por sí mismos; asigna a cada referencia un rol claro en el aviso.[1]
Encadena un último fotograma sin asumir continuidad perfecta
Establece return_last_frame: true en la primera solicitud. Cuando esa tarea se completa, lee output.last_frame_url y coloca esa URL en el array image_with_roles de la siguiente solicitud con role: "first_frame". Usa size: "adaptive" de nuevo.[1]
Lleva adelante la descripción relevante del sujeto, ropa, entorno e acción prevista siguiente. Una imagen de límite compartida le da al siguiente fotograma un punto de partida visual; no prueba que los fotogramas posteriores preservarán cada detalle. Inspecciona la unión, especialmente las manos móviles, la dirección de la mirada y los objetos de fondo, antes de usar el par como una secuencia.
La edición de vídeo es una forma de solicitud diferente. Un omni_reference_task_type: "edit" explícito requiere vídeo de origen, tamaño adaptativo y duración automática. No es la configuración correcta para una nueva escena que simplemente usa una foto como guía. Mantén la primera integración en una ruta de generación simple, luego añade edición cuando necesites modificar un clip existente.[1]
Calcula el coste de la solicitud antes de añadir vídeo de origen
Para solicitudes sin vídeo de referencia, multiplica el precio por segundo por la duración de salida, convierte dólares a créditos y redondea hacia arriba a un crédito completo. Un crédito es $0,001.[1]
| Solicitud | Tarifa del 12 de septiembre | Cálculo | Total pagable |
|---|---|---|---|
| 4 segundos, 480p, sin vídeo de referencia | $0,118589/s | ceil(0.118589 × 4 × 1000) | 475 créditos / $0,475 |
| 10 segundos, 720p, sin vídeo de referencia | $0,266824/s | ceil(0.266824 × 10 × 1000) | 2.669 créditos / $2,669 |
| Salida de 10 segundos, referencia de 3 segundos, 720p | $0,160094/s | ceil(0.160094 × 17 × 1000) | 2.722 créditos / $2,722 |
La última fila factura 17 segundos porque las solicitudes de entrada de vídeo usan el mayor de la salida más la duración de origen redondeada y ceil(5 × output / 3). Una tarifa de vídeo de referencia más baja por lo tanto no necesariamente significa un cargo final más bajo. Las referencias de imagen y audio no añaden segundos de origen.[1][2]
Duración automática, duration: -1, se reserva contra el límite de 30 segundos y después se resuelve a la duración entregada. Usa una duración fija cuando la reserva necesita mantenerse pequeña. Para comparaciones de plataforma más amplias, consulta la guía de precios de la API.
Mantén juntas las instrucciones del host de API
Las búsquedas de Seedance 2.5 en OpenRouter, fal o GitHub pueden llevar a clientes diferentes y especificaciones de servicio. La clave, punto final, id de modelo y envolvente de tarea de este tutorial pertenecen juntos. Un repositorio que llama a otro servicio no es un reemplazo listo para usar para esta solicitud.
Antes de adaptar una muestra, verifica su URL base, encabezado de autenticación, nombres de modelo aceptados, esquema de entrada y punto final de estado. Usa la documentación del host que realmente recibirá la solicitud. No necesitas un wrapper de GitHub de terceros para ejecutar los ejemplos cURL y Python aquí; usan la interfaz HTTP documentada de reAPI.[1]
Preguntas frecuentes
clave de API Seedance 2.5
Crea una clave en Claves de API de reAPI y úsala como un token Bearer. Mantenla en tu servidor o entorno local, con créditos de espacio de trabajo suficientes para la solicitud.[1]
documentación de API Seedance 2.5
La referencia del modelo documenta campos aceptados, modos, restricciones y facturación. Usa la página del modelo para tarifas por segundo actuales.[1][2]
tutorial de API Seedance 2.5
Envía una solicitud de texto de duración fija, guarda su id, luego sondea hasta completarse o fallar. Añade archivos de referencia solo después de que esa ruta funcione.[1]
GitHub de API Seedance 2.5
Un cliente de GitHub es opcional. Inspecciona qué servicio llama y si sus campos coinciden con la documentación actual de la API antes de usar sus cargas de ejemplo.[1]
acceso a API Seedance 2.5
reAPI expone doubao-seedance-2.5-face a través de su punto final de vídeo asincrónico. El slug del modelo del sitio web no es el valor del modelo para enviar.[1]
coste de API Seedance 2.5
Una solicitud de 480p de cuatro segundos sin vídeo de origen cuesta $0,475 después del redondeo de créditos a la tarifa del 12 de septiembre. La duración, resolución y facturación de vídeo de referencia cambian el total.[1][2]
Completa una solicitud antes de expandir el flujo de trabajo
Mantén la primera carga útil exitosa y su id de tarea como tu línea base de integración de API Seedance 2.5. Para la siguiente solicitud, añade el tipo de medio que tu toma necesita y verifica el vídeo devuelto antes de introducir encadenamiento o ediciones.
Referencias
- reAPI. Seedance 2.5 API — Parameters, Modes & Billing. Consultado en el navegador el 12 de septiembre de 2026. reapi.ai/docs/seedance-2-5.
- reAPI. Seedance 2.5 model page, rendered pricing table and FAQ. Consultado en el navegador el 12 de septiembre de 2026. reapi.ai/models/seedance-2-5.
Autor

Categorías
Más publicaciones

Alternativas a Venice.ai en 2026: 5 opciones comparadas
¿Buscas alternativas a Venice.ai en 2026? Compara OpenRouter, Together AI, DeepInfra, Ollama en local y reAPI en modelos, privacidad, precios y diseño de API.


API de IA gratis 2026: los límites reales de cada proveedor
Google excluye imágenes, vídeos y música de su API gratuita. Aquí están los límites reales de cada proveedor en 2026, con sus precios oficiales.


Continuidad en vídeos IA: cómo mantenerla en múltiples clips
Aprende a extender vídeos IA en múltiples clips con registro de estado, fotogramas de referencia, indicaciones de continuación y reglas de reparación.
