Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Wan - image-to-video - first frame API reference (2.1-2.6)

Última atualização: Oct 27, 2026

O modelo de imagem para vídeo Wan gera um vídeo fluido a partir de uma imagem do primeiro quadro e de um prompt de texto .

Documentos relacionados: Guia do usuário

ObservaçãoO Wan 2.7 - imagem para vídeo oferece suporte a conversão do primeiro quadro para vídeo, do primeiro e último quadros para vídeo e continuação de vídeo. Recomendamos esta versão.

O recurso de imagem para vídeo (baseado no primeiro quadro) para modelos Wan 2,6 e anteriores suporta apenas a conversão do primeiro quadro para vídeo.

Disponibilidade

O modelo, a URL do endpoint e a chave de API devem estar na mesma região. Chamadas entre regiões falham.

  • Selecione um modelo: Confirme a região onde o modelo está disponível.
  • Selecione uma URL: Escolha a URL do endpoint correspondente à região. Há suporte para URLs HTTP e do DashScope SDK.
  • Configure uma chave de API: Obtenha uma chave de API para a região e, em seguida, configure a chave de API nas variáveis de ambiente.
  • Instale o SDK: Para fazer chamadas com o SDK, instale o DashScope SDK.

ObservaçãoO código de exemplo neste tópico destina-se à região de Singapura.

ImportanteO Model Studio lançou domínios específicos por workspace para as regiões China (Pequim) e Singapura. Os novos domínios dedicados oferecem desempenho superior e maior estabilidade para solicitações de inferência. Recomendamos a migração para os novos domínios:

  • China (Pequim): de https://dashscope.aliyuncs.com para https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: de https://dashscope-intl.aliyuncs.com para https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

O {WorkspaceId} é o ID do seu workspace, disponível na página Workspace Details no console do Model Studio. O domínio existente permanece totalmente funcional.

Chamada HTTP

As tarefas de imagem para vídeo usam invocação assíncrona (geralmente de 1 a 5 minutos): criar tarefa -> consultar resultados.

Etapa 1: Criar uma tarefa

Pequim

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Singapura

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

POST https://dashscope-us.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Frankfurt

POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Substitua WorkspaceId pelo seu ID do Workspace.

Singapura

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

POST https://dashscope-us.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Pequim

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Frankfurt

POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis

Substitua WorkspaceId pelo seu ID do workspace.

Observação

  • Após criar a tarefa, use o task_id retornado para consultar o resultado. O task_id é válido por 24 horas. Não crie tarefas duplicadas. Em vez disso, use consultas periódicas (polling) para recuperar o resultado.
  • Para orientações destinadas a iniciantes, consulte Chamar APIs com Postman ou cURL.

Parâmetros da solicitação

Narrativa multi-tomada

Este recurso é suportado apenas pelos modelos da série Wan2,6.

Você pode ativá-lo definindo "prompt_extend": true e "shot_type":"multi".

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
        -H 'X-DashScope-Async: enable' \
        -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
        -H 'Content-Type: application/json' \
        -d '{
        "model": "wan2.6-i2v-flash",
        "input": {
            "prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
            "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png",
            "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
        },
        "parameters": {
            "resolution": "720P",
            "prompt_extend": true,
            "duration": 10,
            "shot_type":"multi"
        }
    }'

Dublagem automática

Este recurso é suportado apenas pelos modelos das séries Wan2,6 e Wan2,5.

Se você não fornecer input.audio_url, o modelo gera automaticamente música de fundo ou efeitos sonoros correspondentes com base no conteúdo do vídeo.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
        -H 'X-DashScope-Async: enable' \
        -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
        -H 'Content-Type: application/json' \
        -d '{
        "model": "wan2.5-i2v-preview",
        "input": {
            "prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
            "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
        },
        "parameters": {
            "resolution": "480P",
            "prompt_extend": true,
            "duration": 10
        }
    }'

Áudio personalizado

Este recurso é suportado apenas pelos modelos das séries Wan2,6 e Wan2,5.

Para especificar uma música de fundo ou narração para o vídeo, passe a URL do seu arquivo de áudio personalizado no parâmetro input.audio_url.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
        -H 'X-DashScope-Async: enable' \
        -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
        -H 'Content-Type: application/json' \
        -d '{
        "model": "wan2.5-i2v-preview",
        "input": {
            "prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
            "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png",
            "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
        },
        "parameters": {
            "resolution": "480P",
            "prompt_extend": true,
            "duration": 10
        }
    }'

Vídeo silencioso

