Pular para o conteúdo principal

O Wan 2.6 Flash Referências para vídeo, da Alibaba, leva pessoas, animais ou objetos de até cinco imagens estáticas e clipes para uma cena nova descrita pelo seu prompt, no nível Flash, mais rápido e de menor custo. Os clipes têm de 2 a 10 segundos em 720p ou 1080p, sem som por padrão ou com uma trilha sonora gerada.

A partir de $0.022/s10% abaixo do preço oficial

Playground

Enviar uma requisição

Início rápido

Os exemplos usam as definições públicas de parâmetros do endpoint selecionado. Troque a chave de API e as mídias de exemplo e envie a requisição a partir do seu servidor.

SDKs e integrações
POSThttps://api.spicyapi.ai/api/v1/jobs/createTask

Autenticação da API

Guarde a chave de API na variável de ambiente do servidor SPICY_API_KEY. Use autenticação Bearer e Content-Type: application/json nas requisições JSON.

Authorization: Bearer $SPICY_API_KEY
Resultado de exemploUsar este exemplo
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
  -d '{
  "model": "alibaba/wan-2.6-flash/reference-to-video",
  "input": {
    "aspect_ratio": "16:9",
    "duration_seconds": 5,
    "generate_audio": false,
    "prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
    "resolution": "720p",
    "shot_type": "single",
    "reference_video_urls": [
      "https://example.com/reference.mp4"
    ]
  }
}'

# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Gerado a partir do schema de entrada deste modelo — o mesmo que a API usa para validar cada requisição.

Parâmetros de entrada

Coloque estes campos no objeto input do corpo da requisição. Nomes e tipos são os mesmos da API. Quando nenhum valor padrão estiver indicado, não presuma que exista um.

Este modelo tem dependências entre campos. Os campos marcados como obrigatórios sob condição dependem de outras entradas; as regras completas estão no JSON Schema abaixo.

promptstringObrigatório

A cena nova: cite cada referência como character1, character2 e assim por diante, primeiro os clipes e depois as imagens estáticas, diga o que cada uma faz e depois o cenário, a câmera e a luz. Até 1.500 caracteres. Com generate_audio ligado, descreva os sons que você quer depois da ação.

Valor padrão
Não especificado
Restrições
minLength:1
maxLength:1500
seedintegerOpcional

De 0 a 2147483647. Fixe-a enquanto troca uma referência por vez, para que o sorteio aleatório fique constante e só se mova o que você mudou. É uma ferramenta de comparação, não uma garantia de repetição idêntica quadro a quadro.

Valor padrão
Não especificado
Restrições
minimum:0
maximum:2147483647
enable_prompt_expansionbooleanOpcional

Desligada por padrão. Ligada, deixa uma ideia de uma linha crescer até virar um brief mais completo antes da geração; deixe desligada quando o prompt já cita o elenco e o plano com precisão. Com shot_type em multi, ela fica ligada independentemente desta configuração.

Valor padrão
false
shot_typestringOpcional

single mantém uma tomada contínua; multi deixa o modelo cortar entre planos dentro da mesma cena, o que combina com uma cena que tem ritmo. Em 2 ou 3 segundos raramente há espaço para um corte. Escolher multi também liga enable_prompt_expansion nessa requisição.

Valor padrão
"single"
Valores permitidos
"single""multi"
duration_secondsintegerOpcionalAfeta o preço

Qualquer número inteiro de 2 a 10, padrão 5. É o que mais mexe no preço e também onde a semelhança se solta: confira o último segundo de um clipe longo antes de se comprometer com essa duração.

Valor padrão
5
Restrições
minimum:2
maximum:10
resolutionstringOpcionalAfeta o preço

720p ou 1080p, padrão 720p. Define a tarifa por segundo e quanto a tarefa demora, e as duas resoluções aceitam as cinco proporções.

Valor padrão
"720p"
Valores permitidos
"720p""1080p"
generate_audiobooleanOpcionalAfeta o preço

Desligado por padrão, então o clipe volta só com imagem. Ligado, o clipe volta com uma trilha sonora gerada, com vozes, efeitos e som ambiente, e a tarifa por segundo dobra em qualquer uma das duas resoluções.

Valor padrão
false
aspect_ratiostringOpcional

16:9, 9:16, 1:1, 4:3 ou 3:4, padrão 16:9, disponível nas duas resoluções. É escolhido a cada solicitação e não herdado de uma referência, então um mesmo conjunto de referências pode ser entregue em vários formatos.

Valor padrão
"16:9"
Valores permitidos
"16:9""9:16""1:1""4:3""3:4"
reference_image_urlsarray<string>Obrigatório sob condição

Até cinco imagens estáticas das pessoas, animais ou objetos a escalar, junto com os clipes ou no lugar deles; somadas aos clipes, uma solicitação aceita no máximo cinco referências. Elas são numeradas depois dos clipes: sem clipes a primeira imagem é character1, com dois clipes é character3. JPEG, PNG sem transparência, BMP ou WEBP, de 240 a 8.000 pixels por lado e até 20 MB. Imagens estáticas não são cobradas.

