API Aberta

API de Geração de Vídeo Wan

Chame a geração de vídeo Wan (Alibaba DashScope) por meio do LMU AI com o protocolo assíncrono nativo: crie tarefas, consulte os resultados, valores padrão e um exemplo completo de polling.

A geração de vídeo Wan (Alibaba Cloud Model Studio, DashScope) usa o protocolo assíncrono nativo do fornecedor, idêntico ao protocolo oficial do DashScope: substitua o endereço no SDK oficial ou no comando curl pelo endereço do LMU AI e a chave pela sua chave de API do LMU AI; o corpo da requisição permanece inalterado. Para as regras comuns de autenticação, cobrança e marcas d'água, limites de concorrência e códigos de erro, consulte a visão geral da API de Geração de Vídeo.

URL base

https://api.lmuai.com
OperaçãoEndpoint
Criar uma tarefaPOST /api/v1/services/aigc/video-generation/video-synthesis
Consultar uma tarefaGET /api/v1/tasks/{task_id}

A geração de vídeo precisa estar habilitada para o seu grupo

O grupo da chave de API precisa ter a "Geração de vídeo" habilitada; caso contrário, as chamadas retornam 403. O nome do modelo deve corresponder exatamente ao nome habilitado para o seu grupo (diferencia maiúsculas de minúsculas); verifique os modelos disponíveis com GET /v1/models.

1. Criar uma tarefa

POST /api/v1/services/aigc/video-generation/video-synthesis

O cabeçalho assíncrono X-DashScope-Async: enable é opcional; a plataforma o adiciona automaticamente.

ParâmetroTipoObrigatórioDescrição
modelstringSimPor exemplo, wan3.0-video
input.promptstringSimPrompt
input.mediaarrayNãoMídia de referência, como [{"type":"first_frame","url":"…"}]; type pode ser first_frame ou reference_image
parameters.resolutionstringNãoFaixa de resolução: 480P / 720P / 1080P, padrão 1080P
parameters.durationintegerNãoDuração em segundos, padrão 5
parameters.watermarkbooleanNãoDefinido de forma uniforme pela plataforma de acordo com a política do grupo; um valor enviado pelo cliente pode ser sobrescrito
curl https://api.lmuai.com/api/v1/services/aigc/video-generation/video-synthesis \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video",
    "input": {"prompt": "A Shiba Inu running across a sunny meadow"},
    "parameters": {"resolution": "720P", "duration": 5}
  }'
import requests

BASE = "https://api.lmuai.com"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

resp = requests.post(f"{BASE}/api/v1/services/aigc/video-generation/video-synthesis", headers=HEADERS, json={
    "model": "wan3.0-video",
    "input": {"prompt": "A Shiba Inu running across a sunny meadow"},
    "parameters": {"resolution": "720P", "duration": 5},
})
resp.raise_for_status()
task_id = resp.json()["output"]["task_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/v1/services/aigc/video-generation/video-synthesis`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    model: "wan3.0-video",
    input: { prompt: "A Shiba Inu running across a sunny meadow" },
    parameters: { resolution: "720P", duration: 5 },
  }),
});
const data = await resp.json();
console.log(data.output.task_id);

Resposta:

{
  "request_id": "4909100c-…",
  "output": {
    "task_id": "c65c77fe-323b-4140-8de6-5a7241d9ec44",
    "task_status": "PENDING"
  }
}

2. Consultar uma tarefa

GET /api/v1/tasks/{task_id}

Valores de output.task_status: PENDING → RUNNING → SUCCEEDED / FAILED / CANCELED. Em caso de sucesso, a URL do vídeo está em output.video_url e os segundos cobrados estão em usage.duration.

curl https://api.lmuai.com/api/v1/tasks/TASK_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

Resposta (sucesso):

{
  "request_id": "…",
  "output": {
    "task_id": "c65c77fe-323b-4140-8de6-5a7241d9ec44",
    "task_status": "SUCCEEDED",
    "video_url": "https://…/output.mp4"
  },
  "usage": {
    "duration": 2.0,
    "video_count": 1
  }
}

Sem endpoint de cancelamento

O Wan não tem endpoint de cancelamento: depois de enviada, uma tarefa sempre é executada até o fim. Tarefas com falha não são cobradas.

3. Exemplo completo: criar e fazer polling

import time, requests

BASE = "https://api.lmuai.com"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

# 1. Create the task
resp = requests.post(f"{BASE}/api/v1/services/aigc/video-generation/video-synthesis", headers=HEADERS, json={
    "model": "wan3.0-video",
    "input": {"prompt": "A Shiba Inu running across a sunny meadow"},
    "parameters": {"resolution": "720P", "duration": 5},
})
resp.raise_for_status()
task_id = resp.json()["output"]["task_id"]

# 2. Poll until a final state (every 10 seconds)
while True:
    task = requests.get(f"{BASE}/api/v1/tasks/{task_id}", headers=HEADERS).json()
    status = task["output"]["task_status"]
    if status in ("SUCCEEDED", "FAILED", "CANCELED", "CANCELLED", "UNKNOWN"):
        break
    time.sleep(10)

# 3. Download (the link is valid for 24 hours)
if status == "SUCCEEDED":
    url = task["output"]["video_url"]
    with open(f"{task_id}.mp4", "wb") as f:
        f.write(requests.get(url).content)
else:
    print("Generation failed:", task)

4. Cobrança e códigos de erro

O Wan é cobrado por "segundos reais × preço unitário da faixa de resolução", e os segundos cobrados estão em usage.duration no resultado da consulta. Um valor estimado é congelado quando a tarefa é criada, e saldo insuficiente retorna 402; em caso de sucesso, a tarefa é liquidada conforme o uso real, e tarefas com falha são totalmente reembolsadas. Cada usuário e cada chave de API pode ter no máximo 5 tarefas em geração ao mesmo tempo; acima disso, as requisições retornam 429.

Para as regras completas, consulte Cobrança e marcas d'água, Limites de concorrência e Códigos de erro na visão geral. Para o outro fornecedor, consulte a API de Geração de Vídeo Seedance.

Última atualização:

Nesta página