Apenas os seguintes modelos suportam a geração de vídeo silencioso:

  • wan2.6-i2v-flash: Para gerar um vídeo silencioso, defina explicitamente parameters.audio = false.
  • Modelos das séries wan2,2 e wan2.1: Geram vídeos silenciosos por padrão; nenhum parâmetro adicional é necessário.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
        -H 'X-DashScope-Async: enable' \
        -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
        -H 'Content-Type: application/json' \
        -d '{
        "model": "wan2.2-i2v-plus",
        "input": {
            "prompt": "A cat running on the grass",
            "img_url": "https://cdn.translate.alibaba.com/r/wanx-demo-1.png"
        },
        "parameters": {
            "resolution": "480P",
            "prompt_extend": true
        }
    }'

Prompt negativo

Use o parâmetro negative_prompt para impedir que "flores" apareçam no vídeo gerado.

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
        -H 'X-DashScope-Async: enable' \
        -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
        -H 'Content-Type: application/json' \
        -d '{
        "model": "wan2.2-i2v-plus",
        "input": {
            "prompt": "A cat running on the grass",
            "negative_prompt": "flowers",
            "img_url": "https://cdn.translate.alibaba.com/r/wanx-demo-1.png"
        },
        "parameters": {
            "resolution": "480P",
            "prompt_extend": true
        }
    }'
Cabeçalhos

Content-Type string (Obrigatório)

O tipo de conteúdo da solicitação. Deve ser application/json.

Authorization string (Obrigatório)

Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx.

X-DashScope-Async string (Obrigatório)

Ativa o processamento assíncrono. Solicitações HTTP suportam apenas chamadas assíncronas. Deve ser enable.

ImportanteSe este cabeçalho de solicitação estiver ausente, o erro "current user api does not support synchronous calls" será retornado.

Corpo da solicitação

model string (Obrigatório)

Nome do modelo. Modelos disponíveis e preços: preços dos modelos.

Exemplo: wan2.6-i2v-flash.

input object (Obrigatório)

Campos de entrada, incluindo o prompt.

Propriedades

prompt string (Opcional)

Descreve os elementos visuais e características desejados para o vídeo gerado.

Suporta chinês e inglês. Cada caractere conta como um. O texto que exceder o limite será truncado. Limites de comprimento por modelo:

  • Modelos das séries Wan2,6 e Wan2,5: Máximo de 1.500 caracteres.
  • Modelos das séries wan2,2 e wan2.1: Máximo de 800 caracteres.

Exemplo: Um gatinho correndo na grama.

Dicas para escrita de prompts: Guia de Prompts para Texto para Vídeo/Imagem para Vídeo.

negative_prompt string (Opcional)

Descreve o que excluir do vídeo, restringindo a saída.

Suporta chinês e inglês. Máximo de 500 caracteres; textos mais longos são truncados.

Exemplo: baixa resolução, erros, melhor qualidade, baixa qualidade, desfigurado, dedos extras, proporções ruins, etc.

img_url string (Obrigatório)

A URL ou dados codificados em Base64 da imagem inicial.

Restrições de imagem:

  • Formato da imagem: JPEG, JPG, PNG (canal alfa não suportado), BMP ou WEBP.

  • Resolução da imagem: Tanto a largura quanto a altura devem estar dentro de [240, 8000] pixels.

  • Tamanho do arquivo:

    • Modelos das séries Wan2,6 e Wan2,5: Máximo de 20 MB.
    • Modelos das séries wan2,2 e wan2.1: Máximo de 10 MB.

Formatos de entrada suportados:

  1. URL pública:

  2. String de imagem codificada em Base64:

    • Formato de dados: data:{MIME_type};base64,{base64_data}.
    • Exemplo: data:image/png;base64,GDU7MtCZzEbTbmRZ...... (truncado para brevidade).
    • Para detalhes, consulte Imagem de Entrada.

audio_url string (Opcional)

Modelos suportados: Séries Wan2,6 e Wan2,5.

A URL do arquivo de áudio. O modelo gera o vídeo usando este áudio.

Formatos de entrada suportados:

  1. URL pública:

Restrições de áudio:

  • Formato: WAV, MP3.
  • Duração: 3–30s.
  • Tamanho do arquivo: Máximo de 15 MB.
  • Tratamento fora do intervalo: Se a duração do áudio exceder a duration especificada (5 ou 10 segundos), o sistema trunca automaticamente o áudio para os primeiros 5 ou 10 segundos, descartando o restante. Se o áudio for mais curto que a duração do vídeo, o vídeo ficará silencioso após o término do áudio. Por exemplo, se o áudio tiver 3 segundos e a duração do vídeo for de 5 segundos, os primeiros 3 segundos do vídeo de saída terão som e os últimos 2 segundos serão silenciosos.