Valor padrão
Não especificado
Restrições
minItems:1
maxItems:5
reference_video_urlsarray<string>Obrigatório sob condiçãoAfeta o preço

Até três clipes curtos dos sujeitos ou lugares a escalar, somando no máximo cinco segundos. Eles são numerados primeiro, como character1, character2 e character3, na ordem de envio. Um clipe leva movimento e lugar melhor que uma imagem estática; os segundos dele são cobrados junto com a saída, arredondados para cima e com no mínimo um segundo cada, então corte antes de enviar. MP4 ou MOV.

Valor padrão
Não especificado
Restrições
minItems:1
maxItems:3
negative_promptstringOpcional

O que não deve aparecer: pessoas a mais, legendas, um objeto de uma referência que você não quer levar junto. Até 500 caracteres.

Valor padrão
Não especificado
Restrições
maxLength:500

Acompanhar tarefa

HTTP 202 quer dizer que a tarefa foi aceita, não que terminou. Guarde o taskId devolvido e consulte essa tarefa. Não crie outra enquanto espera o resultado.

Requisição aceita
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/recordInfo?taskId=job_01k3m8x9q2z4v7n5p6r8s0t1w3

{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_create",
  "data": {
    "taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued",
    "estimatedCost": "0.750000"
  }
}

A resposta de aceitação já traz a estimativa, para que o seu aplicativo mostre o mesmo valor no histórico de tarefas e na cobrança.

Consultar a tarefa
curl --get "https://api.spicyapi.ai/api/v1/jobs/recordInfo" \
  --data-urlencode "taskId=$TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Comece consultando a cada 2 segundos, mais ou menos, e vá espaçando. Pare em um estado final. Se a conexão cair, consulte o taskId original. Só recrie a tarefa com a chave de idempotência e o corpo originais.

Ou receba o resultado por callback
import { verifyWebhook } from "@spicyapi/sdk";

// express.raw keeps the bytes we signed; express.json never matches.
app.post("/hooks/spicy", express.raw({ type: "application/json" }), (req, res) => {
  const { payload } = verifyWebhook({
    rawBody: req.body,
    timestamp: req.header("X-Webhook-Timestamp"),
    signature: req.header("X-Webhook-Signature"),
    payloadVersion: Number(req.header("X-Webhook-Payload-Version")),
    secret: process.env.SPICY_WEBHOOK_SECRET,
  });
  res.status(200).end();
  void handleFinishedTask(payload);
});

Passe callBackUrl ao criar a tarefa e o registro concluído chega até você via POST — sem nenhum laço de polling. Toda entrega traz X-Webhook-Timestamp, X-Webhook-Signature e X-Webhook-Payload-Version. A assinatura é um HMAC-SHA256 em base64 sobre taskId.timestamp.sha256(body), então confira contra os bytes brutos: se você analisar o JSON e serializar de novo, os bytes mudam e a verificação falha. Entregas com erro são repetidas, ou seja, o mesmo taskId pode chegar duas vezes — deixe seu handler idempotente. Responda 2xx primeiro e faça o trabalho depois; um handler lento conta como entrega falha.

Ler resultado

Só consuma output quando state for succeeded. Em caso de falha, use errorCode, errorMessage e request_id para investigar. Os custos e estados de exemplo não representam uma cobrança real.

Exemplo de resposta concluída
{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_record",
  "data": {
    "taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "alibaba/wan-2.6-flash/reference-to-video",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "key": "tasks/2026/08/28/job_01k3m8x9q2z4v7n5p6r8s0t1w3/3f7a1c9e5b2d48f0a6c1e3d5b7f9a1c3.mp4",
          "mime": "video/mp4",
          "url": "https://example.r2.cloudflarestorage.com/results/job_01k3m8x9q2z4v7n5p6r8s0t1w3/result.mp4?X-Amz-Signature=SIGNATURE_FROM_RESPONSE",
          "expiresAt": "2026-08-28T12:20:08.000Z"
        }
      ]
    },
    "cost": "0.750000",
    "settled": true,
    "createdAt": "2026-08-28T12:00:00Z",
    "completedAt": "2026-08-28T12:00:30Z"
  }
}

Para cada arquivo disponível, abra ou baixe assets[].url direto, sem o cabeçalho Authorization da API. O link assinado expira em expiresAt: consulte a tarefa de novo para renovar enquanto o arquivo estiver dentro do prazo de retenção. Arquivo pendente ou indisponível não tem URL. Trate os links assinados como dado privado.

SDKs e integrações

Use a SpicyAPI no seu app, terminal, assistente de IA ou fluxo visual. Escolha um guia de configuração.

Use no ComfyUI

Instale os nós da SpicyAPI pelo ComfyUI Manager ou com o comando abaixo e procure por Wan 2.6 Flash · Reference to Video no canvas. O nó tem as mesmas opções desta página e mostra o preço antes da execução.

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi