API de generación de video Seedance
Llama a la generación de video de Seedance (Volcengine Ark) a través de LMU AI con el protocolo asíncrono nativo: crea, consulta, lista y cancela tareas, e incluye un ejemplo completo de sondeo.
La generación de video de Seedance (Volcengine Ark) utiliza el protocolo asíncrono nativo del proveedor: reemplaza la dirección en el SDK oficial o en el comando curl por la dirección de LMU AI y la clave por tu clave de API de LMU AI; el cuerpo de la solicitud no cambia. Para las reglas comunes sobre autenticación, facturación y marcas de agua, límites de concurrencia y códigos de error, consulta la descripción general de la API de generación de video.
URL base
https://api.lmuai.com| Operación | Endpoint |
|---|---|
| Crear una tarea | POST /api/v3/contents/generations/tasks |
| Consultar una tarea | GET /api/v3/contents/generations/tasks/{id} |
| Listar tareas | GET /api/v3/contents/generations/tasks |
| Cancelar / eliminar | DELETE /api/v3/contents/generations/tasks/{id} |
La generación de video debe estar habilitada para tu grupo
El grupo de la clave de API debe tener habilitada la "Generación de video"; de lo contrario, las llamadas devuelven 403. El nombre del modelo debe coincidir exactamente con el nombre habilitado para tu grupo (distingue mayúsculas y minúsculas); consulta los modelos disponibles con GET /v1/models.
1. Crear una tarea
POST /api/v3/contents/generations/tasks
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
model | string | Sí | Nombre del modelo; debe coincidir exactamente con el nombre habilitado para tu grupo (distingue mayúsculas y minúsculas) |
content | array | Sí | Contenido de entrada. Texto: {"type":"text","text":"…"}; imagen de referencia: {"type":"image_url","image_url":{"url":"…"},"role":"first_frame"}, donde role puede ser first_frame (primer fotograma) o reference_image (imagen de referencia) |
resolution | string | No | Nivel de resolución: 480p / 720p / 1080p |
duration | integer | No | Duración del video en segundos |
ratio | string | No | Relación de aspecto: 16:9 / 9:16 / 1:1 / 4:3 |
generate_audio | boolean | No | Si también se debe generar audio |
curl https://api.lmuai.com/api/v3/contents/generations/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"content": [
{"type": "text", "text": "Waves gently lapping the beach at dusk, slow motion"}
],
"resolution": "720p",
"duration": 5,
"ratio": "16:9",
"generate_audio": true
}'import requests
BASE = "https://api.lmuai.com"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
resp = requests.post(f"{BASE}/api/v3/contents/generations/tasks", headers=HEADERS, json={
"model": "seedance-2.5",
"content": [{"type": "text", "text": "Waves gently lapping the beach at dusk, slow motion"}],
"resolution": "720p",
"duration": 5,
"ratio": "16:9",
"generate_audio": True,
})
resp.raise_for_status()
task_id = resp.json()["id"]
print(task_id)const BASE = "https://api.lmuai.com";
const headers = {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
};
const resp = await fetch(`${BASE}/api/v3/contents/generations/tasks`, {
method: "POST",
headers,
body: JSON.stringify({
model: "seedance-2.5",
content: [{ type: "text", text: "Waves gently lapping the beach at dusk, slow motion" }],
resolution: "720p",
duration: 5,
ratio: "16:9",
generate_audio: true,
}),
});
const data = await resp.json();
console.log(data.id);Respuesta:
{
"id": "cgt-20261022103211-ab12c"
}Para usar una imagen de referencia de primer fotograma, agrega un elemento de imagen a content:
{
"model": "seedance-2.5",
"content": [
{"type": "text", "text": "The camera slowly pushes in as waves gently lap the beach"},
{"type": "image_url", "image_url": {"url": "https://example.com/first-frame.png"}, "role": "first_frame"}
],
"resolution": "720p",
"duration": 5
}Notas
- En el modo de primer fotograma (
roleesfirst_frame), no envíesratio: la relación de aspecto sigue la imagen del primer fotograma, y el upstream rechaza la solicitud con400si lo envías. callback_urlno se reenvía al upstream; no recibirás ninguna notificación aunque lo envíes. Usa el sondeo periódico en su lugar.
2. Consultar una tarea
GET /api/v3/contents/generations/tasks/{id}
Valores de status: queued → running → succeeded / failed / cancelled. Cuando tiene éxito, la URL del video está en content.video_url.
curl https://api.lmuai.com/api/v3/contents/generations/tasks/TASK_ID \
-H "Authorization: Bearer YOUR_API_KEY"Respuesta (éxito):
{
"id": "cgt-20261022103211-ab12c",
"model": "seedance-2.5",
"status": "succeeded",
"content": {
"video_url": "https://…/video.mp4"
},
"usage": {
"completion_tokens": 108900,
"total_tokens": 108900
},
"created_at": 1792629131,
"updated_at": 1792629262
}3. Listar tareas
GET /api/v3/contents/generations/tasks?limit=20&offset=0
Devuelve las tareas creadas con la clave de API actual (limit de 1 a 100, valor predeterminado 20). La respuesta es {object, data[], has_more}. Los registros de las tareas siguen siendo consultables después de que expira el enlace del video.
4. Cancelar / eliminar
DELETE /api/v3/contents/generations/tasks/{id}
- Las tareas que siguen en la cola (
queued) se pueden cancelar sin costo. - Las tareas que ya comenzaron a generarse (
running) no se pueden cancelar y devuelven409. - Las tareas finalizadas pueden eliminar su registro en el upstream, sin reembolso.
5. Ejemplo completo: crear y sondear
import time, requests
BASE = "https://api.lmuai.com"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
# 1. Create the task
resp = requests.post(f"{BASE}/api/v3/contents/generations/tasks", headers=HEADERS, json={
"model": "seedance-2.5",
"content": [{"type": "text", "text": "Waves gently lapping the beach at dusk, slow motion"}],
"resolution": "720p", "duration": 5, "ratio": "16:9",
})
resp.raise_for_status()
task_id = resp.json()["id"]
# 2. Poll until a final state (every 10 seconds)
while True:
task = requests.get(f"{BASE}/api/v3/contents/generations/tasks/{task_id}", headers=HEADERS).json()
status = task["status"]
if status in ("succeeded", "failed", "cancelled", "canceled", "expired"):
break
time.sleep(10)
# 3. Download (the link is valid for 24 hours)
if status == "succeeded":
url = task["content"]["video_url"]
with open(f"{task_id}.mp4", "wb") as f:
f.write(requests.get(url).content)
else:
print("Generation failed:", task)6. Facturación y códigos de error
Seedance se factura por tokens de salida. Se congela un monto estimado al crear la tarea, y un saldo insuficiente devuelve 402; cuando tiene éxito, la tarea se liquida según el uso real, y las tareas fallidas y canceladas se reembolsan por completo. Cada usuario y cada clave de API pueden tener como máximo 5 tareas generándose al mismo tiempo; por encima de ese límite, las solicitudes devuelven 429.
Para conocer las reglas completas, consulta Facturación y marcas de agua, Límites de concurrencia y Códigos de error en la descripción general. Para el otro proveedor, consulta la API de generación de video Wan.
Última actualización:
Consigue una clave de API de LMU AI y empieza a usar Claude, Codex y más
Registro gratuito y planes flexibles. Una sola clave API para Claude Code, Codex CLI, Cursor, la extensión de VS Code, OpenCode, Cherry Studio y otras herramientas de IA.
RegistrarseAPI de generación de video
Descripción general de la API de generación de video de LMU AI: elige entre Seedance y Wan, y consulta las reglas comunes de autenticación, tareas asíncronas, facturación, límites de concurrencia y códigos de error.
API de generación de video de Wan
Llama a la generación de video de Wan (Alibaba DashScope) a través de LMU AI con el protocolo asíncrono nativo: crea tareas, consulta los resultados, conoce los valores predeterminados y revisa un ejemplo completo de sondeo.