Inicio rápido
Pasa de cero a generar un vídeo con IA en aproximadamente 5 minutos.
Aviso importante de inicio: Seedance 2.0 tiene 6 modelos, no 1. No existe la "detección automática de modo": debes elegir el valor de
modelcorrecto según tu tipo de entrada. Consulta la matriz completa en Visión general de modelos.
Requisitos previos
- Una cuenta de EvoLink (Regístrate gratis)
- Una API key desde tu Página de gestión de API keys
- Cualquier cliente HTTP (cURL, Python, Node.js, etc.)
URL base
https://api.evolink.ai
Paso 1: guarda tu API key
export EVOLINK_API_KEY="your-api-key-here"
Paso 2: elige el modelo correcto
Según lo que tengas:
| Tu entrada | Modelo a usar |
|---|---|
| Solo prompt de texto | seedance-2.0-text-to-video |
| 1–2 imágenes de referencia | seedance-2.0-image-to-video |
| Imágenes + vídeos + audio (multimodal) | seedance-2.0-reference-to-video |
¿Necesitas generación más rápida y menor coste? Añade el prefijo fast- a cualquiera de los anteriores, p. ej. seedance-2.0-fast-text-to-video. Consulta Modelos Fast.
Paso 3: realiza tu primera solicitud
Aquí tienes un ejemplo de text-to-video:
import os
import requests
response = requests.post(
"https://api.evolink.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}",
"Content-Type": "application/json"
},
json={
"model": "seedance-2.0-text-to-video",
"prompt": "A golden retriever running through a sunlit meadow, cinematic slow motion",
"duration": 5,
"quality": "720p",
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
Respuesta (HTTP 200)
{
"id": "task-unified-1774857405-abc123",
"object": "video.generation.task",
"created": 1774857405,
"model": "seedance-2.0-text-to-video",
"status": "pending",
"progress": 0,
"type": "video",
"task_info": {
"can_cancel": true,
"estimated_time": 165,
"video_duration": 5
},
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}
Observa que billing_rule siempre es per_second: valores de duration mayores cuestan más.
Paso 4: haz polling para obtener el vídeo
Cada solicitud de generación es asíncrona. Usa el ID de tarea para hacer polling del resultado:
import time
task_id = task["id"]
while True:
status = requests.get(
f"https://api.evolink.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}"}
)
result = status.json()
if result["status"] == "completed":
print(f"Video URL: {result['results'][0]}")
break
if result["status"] == "failed":
print("Generation failed")
break
print(f"Progress: {result['progress']}%")
time.sleep(5)
Importante: Las URLs de los vídeos generados son válidas durante 24 horas. Descárgalos y guárdalos en tu propio almacenamiento sin demora.
Para producción, prefiere Webhooks (callback_url) en lugar de polling.
Errores comunes
| Síntoma | Causa | Solución |
|---|---|---|
400 invalid_request en model | Has escrito "model": "seedance-2.0" | Usa el ID de modelo completo, p. ej. seedance-2.0-text-to-video |
Error al pasar image_urls | text-to-video no acepta entradas multimedia | Usa seedance-2.0-image-to-video |
quality: "1080p" rechazada | 1080p no está soportado | Usa 480p o 720p |
| Imagen > 30 MB o > 6000 px rechazada | Supera los límites de imagen de entrada | Comprime al rango permitido (consulta image-to-video) |
Próximos pasos
- Visión general de modelos — Matriz completa de 6 modelos y árbol de decisión
- Autenticación — Detalles del Bearer token
- Text-to-Video / Image-to-Video / Reference-to-Video
- Tareas asíncronas — Detalles del endpoint de polling
- Webhooks — Notificaciones en tiempo real con
callback_url