Skip to main content
O Wan 3.0 gera até 30 segundos de vídeo com som em um único job. O text-to-video funciona apenas com um prompt, o image-to-video começa em um frame que você fornece e pode terminar em outro, e o reference-to-video aceita até 10 imagens, 5 clipes de vídeo e 5 clipes de áudio e coloca na cena as pessoas, os produtos, os movimentos e as vozes que estão neles. O reference-to-video também edita e estende clipes que você já tem. Para o que todos os modelos de vídeo têm em comum, veja geração de vídeo; para outros modelos que trabalham com referências, veja reference to video e Seedance. Aqui estão duas imagens feitas com /image/generate e o clipe que o reference-to-video gerou a partir delas. A ceramista mantém o cabelo, as sardas e o avental, o bule mantém o esmalte e a alça dourada, e a fala no final é dita diante da câmera.
As duas imagens de referência lado a lado: uma ceramista ruiva com avental jeans e um bule verde-azulado salpicado com alça dourada
Os jobs rodam de forma assíncrona: quote calcula o preço de um job, queue envia o job e faz a cobrança, e retrieve faz polling até o MP4 ficar pronto. Os exemplos pressupõem que VENICE_API_KEY está definida:

Escolha um modelo

Todos os tiers têm as mesmas três variantes: O Prime é a opção mais rápida, a um preço maior: o clipe da cerâmica levou 205 segundos no standard e 131 no Prime. Cada ID também tem uma forma com ponto, como wan-3.0-reference-to-video. O image-to-video e o reference-to-video aceitam imagens, mas para tarefas diferentes. O image-to-video começa exatamente em image_url e, se você enviar end_image_url, termina nela. O reference-to-video trata as imagens como referências: o que está nelas aparece no clipe, enquadrado da forma que o prompt indicar. Use image-to-video quando o primeiro plano for fixo, e reference-to-video quando precisar da mesma pessoa ou do mesmo produto em várias cenas. Durações, proporções e resoluções vêm de /models. Esta consulta as retorna:
No momento, todos os modelos Wan 3.0 oferecem 2s, 5s, 10s, 15s, 20s, 25s e 30s, as proporções 16:9, 9:16, 1:1, 4:3 e 3:4, e prompts de até 20.000 caracteres. O image-to-video e o reference-to-video acrescentam adaptive, que segue o formato da sua entrada. Esses detalhes podem mudar, então leia-os da API. Os limites de referência não estão em /models; eles estão no passo 2.

1. Obtenha uma cotação de preço

A cobrança é por segundo de saída, a uma taxa definida pelo tier e pela resolução. Em 23 de outubro de 2026, o standard custava $0.065 por segundo em 480p, $0.13 em 720p e $0.26 em 1080p, e o Prime custava $0.088, $0.182 e $0.364. O Pro custava $0.237 em 1080p, $0.272 em 2K e $0.296 em 4K, e o Prime Pro custava $0.331, $0.355 e $0.379. As três variantes de um tier custam o mesmo, e desativar audio não altera o preço. Os vídeos de referência são cobrados à parte, na taxa do job e com precisão de fração de segundo, então um clipe de 4,2 segundos acrescenta 4,2 segundos. Imagens e áudios de referência são gratuitos. O quote não exige chave de API; adicione reference_video_total_duration, em segundos, quando o job tiver vídeos de referência:
Cotações e cobranças são arredondadas para o centavo, então 5 segundos em 480p, $0.325, são cotados e cobrados como $0.33.

2. Enfileirar o job

Este é o request por trás do clipe da cerâmica, com as duas imagens apontando para as cópias nesta documentação para que você possa executá-lo como está:
As referências vão em três arrays, como URLs públicas ou data URLs. A Venice busca as URLs por conta própria, então elas precisam funcionar sem headers ou cookies. Um job de reference-to-video precisa de pelo menos uma imagem ou um vídeo; apenas áudio é rejeitado. Os vídeos de referência e a duration juntos também precisam caber em 30 segundos. Os vídeos podem ser MP4 ou MOV, e os áudios MP3 ou WAV. Imagens menores que o mínimo de 240 pixels no lado menor são ampliadas em vez de rejeitadas. No prompt, @Image1 é a primeira entrada em reference_image_urls, @Image2 a segunda, e assim por diante, e @Video1 e @Audio1 são contados da mesma forma em seus próprios arrays. Nomeie cada referência que você enviar, incluindo áudio: escreva @Audio1 onde a voz ou o som deve entrar. O Wan 3.0 não usa reference_document_urls, embora a referência da API o liste. Prime, Pro e Prime Pro o rejeitam, e o tier standard aceita o documento, o ignora e cobra pelo job normalmente. A resposta traz o identificador para tudo o que vem a seguir:
Guarde os dois valores; o retrieve precisa deles. A cobrança acontece neste momento, não quando o vídeo volta, então não repita um request de queue. Se você tiver um queue_id, faça polling com ele. Se a resposta nunca chegou, enviar o job de novo pode gerar cobrança dupla. O queue é limitado a 40 requests por minuto e o retrieve a 120; ambos informam x-ratelimit-remaining-requests. A maioria dos erros é rejeitada aqui com 400 e sem cobrança: um valor que não está em /models, um campo que a variante não aceita, referências em excesso, áudio sem imagem ou vídeo, ou a ausência de aspect_ratio. O corpo informa o problema em issues[].message. A duração dos clipes é verificada depois da cobrança, então um clipe de referência longo ou curto demais recebe um queue_id aqui e falha no primeiro retrieve, com a cobrança reembolsada.