Exemplo: https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3.

parameters object (Opcional)

Controles para resolução, duração, reescrita inteligente de prompt e marcas d'água.

Propriedades

resolution string (Opcional)

ImportanteA resolução afeta diretamente o custo. Antes de chamar a API, confirme os preços dos modelos.

Especifica a faixa de resolução do vídeo de saída. O modelo dimensiona a saída para uma contagem total de pixels semelhante com base na faixa selecionada. O modelo mantém a proporção da saída o mais próxima possível da imagem de entrada emimg_url. Para detalhes, consulte as Perguntas frequentes.

O valor padrão e os valores de enumeração disponíveis para este parâmetro dependem do parâmetro model, conforme abaixo:

  • wan2.6-i2v-flash: Valores válidos: 720P, 1080P. Valor padrão: 1080P.
  • wan2.6-i2v: Valores válidos: 720P, 1080P. Valor padrão: 1080P.
  • wan2.6-i2v-us: Valores válidos: 720P, 1080P. Valor padrão: 1080P.
  • wan2.5-i2v-preview: Valores válidos: 480P, 720P, 1080P. Valor padrão: 1080P.
  • wan2.2-i2v-flash: Valores válidos: 480P, 720P. Valor padrão: 720P.
  • wan2.2-i2v-plus: Valores válidos: 480P, 1080P. Valor padrão: 1080P.
  • wan2.1-i2v-turbo: Valores válidos: 480P, 720P. Valor padrão: 720P.
  • wan2.1-i2v-plus: Valores válidos: 720P. Valor padrão: 720P.

Exemplo: 1080P.

duration integer (Opcional)

ImportanteA duração afeta diretamente o custo. Antes de chamar a API, confirme os preços dos modelos.

A duração do vídeo de saída, em segundos. Os valores válidos dependem do parâmetro model:

  • wan2.6-i2v-flash: Um inteiro em [2, 15]. Padrão: 5.
  • wan2.6-i2v: Um inteiro em [2, 15]. Padrão: 5.
  • wan2.6-i2v-us: Valores válidos: 5, 10, 15. Padrão: 5.
  • wan2.5-i2v-preview: Valores válidos: 5, 10. Padrão: 5.
  • wan2.2-i2v-plus: Fixo em 5 segundos e não pode ser modificado.
  • wan2.2-i2v-flash: Fixo em 5 segundos e não pode ser modificado.
  • wan2.1-i2v-plus: Fixo em 5 segundos e não pode ser modificado.
  • wan2.1-i2v-turbo: Valores válidos: 3, 4 ou 5. Padrão: 5.

Exemplo: 5.

prompt_extend boolean (Opcional)

Indica se a reescrita de prompt deve ser ativada. Quando ativado, um LLM reescreve o prompt de entrada. Isso melhora a qualidade da geração para prompts mais curtos, mas aumenta o tempo de processamento.

  • true (padrão)
  • false

Exemplo: true.

shot_type string (Opcional)

Modelos suportados: Série Wan2,6.

Especifica o tipo de tomada do vídeo gerado: uma única tomada contínua ou uma sequência de múltiplas tomadas.

Este parâmetro só tem efeito quando "prompt_extend": true.

Prioridade do parâmetro: shot_type > prompt. Por exemplo, se shot_type estiver definido como "single", mesmo que o prompt contenha "gerar um vídeo multi-tomada", o modelo ainda produzirá um vídeo de tomada única.

Valores válidos:

  • single: Valor padrão. Gera um vídeo de tomada única.
  • multi: Gera um vídeo multi-tomada.

Exemplo: single.

ObservaçãoUse este parâmetro quando precisar de controle estrito sobre a estrutura narrativa, como uma única tomada para demonstrações de produtos ou múltiplas tomadas para curtas-metragens.

audio boolean (Opcional)

ImportanteIsso afeta o custo. Vídeos com som e vídeos silenciosos têm preços diferentes. Verifique os preços no console do Model Studio.

Modelo suportado: wan2.6-i2v-flash.

Especifica se deve gerar um vídeo com som.

Prioridade do parâmetro: audio > audio_url. Quando audio=false, a saída ainda será um vídeo silencioso mesmo se uma audio_url for fornecida, e o faturamento será baseado em vídeo silencioso.

Valores válidos:

  • true: Valor padrão. Gera um vídeo com som.
  • false: Gera um vídeo silencioso.

Exemplo: true.

watermark boolean (Opcional)

