/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.

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:
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 desativaraudio 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:
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á:
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:
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: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 apenaserror; a tabela de erros os lista.
Limpeza
Passedelete_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 comwan-3-0-text-to-video, definiu o movimento de câmera em torno da ceramista:
Uma voz para o diálogo
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:
Editar um clipe
Descreva a mudança, diga o que precisa continuar igual e definaduration com a duração do clipe:
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ãoduration é a duração do resultado inteiro: o clipe mais as novas imagens.
"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 comoimage_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:
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:e4-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 esays 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 musicno 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 comowoman.webp e teapot.webp. O prazo de 20 minutos é várias vezes o job mais longo que executamos.
delete_media_on_completion se quiser baixá-lo novamente.