3. Faça polling e baixe

Chame o retrieve com os valores da resposta do queue:
A resposta pode ser uma de duas coisas. Enquanto o job está rodando, você recebe JSON:
Quando ele termina, você recebe video/mp4 e o corpo é o vídeo. Decida com base no Content-Type. Os dois números estão em milissegundos: quanto tempo os jobs desse modelo costumam levar e há quanto tempo o seu está rodando. A média ficou em cerca de 7,5 minutos em todos os modelos que testamos, e todos os jobs terminaram antes disso. Os jobs levaram de 1 a 5 minutos: testes de 2 segundos em 480p, um pouco mais de um minuto, e jobs baseados em um vídeo de referência de 5 segundos, de 3 a 5 minutos. Faça polling a cada 10 a 15 segundos em vez de esperar até a média. O MP4 é H.264 a 30 frames por segundo com áudio AAC estéreo, ou sem faixa de áudio se você enviou audio: false. 720p volta em 1280×720 e o 1080p standard em 1920×1080, mas Pro e Prime Pro retornaram 1936×1088 para 1080p.

Se falhar

Um job que falhou continua com falha: fazer polling de novo retorna o mesmo status e corpo. Jobs que falham antes de a geração começar, como um clipe de referência fora dos limites de duração ou uma imagem que a Venice não consegue decodificar, são reembolsados segundos depois de entrarem na fila. Os corpos deles trazem apenas error; a tabela de erros os lista.

Limpeza

Passe delete_media_on_completion: true no retrieve e o vídeo armazenado é excluído na mesma chamada que o retorna. Qualquer retrieve posterior para esse id retorna 404. Não use essa opção se quiser baixar o vídeo mais de uma vez.

Workflows

O clipe da cerâmica é o workflow de sujeito: imagens na entrada, as mesmas pessoas e objetos no clipe. Os requests abaixo são os outros workflows como os executamos, com as entradas em URLs de exemplo. Todos, exceto o último, usam reference-to-video, em que o prompt decide o que o modelo faz com um clipe.

Movimento a partir de um clipe

Um vídeo de referência pode fornecer movimento de câmera ou movimento sem o seu conteúdo. Aqui, uma órbita de 5 segundos em torno de uma estátua, feita com wan-3-0-text-to-video, definiu o movimento de câmera em torno da ceramista:
A câmera descreve um arco em torno dela, do mesmo jeito que circulou a estátua. Diga no prompt que a fala é dita com a voz de @Audio1. Aqui, uma fala de 6 segundos gerada com /audio/speech forneceu a voz:
Ela diz a nova fala para a câmera.

Editar um clipe

Descreva a mudança, diga o que precisa continuar igual e defina duration com a duração do clipe:
A neve cobriu o pátio e as árvores, enquanto a estátua e a órbita continuaram como estavam. Com adaptive, a origem de 854×480 voltou em 1280×718.

Estender um clipe

O resultado começa com o seu clipe, regenerado, e continua a partir dele, então duration é a duração do resultado inteiro: o clipe mais as novas imagens.
A órbita de 5 segundos voltou com 10 segundos: a órbita novamente e, depois, 5 segundos novos subindo sobre os telhados. O mesmo request com "duration": "5s" retornou apenas a órbita. A abertura é regenerada em vez de copiada, então, se você precisar dos frames originais, corte as novas imagens do final e junte-as ao seu clipe. Os segundos do clipe são cobrados duas vezes, como vídeo de referência e como parte do resultado. Como o clipe e a duration compartilham o limite de 30 segundos, um clipe de 10 segundos pode crescer no máximo 10 segundos.

Primeiro e último frames

Este usa image-to-video. Envie o frame de abertura como image_url, o frame de encerramento como end_image_url e descreva o que acontece entre eles. Os dois frames vieram de /image/generate, e o segundo foi feito a partir do primeiro com /image/edit para que o ambiente combine:
O clipe começa no frame da manhã e termina no da noite.

Escrevendo prompts

O Wan 3.0 segue de perto um prompt estruturado, e estes hábitos ajudaram nos nossos testes:
  • Dê a cada trecho do clipe um timestamp, como 0-4s: e 4-10s:. No clipe da cerâmica, o levantar do bule e o push-in acontecem onde o prompt os colocou.
  • Coloque os diálogos entre aspas duplas e diga quando um personagem deve ficar em silêncio. Por conta própria, o modelo preencheu momentos silenciosos com palavrinhas: a primeira tomada do clipe da cerâmica acrescentou “Okay.” antes da fala. A segunda tomada, com She is silent. no primeiro plano e says only: antes da fala, teve apenas um discreto “Mm.”
  • Nomeie os movimentos de câmera de forma simples: slow push-in, static camera, one slow orbit.
  • Descreva o som que você quer, incluindo o som ambiente. O Wan 3.0 não tem negative prompt, então escreva exclusões como no music no próprio prompt.

Exemplo completo

Este script gerou o clipe da cerâmica: ele cota o job, o enfileira com as duas imagens como data URLs, faz polling até o MP4 chegar e o salva. Salve a ceramista e o bule ao lado dele como woman.webp e teapot.webp. O prazo de 20 minutos é várias vezes o job mais longo que executamos.
O retrieve exclui o vídeo armazenado ao entregá-lo, então remova delete_media_on_completion se quiser baixá-lo novamente.

Parâmetros da API

Queue

Retrieve

Erros

Recursos relacionados