Especifica se deve adicionar uma marca d'água "AI Generated" no canto inferior direito do vídeo.

  • false: Valor padrão. Nenhuma marca d'água é adicionada.
  • true: Adiciona uma marca d'água.

Exemplo: false.

seedinteger(Opcional)

A semente de número aleatório. Faixa de valores: [0, 2147483647].

Se não especificado, o sistema gera uma. Para melhor reprodutibilidade, use uma semente fixa.

A geração é probabilística. Mesmo com a mesma semente, os resultados podem diferir.

Exemplo: 12345.

Parâmetros de resposta

Resposta bem-sucedida

Salve o task_id para consultar o status e o resultado da tarefa.

{
        "output": {
            "task_status": "PENDING",
            "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
        },
        "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
    }

Resposta de erro

Falha na criação da tarefa. Consulte Códigos de erro.

{
    "code": "InvalidApiKey",
    "message": "No API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

output object

Informações sobre a saída da tarefa.

Propriedades

task_id string

O ID da tarefa. Válido para consultas por 24 horas.

task_status string

O status da tarefa.

Valores de enumeração

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: A tarefa não existe ou seu status é desconhecido.

request_id string

Identificador único da solicitação para rastreamento e solução de problemas.

code string

Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro.

message string

Mensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro.

Etapa 2: Consultar o resultado da tarefa

China (Pequim)

GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Singapura

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

GET https://dashscope-us.aliyuncs.com/api/v1/tasks/{task_id}

Frankfurt

GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Substitua WorkspaceId pelo seu ID do Workspace.

Singapura

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

GET https://dashscope-us.aliyuncs.com/api/v1/tasks/{task_id}

China (Pequim)

GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Frankfurt

GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Substitua WorkspaceId pelo seu ID do Workspace.

Observação

  • Recomendação de polling: A geração de vídeo leva vários minutos. Use um mecanismo de consulta periódica com um intervalo razoável, como 15 segundos.
  • Transição de estado da tarefa: PENDING → RUNNING → SUCCEEDED ou FAILED.
  • Link do resultado: Após o sucesso da tarefa, uma URL de vídeo válida por 24 horas é retornada. Baixe e salve o vídeo em armazenamento permanente, como o OSS.
  • Validade do task_id: 24 horas. Após esse período, as consultas retornam o status da tarefa como UNKNOWN.

Parâmetros da solicitação

Consultar resultado da tarefa

Substitua {task_id} pelo valor task_id retornado pela chamada de API anterior. O task_id é válido para consultas por 24 horas.

curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY"
Cabeçalhos

Authorization string (Obrigatório)

Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx.

Parâmetros de caminho

task_id string (Obrigatório)

O ID da tarefa.

Parâmetros de resposta

Tarefa bem-sucedida

As URLs de vídeo são válidas apenas por 24 horas e depois são removidas automaticamente. Salve os vídeos gerados prontamente.

{
    "request_id": "2ca1c497-f9e0-449d-9a3f-xxxxxx",
    "output": {
        "task_id": "af6efbc0-4bef-4194-8246-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-25 11:07:28.590",
        "scheduled_time": "2025-09-25 11:07:35.349",
        "end_time": "2025-09-25 11:17:11.650",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=xxx"
    },
    "usage": {
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "video_count": 1,
        "SR": 720
    }
}

Tarefa falhou

Quando uma tarefa falha, task_status é FAILED com um código e mensagem de erro. Consulte Códigos de erro.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "The size is not match xxxxxx"
    }
}

Consulta de tarefa expirada

O task_id é válido por 24 horas. Após esse período, as consultas retornam o seguinte erro.

{
        "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
        "output": {
            "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
            "task_status": "UNKNOWN"
        }
    }

outputobject

Os detalhes de saída da tarefa.

Propriedades

task_id string

O ID da tarefa. Válido para consultas por 24 horas.

task_status string

O status da tarefa.

Valores de enumeração

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: A tarefa não existe ou seu status é desconhecido.
Transições de estado durante o polling:
  • PENDING → RUNNING → SUCCEEDED ou FAILED.
  • O status inicial da consulta geralmente é PENDING ou RUNNING.
  • Quando o status muda para SUCCEEDED, a resposta contém a URL do vídeo gerado.
  • Se o status for FAILED, verifique a mensagem de erro e tente novamente a tarefa.

submit_time string

O horário em que a tarefa foi enviada. O horário está em UTC+8 e o formato é YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

O horário em que a tarefa foi executada. O horário está em UTC+8 e o formato é YYYY-MM-DD HH:mm:ss.SSS.

end_time string

