API Text-to-Video
Genera vídeos a partir de un prompt de texto puro. Es el modo más común de Seedance 2.0 y resulta ideal para ideación creativa, guiones publicitarios, storyboards, contenido de formato corto y cualquier escenario en el que no dispongas de material visual de referencia.
Endpoint
POST https://api.evolink.ai/v1/videos/generations
ID del modelo: seedance-2.0-text-to-video
Para una generación más rápida y un coste menor, usa
seedance-2.0-fast-text-to-video: la estructura de parámetros es idéntica.
Parámetros de la solicitud
| Parámetro | Tipo | Obligatorio | Valor por defecto | Descripción |
|---|---|---|---|---|
model | string | Sí | — | Debe ser seedance-2.0-text-to-video |
prompt | string | Sí | — | Descripción del contenido del vídeo. ≤ 500 caracteres chinos o ≤ 1000 palabras en inglés |
duration | integer | No | 5 | Duración del vídeo en segundos, rango 4–15. Facturado por segundo |
quality | string | No | 720p | Nivel de calidad: 480p o 720p. 1080p no está soportado |
aspect_ratio | string | No | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive |
generate_audio | boolean | No | true | Si se debe generar audio sincronizado (sonido ambiente, música, diálogos) |
model_params.web_search | boolean | No | false | Cuando está activado, el modelo decide de forma autónoma si buscar información reciente en internet. Solo se factura cuando realmente se realiza una búsqueda |
callback_url | string | No | — | URL HTTPS para el callback al completarse la tarea. Máximo 2048 caracteres, no se permiten IPs privadas |
Detalles de los parámetros
Cómo escribir un buen prompt
- Describe el sujeto, la acción, el lenguaje de cámara (panorámica/inclinación/zoom/dolly) y la atmósfera de iluminación
- Coloca los diálogos entre comillas dobles rectas para activar la síntesis de voz dedicada:
Ella se giró y dijo: "Por fin has llegado." - No solicites valores específicos de relación de aspecto dentro del prompt (p. ej. "2.35:1"): usa el campo
aspect_ratioen su lugar
generate_audio: false produce vídeo silencioso, sin pérdida de calidad visual y con un ligero ahorro de ancho de banda. La generación de audio en sí no tiene coste adicional.
model_params.web_search: true es útil cuando:
- Tu prompt hace referencia a contenido temporal del tipo "más reciente", "hoy", "esta semana"
- Necesitas anuncios de marca que mencionen eventos, personas o lugares reales
- El modelo decide internamente si conviene buscar; si no es necesario, no se realiza ninguna búsqueda y no se cobra nada extra
Ejemplos de solicitud
cURL
curl -X POST https://api.evolink.ai/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-text-to-video",
"prompt": "A macro lens focuses on a green glass frog on a leaf. The focus gradually shifts from its smooth skin to its completely transparent abdomen, where a bright red heart is beating powerfully and rhythmically.",
"duration": 8,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": true
}'
Python
import requests
response = requests.post(
"https://api.evolink.ai/v1/videos/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "seedance-2.0-text-to-video",
"prompt": "A luxury watch rotating slowly on a marble surface, soft studio lighting, product showcase, cinematic",
"duration": 8,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": False
}
)
task = response.json()
print(f"Task ID: {task['id']}")
Node.js
const res = await fetch("https://api.evolink.ai/v1/videos/generations", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "seedance-2.0-text-to-video",
prompt: "A cinematic sunset over the ocean, wide angle",
duration: 5,
quality: "720p",
aspect_ratio: "16:9",
model_params: { web_search: false }
})
});
const task = await res.json();
console.log("Task ID:", task.id);
Respuesta
Una solicitud aceptada devuelve el objeto de tarea de inmediato (HTTP 200). En este momento la generación todavía no ha comenzado:
{
"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": 8
},
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}
Referencia de campos
| Campo | Descripción |
|---|---|
id | ID de la tarea — úsalo para hacer polling de estado o para emparejar webhooks |
status | pending → processing → completed / failed |
progress | Porcentaje de 0 a 100 |
task_info.estimated_time | Segundos estimados hasta finalizar |
task_info.video_duration | Duración solicitada del vídeo |
task_info.can_cancel | Si todavía se puede llamar al endpoint de cancelación |
usage.billing_rule | Siempre per_second |
usage.credits_reserved | Créditos reservados — el cargo real se liquida cuando la tarea pasa a completed |
Cómo obtener los resultados
Tras enviar la solicitud hay dos formas de obtener la URL del vídeo final:
- Polling —
GET /v1/tasks/{id}cada 5 segundos. Consulta Tareas asíncronas. - Webhook — pasa
callback_urlen la solicitud; el sistema envía un POST con el resultado cuando la tarea termina. Consulta Webhooks.
Las URLs de los vídeos generados son válidas durante 24 horas: descárgalos a tu propio almacenamiento sin demora.
Preguntas frecuentes
¿Por qué obtengo un error al pasar image_urls a text-to-video?
Text-to-video no acepta entradas multimedia. Si tienes imágenes de referencia, usa image-to-video en su lugar.
¿Puedo especificar una resolución exacta en píxeles?
No. quality solo expone los niveles 480p y 720p; las dimensiones reales en píxeles dependen de la combinación de aspect_ratio y quality.
¿Cómo consigo que los diálogos suenen naturales? Coloca la línea hablada entre comillas dobles rectas. El modelo lo detecta automáticamente como diálogo y ejecuta la síntesis de voz dedicada en lugar de tratarlo como narración ambiente.
Relacionado
- Visión general de modelos — La matriz completa de 6 modelos
- API Image-to-Video — Si tienes imágenes de referencia
- API Reference-to-Video — Composición multimodal
- Modelos Fast —
seedance-2.0-fast-text-to-video - Tareas asíncronas / Webhooks