O horário em que a tarefa foi concluída. O horário está em UTC+8 e o formato é YYYY-MM-DD HH:mm:ss.SSS.

video_url string

URL do vídeo gerado. Retornada apenas quando task_status é SUCCEEDED.

Válida por 24 horas. O vídeo está no formato MP4 com codificação H.264.

orig_prompt string

O prompt de entrada original, correspondente ao parâmetro de solicitação prompt.

actual_prompt string

Se prompt_extend for true, o sistema reescreve o prompt e este campo contém a versão otimizada.

  • Se prompt_extend=false, este campo não é retornado.
  • Observação: O modelo wan2.6 não retorna este campo, independentemente do valor de prompt_extend.

code string

Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro.

message string

Mensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro.

usage object

Estatísticas de uso da tarefa, contabilizadas apenas para tarefas bem-sucedidas.

Propriedades

Parâmetros retornados pelos modelos da série wan2,6

input_video_duration integer

A duração do vídeo de entrada em segundos. É sempre 0, pois a entrada de vídeo não é suportada atualmente.

output_video_duration integer

Retornado apenas ao usar modelos wan2.6.

A duração do vídeo de saída em segundos. Este valor corresponde a input.duration.

duration integer

A duração total do vídeo, usada para faturamento.

Fórmula de faturamento: duration=input_video_duration+output_video_duration.

SR integer

Retornado apenas ao usar modelos wan2.6. A faixa de resolução do vídeo gerado. Exemplo: 720.

video_count integer

O número de vídeos gerados. Fixo em 1.

audioboolean

Retornado apenas ao usar o modelo wan2.6-i2v-flash. Indica se a saída é um vídeo com áudio.

Parâmetros retornados pelos modelos das séries wan2,2 e wan2,5

duration integer

A duração do vídeo gerado em segundos. Valores possíveis: 5, 10.

Fórmula de faturamento: Custo = Duração do vídeo em segundos × Preço unitário.

SR integer

A resolução do vídeo gerado. Valores possíveis: 480, 720, 1080.

video_count integer

O número de vídeos gerados. Fixo em 1.

Parâmetros retornados pelos modelos da série wan2,1

video_duration integer

A duração do vídeo gerado em segundos. Valores possíveis: 3, 4, 5.

Fórmula de faturamento: Custo = Duração do vídeo em segundos × Preço unitário.

video_ratio string

A proporção do vídeo gerado. Este valor é sempre "standard".

video_count integer

O número de vídeos gerados. Fixo em 1.

request_id string

Identificador único da solicitação para rastreamento e solução de problemas.

Chamadas do DashScope SDK

Os nomes dos parâmetros do SDK são amplamente consistentes com a API HTTP, seguindo as convenções de cada linguagem.

As tarefas de imagem para vídeo geralmente levam de 1 a 5 minutos. O SDK encapsula o processo de chamada HTTP assíncrona e suporta chamadas síncronas e assíncronas.

O tempo de processamento depende da fila de tarefas e do status do serviço.

Python SDK

ImportanteCertifique-se de que sua versão do DashScope Python SDK seja pelo menos 2.0.1 antes de executar o código a seguir.

Versões mais antigas podem acionar erros como "url error, please check url!". Para atualizar, consulte Instalar SDK.

Defina a region de acordo com a região do modelo (passada ao construir o Client; o valor de region varia conforme a região):

Pequim

region="cn-beijing"

Singapura

region="ap-southeast-1"

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

region="us-east-1"

Frankfurt

region="eu-central-1"

Substitua WorkspaceId pelo seu ID do Workspace.

Singapura

region="ap-southeast-1"

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

region="us-east-1"

Pequim

region="cn-beijing"

Frankfurt

region="eu-central-1"

Ao fazer a chamada, substitua WorkspaceId pelo seu ID do Workspace real.

Código de exemplo

Chamada síncrona

Uma chamada síncrona bloqueia até que a geração do vídeo seja concluída. Este exemplo demonstra três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.

Exemplo de solicitação
import base64
import os
import mimetypes
import dashscope
from dashscope.v2 import DashScopeError

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
# Para os endpoints de cada região, consulte https://www.alibabacloud.com/help/model-studio/image-to-video-api-reference
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, defina diretamente a sua API Key do Model Studio: api_key="sk-xxx"
    # Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

# --- Função auxiliar para codificação em Base64 ---
# Formato: data:{MIME_type};base64,{base64_data}
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type or not mime_type.startswith("image/"):
        raise ValueError("Formato de imagem não suportado ou não reconhecido")
    with open(file_path, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
    return f"data:{mime_type};base64,{encoded_string}"

"""
Métodos de entrada de imagem:
A seguir são apresentadas três formas de fornecer uma imagem. Escolha uma.

1. URL pública: ideal para imagens já acessíveis publicamente.
2. Arquivo local: adequado para desenvolvimento e testes locais.
3. Codificação Base64: ideal para imagens privadas ou quando os dados devem ser transmitidos de forma segura.
"""

# [Método 1] Usar uma URL de imagem acessível publicamente
# Exemplo: usar uma URL de imagem pública
img_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"

# [Método 2] Usar um arquivo local (suporta caminhos absolutos e relativos)
# Formato: file:// + caminho do arquivo
# Exemplo (caminho absoluto):
# img_url = "file://" + "/path/to/your/img.png"    # Linux/macOS
# img_url = "file://" + "C:/path/to/your/img.png"  # Windows
# Exemplo (caminho relativo):
# img_url = "file://" + "./img.png"                # Relativo ao diretório do script em execução

# [Método 3] Usar uma imagem codificada em Base64
# img_url = encode_file("./img.png")

# Defina a URL do áudio
audio_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"

def sample_call_i2v():
    print('please wait...')
    # generate é uma chamada de uma etapa (envia a tarefa e aguarda a conclusão) e retorna um Job concluído
    # audio_url / negative_prompt são campos da seção input que não fazem parte da assinatura nomeada e são passados via extra_input
    try:
        job = client.videos.generate(model='wan2.6-i2v-flash',
                                     prompt='A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.',
                                     image_url=img_url,
                                     extra_input={'audio_url': audio_url,
                                                  'negative_prompt': ""},
                                     resolution="720P",
                                     duration=10,
                                     prompt_extend=True,
                                     watermark=False,
                                     seed=12345)
        print(job)
        print("video_url:", job.video_url)
    except DashScopeError as e:
        print(f"Código de status HTTP: {e.status_code}")
        print(f"Código de erro: {e.code}")
        print(f"Mensagem de erro: {e.message}")
        print("Consulte a documentação: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

if __name__ == '__main__':
    sample_call_i2v()
Exemplo de resposta

A video_url é válida por 24 horas. Baixe o vídeo antes que expire.

{
    "status_code": 200,
    "request_id": "2794c7a3-fe8c-4dd4-a1b7-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "c15d5b14-07c4-4af5-b862-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2026-01-22 23:24:46.527",
        "scheduled_time": "2026-01-22 23:24:46.565",
        "end_time": "2026-01-22 23:25:59.978",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "audio": true,
        "SR": 720
    }
}

Chamada assíncrona

Uma chamada assíncrona retorna imediatamente um ID de tarefa. Em seguida, você consulta o resultado periodicamente ou aguarda a conclusão.

Exemplo de solicitação
import os
import dashscope
from dashscope.v2 import DashScopeError

# A configuração abaixo refere-se à região Singapura. Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
# Para os endpoints de cada região, consulte https://www.alibabacloud.com/help/model-studio/image-to-video-api-reference
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, defina diretamente a sua API Key do Model Studio: api_key="sk-xxx"
    # Para obter uma API Key, consulte https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

# Use uma URL de imagem acessível publicamente
img_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"

# Defina a URL do áudio
audio_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"

def sample_async_call_i2v():
    # Chamada assíncrona, que retorna um task_id
    # audio_url / negative_prompt são campos da seção input que não fazem parte da assinatura nomeada e são passados via extra_input
    try:
        job = client.videos.jobs.create(model='wan2.6-i2v-flash',
                                        prompt='A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.',
                                        image_url=img_url,
                                        extra_input={'audio_url': audio_url,
                                                     'negative_prompt': ""},
                                        resolution="720P",
                                        duration=10,
                                        prompt_extend=True,
                                        watermark=False,
                                        seed=12345)
        print(job)
        print("task_id: %s" % job.task_id)
    except DashScopeError as e:
        print(f"Código de status HTTP: {e.status_code}")
        print(f"Código de erro: {e.code}")
        print(f"Mensagem de erro: {e.message}")
        print("Consulte a documentação: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")
        return

    # Consulte as informações da tarefa assíncrona
    try:
        snapshot = client.videos.jobs.fetch(job.task_id)
        print(snapshot.status)
    except DashScopeError as e:
        print(f"Código de status HTTP: {e.status_code}")
        print(f"Código de erro: {e.code}")
        print(f"Mensagem de erro: {e.message}")
        print("Consulte a documentação: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

    # Aguarde a conclusão da tarefa assíncrona (sondagem com backoff exponencial, orçamento total padrão de 24 horas)
    try:
        done = client.videos.jobs.wait(job)
        print(done)
        print(done.video_url)
    except DashScopeError as e:
        print(f"Código de status HTTP: {e.status_code}")
        print(f"Código de erro: {e.code}")
        print(f"Mensagem de erro: {e.message}")
        print("Consulte a documentação: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

if __name__ == '__main__':
    sample_async_call_i2v()
Exemplo de resposta
  1. Resposta de criação da tarefa
{
    "status_code": 200,
    "request_id": "6dc3bf6c-be18-9268-9c27-xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "task_id": "686391d9-7ecf-4290-a8e9-xxxxxx",
        "task_status": "PENDING",
        "video_url": ""
    },
    "usage": null
}
  1. Resposta de consulta da tarefa

    A video_url é válida por 24 horas. Baixe o vídeo antes que expire.

{
    "status_code": 200,
    "request_id": "2794c7a3-fe8c-4dd4-a1b7-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "c15d5b14-07c4-4af5-b862-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2026-01-22 23:24:46.527",
        "scheduled_time": "2026-01-22 23:24:46.565",
        "end_time": "2026-01-22 23:25:59.978",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "audio": true,
        "SR": 720
    }
}

Java SDK

ImportanteCertifique-se de que sua versão do DashScope Java SDK seja pelo menos 2.22.6 antes de executar o código a seguir.

Versões mais antigas podem acionar erros como "url error, please check url!". Para atualizar, consulte Instalar SDK.

Defina o baseHttpApiUrl de acordo com a região do modelo:

Pequim

Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";

Singapura

Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

Constants.baseHttpApiUrl = "https://dashscope-us.aliyuncs.com/api/v1";

Frankfurt

Constants.baseHttpApiUrl = "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";

Substitua WorkspaceId pelo seu ID do Workspace.

Singapura

Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

Substitua WorkspaceId pelo seu ID do Workspace real.

Virgínia

Constants.baseHttpApiUrl = "https://dashscope-us.aliyuncs.com/api/v1";

Pequim

Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";

Frankfurt

Constants.baseHttpApiUrl = "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";

Ao fazer a chamada, substitua WorkspaceId pelo seu ID do Workspace real.

Código de exemplo

Chamada síncrona

Uma chamada síncrona bloqueia até que a geração do vídeo seja concluída. Este exemplo demonstra três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.

Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

public class Image2Video {

    static {
        // Set the endpoint. This example uses the Singapore region. For other regions, see: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If the environment variable is not set, replace the following line with your API key from Model Studio: apiKey="sk-xxx"
    // Get your API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Image input methods: Choose one of the following three.
     *
     * 1. Public URL: Ideal for images that are already publicly accessible.
     * 2. Local file: Suitable for local development and testing.
     * 3. Base64 encoding: Best for private images or when data must be securely transmitted.
     */

    // [Method 1] Public URL
    static String imgUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png";

    // [Method 2] Local file path (file:// + absolute path)
    // static String imgUrl = "file://" + "/your/path/to/img.png";    // Linux/macOS
    // static String imgUrl = "file://" + "C:/your/path/to/img.png";  // Windows

    // [Method 3] Base64 encoding
    // static String imgUrl = Image2Video.encodeFile("/your/path/to/img.png");

    // Set the audio URL
    static String audioUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3";

    public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
        // Set the parameters
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesis vs = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-i2v-flash")
                        .prompt("A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.")
                        .imgUrl(imgUrl)
                        .audioUrl(audioUrl)
                        .duration(10)
                        .parameters(parameters)
                        .resolution("720P")
                        .negativePrompt("")
                        .build();
        System.out.println("please wait...");
        VideoSynthesisResult result = vs.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

     /**
     * Encodes a file into a Base64 string.
     * @param filePath The file path.
     * @return A Base64 string in the format data:{MIME_type};base64,{base64_data}.
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("File does not exist: " + filePath);
        }
        // Detect MIME type
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot detect file type: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Unsupported or unrecognized image format");
        }
        // Read file content and encode
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot read file content: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        try {
            image2video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Exemplo de resposta

A video_url é válida por 24 horas. Baixe o vídeo antes que expire.

{
    "request_id": "87c091bb-7a3c-4904-8501-xxxxxx",
    "output": {
        "task_id": "413ed6e4-5f3a-4f57-8d58-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
        "submit_time": "2026-01-22 23:25:45.729",
        "scheduled_time": "2026-01-22 23:25:45.771",
        "end_time": "2026-01-22 23:26:44.942"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "input_video_duration": 0.0,
        "output_video_duration": 10.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Chamada assíncrona

Uma chamada assíncrona retorna imediatamente um ID de tarefa. Em seguida, você consulta o resultado periodicamente ou aguarda a conclusão.

Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisListResult;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.util.HashMap;
import java.util.Map;

public class Image2Video {

    static {
        // Set the endpoint. This example uses the Singapore region. For other regions, see: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If the environment variable is not set, replace the following line with your API key from Model Studio: apiKey="sk-xxx"
    // Get your API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");
    // Set the input image URL
    static String imgUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png";

    // Set the audio URL
    static String audioUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3";

    public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
        // Set the parameters
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesis vs = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-i2v-flash")
                        .prompt("A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.")
                        .imgUrl(imgUrl)
                        .audioUrl(audioUrl)
                        .duration(10)
                        .parameters(parameters)
                        .resolution("720P")
                        .negativePrompt("")
                        .build();
        // Asynchronous call
        VideoSynthesisResult task = vs.asyncCall(param);
        System.out.println(JsonUtils.toJson(task));
        System.out.println("please wait...");

        // Get the result
        VideoSynthesisResult result = vs.wait(task, apiKey);
        System.out.println(JsonUtils.toJson(result));
    }

    // Get the task list
    public static void listTask() throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        VideoSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    // Get the result of a single task
    public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        VideoSynthesis is = new VideoSynthesis();
        // If DASHSCOPE_API_KEY is set as an environment variable, apiKey can be null.
        VideoSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }

    public static void main(String[] args) {
        try {
            image2video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Exemplo de resposta
  1. Resposta de criação da tarefa
{
    "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
    "output": {
        "task_id": "7277e20e-aa01-4709-xxxxxxxx",
        "task_status": "PENDING"
    }
}
  1. Resposta de consulta da tarefa

    A video_url é válida por 24 horas. Baixe o vídeo antes que expire.

{
    "request_id": "87c091bb-7a3c-4904-8501-xxxxxx",
    "output": {
        "task_id": "413ed6e4-5f3a-4f57-8d58-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
        "submit_time": "2026-01-22 23:25:45.729",
        "scheduled_time": "2026-01-22 23:25:45.771",
        "end_time": "2026-01-22 23:26:44.942"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "input_video_duration": 0.0,
        "output_video_duration": 10.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Limitações

  • Retenção de dados: O task_id e a URL do vídeo são retidos por 24 horas. Após esse período, não é possível consultá-los ou baixá-los.
  • Moderação de conteúdo: Todas as entradas (prompts, imagens) e vídeos de saída estão sujeitos à moderação de conteúdo. Violações resultam em um erro IPInfringementSuspect ou DataInspectionFailed. Códigos de erro.

Códigos de erro

Se uma chamada de modelo retornar uma mensagem de erro, consulte Códigos de erro.

Perguntas frequentes

P: Como gerar um vídeo com uma proporção específica?

R: A imagem do primeiro quadro de entrada (img_url) determina a proporção do vídeo de saída. No entanto, uma proporção exata como 3:4 não é garantida, pois podem ocorrer pequenos desvios.

  • Por que ocorrem desvios?

    O modelo usa a proporção da imagem de entrada como base e a combina com a contagem total de pixels da faixa de resolução selecionada (resolution) para calcular a resolução válida mais próxima. Como a largura e a altura de um vídeo devem ser múltiplos de 16, o modelo ajusta a resolução final adequadamente. Consequentemente, a proporção de saída não é garantida como exatamente 3:4, mas estará muito próxima.

    • Por exemplo, uma imagem de entrada de 750×1000 (proporção 3:4 = 0,75) com resolution definida como "720P" (um alvo de aproximadamente 920.000 pixels totais) produz uma saída de 816×1104 (proporção ≈ 0,739, aproximadamente 900.000 pixels totais).
  • Recomendações:

    • Controle a entrada: Para melhores resultados, use uma imagem de primeiro quadro que já tenha a proporção desejada.
    • Pós-processamento: Se precisar de uma proporção estrita, corte o vídeo ou adicione barras pretas usando uma ferramenta de edição após a geração.

P: Como obter a lista de permissões de domínio de armazenamento de vídeo?

R: Os vídeos gerados pelos modelos são armazenados no OSS. A API retorna uma URL pública temporária. Para configurar uma lista de permissões de firewall para esta URL de download, observe o seguinte: O armazenamento subjacente pode mudar dinamicamente. Este tópico não fornece uma lista fixa de nomes de domínio do OSS para evitar problemas de acesso causados por informações desatualizadas. Se você tiver requisitos de controle de segurança, entre em contato com seu gerente de conta para obter a lista mais recente de nomes de domínio do OSS.