Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Wan2.7 - image generation and editing

Última atualização: Jul 14, 2026

O Wan2.7-Image oferece suporte a texto para imagem, texto para conjunto de imagens, imagem para conjunto de imagens, edição de imagens e geração com referência a múltiplas imagens.

Visão geral do modelo

Modelo

Descrição

Especificações da imagem de saída

wan2.7-image-pro

Wan 2.7 image Pro. Oferece suporte a saída em 4K para geração de texto para imagem (não aplicável a conjuntos de imagens).

Formato da imagem: PNG.

Para resolução e dimensões da imagem, consulte o parâmetro size.

wan2.7-image

Wan 2.7 image. Geração mais rápida.

Nota

Antes de chamar um modelo, verifique a Lista de modelos e preços para confirmar a disponibilidade regional do modelo.

Pré-requisitos

Obtenha uma chave de API e exporte a chave de API como uma variável de ambiente.

Importante

As regiões China (Beijing) e Singapore possuem chaves de API e endpoints de solicitação separados. Eles não podem ser usados de forma intercambiável. Chamadas entre regiões resultam em falhas de autenticação ou erros de service.

HTTP síncrono

Retorna o resultado em uma única solicitação. Recomendado para a maioria dos casos de uso.

Singapore

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

Substitua {WorkspaceId} pelo seu ID do workspace real.

Beijing

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Substitua {WorkspaceId} pelo seu ID do workspace real.

Parâmetros da solicitação

Texto para imagem

O modelo wan2.7-image-pro suporta resolução 4K apenas para geração de texto para imagem. A edição de imagens e a geração de conjuntos de imagens suportam até resolução 2K.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"text": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display"}
                        ]
                    }
                ]
            },
            "parameters": {
                "size": "2K",
                "n": 1,
                "watermark": false,
                "thinking_mode": true
            }
        }'
        

Edição de imagem

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/pjeqdf/car.webp"},
                            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/xsunlm/paint.webp"},
                            {"text": "Spray-paint the graffiti from image 2 onto the car in image 1"}
                        ]
                    }
                ]
            },
            "parameters": {
                "size": "2K",
                "n": 1,
                "watermark": false
            }
        }'
        

Edição interativa

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"image": "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp"},
                            {"image": "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"},
                            {"text": "Place the alarm clock from image 1 into the bounding box of image 2, and blend the scene and lighting naturally."}
                        ]
                    }
                ]
            },
            "parameters": {
                "bbox_list": [[],[[989, 515, 1138, 681]]],
                "size": "2K",
                "n": 1,
                "watermark": false
            }
        }'
        

Geração de conjunto de imagens

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"text": "A cinematic group of images documenting the same stray ginger cat. The features must be consistent throughout. First image: In spring, the ginger cat weaves through blooming cherry blossom trees. Second image: In summer, the ginger cat cools off in the shade on an old street. Third image: In autumn, the ginger cat steps on a ground covered with golden fallen leaves. Fourth image: In winter, the ginger cat walks on the snow, leaving footprints."}
                        ]
                    }
                ]
            },
            "parameters": {
                "enable_sequential": true,
                "n": 4,
                "size": "2K"
            }
        }'
        

Headers

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.

Corpo da solicitação

model string (Obrigatório)

Nome do modelo. Valores válidos: wan2.7-image-pro, wan2.7-image.

input object (Obrigatório)

Objeto de entrada.

Propriedades

messages array (Obrigatório)

Array com o conteúdo da solicitação. Apenas conversas de turno único são suportadas.

Propriedades

role string (Obrigatório)

Função da mensagem. Deve ser user.

content array (Obrigatório)

Array com o conteúdo da mensagem.

Propriedades

text string

Prompt de texto. Suporta chinês e inglês. Máximo de 5.000 caracteres. Cada caractere, letra, número ou símbolo conta como um. Caracteres excedentes são truncados.

image string

URL ou string codificada em Base64 da imagem de entrada.

Limites da imagem:

  • Formato da imagem: JPEG, JPG, PNG (canais alfa não são suportados), BMP, WEBP.

  • Resolução da imagem: A largura e a altura devem estar entre 240 e 8.000 pixels. A proporção deve estar entre 1:8 e 8:1.

  • Tamanho do arquivo: No máximo 20 MB.

Limites de quantidade de imagens:

  • É possível inserir de 0 a 9 imagens.

  • Ao inserir várias imagens, você deve passar múltiplos objetos image no array content. A ordem dos objetos no array determina a ordem das imagens.

Formatos de entrada suportados:

  1. Use uma URL publicamente acessível

    • Suporta protocolos HTTP ou HTTPS.

    • Exemplo: http://wanx.alicdn.com/material/xxx.jpeg.

  2. Passe uma string de imagem codificada em Base64

    • Formato: data:{MIME_type};base64,{base64_data}

    • Exemplo: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ... (Apenas para ilustração. Você deve passar a string completa.)

    • Para mais informações, consulte Métodos de entrada de imagem.

parameters object (Opcional)

Configurações de parâmetros do modelo.

Propriedades

bbox_list List[List[List[int]]] (Opcional)

Área da bounding box para edição interativa.

  • O comprimento da lista deve corresponder ao número de imagens de entrada. Se uma imagem não exigir edição, passe uma lista vazia [] na posição correspondente.

  • Formato das coordenadas: [x1, y1, x2, y2] (x superior esquerdo, y superior esquerdo, x inferior direito, y inferior direito). Use coordenadas absolutas em pixels da imagem original. A coordenada superior esquerda é (0, 0).

  • Uma única imagem suporta no máximo duas bounding boxes.

Exemplo: Entrada de 3 imagens, onde a segunda imagem não possui bounding box e a primeira imagem possui duas bounding boxes:

[
  [[0, 0, 12, 12], [25, 25, 100, 100]],  # Image 1 (2 boxes)
  [],                                    # Image 2 (no box)
  [[10, 10, 50, 50]]                     # Image 3 (1 box)
]

enable_sequential boolean (Opcional)

Controla o modo de geração de imagens:

  • false (padrão): Modo de saída padrão.

  • true: Modo de saída de conjunto de imagens.

size string (Opcional)

Resolução da imagem de saída. Suporta dois métodos mutuamente exclusivos:

Modelo: wan2.7-image-pro

  • Método 1: Especificar a resolução da imagem de saída (Recomendado)

    • Suporta especificações 1K, 2K (padrão) e 4K.

    • Escopo de aplicação:

      • Texto para imagem (sem entrada de imagem, não aplicável a geração de conjuntos de imagens): Suporta 1K, 2K e 4K.

      • Outros cenários: Suporta 1K e 2K.

    • Total de pixels para cada especificação: 1K: 1024×1024, 2K: 2048×2048, 4K: 4096×4096

    • Proporção da imagem:

      • Quando uma imagem é fornecida: A proporção de saída corresponde à imagem de entrada (a última, se múltiplas imagens forem fornecidas) e é escalonada para a resolução selecionada.

      • Quando nenhuma imagem é fornecida: A saída é uma imagem quadrada.

  • Método 2: Especificar a largura e a altura em pixels para a imagem gerada

    • Texto para imagem: O total de pixels deve estar entre 768×768 e 4096×4096. A proporção deve estar entre 1:8 e 8:1.

    • Outros cenários: O total de pixels deve estar entre 768×768 e 2048×2048. A proporção deve estar entre 1:8 e 8:1.

Modelo: wan2.7-image

  • Método 1: Especificar a resolução da imagem de saída (Recomendado)

    • Suporta especificações 1K e 2K (padrão). 4K não é suportado.

  • Método 2: Especificar a largura e a altura em pixels para a imagem gerada

    • Em todos os cenários, o total de pixels deve estar entre 768×768 e 2048×2048. A proporção deve estar entre 1:8 e 8:1.

Os valores de pixels da imagem de saída podem apresentar pequenas diferenças em relação aos valores especificados.

n int (Opcional)

Importante

O parâmetro n afeta diretamente o custo: preço unitário × número de imagens geradas com sucesso. Confirme os preços do modelo antes de fazer a chamada.

  • Quando o modo de conjunto de imagens está desativado, este valor representa o número de imagens a serem geradas. O intervalo é de 1 a 4. O padrão é 1.

  • Quando o modo de conjunto de imagens está ativado, este valor representa o número máximo de imagens a serem geradas. O intervalo é de 1 a 12. O padrão é 12. O número real é determinado pelo modelo e não excederá n.

thinking_mode boolean (Opcional)

Ativa o modo de raciocínio. O padrão é true. Este parâmetro é efetivo apenas quando o modo de conjunto de imagens está desativado e nenhuma imagem é fornecida. Quando ativado, o modelo aprimora suas capacidades de inferência para melhorar a qualidade da saída, mas isso aumenta o tempo de geração.

color_palette array (Opcional)

Tema de cores personalizado. Um array de objetos, cada um com uma cor hexadecimal e uma proporção. Deve incluir de 3 a 10 cores. Recomenda-se 8 cores.

Disponível apenas quando o modo de conjunto de imagens está desativado (enable_sequential=false).

Propriedades

hex string (Obrigatório)

Valor da cor no formato hexadecimal (HEX).

ratio string (Obrigatório)

Porcentagem da cor. Deve ter precisão de duas casas decimais (como "25.00%"). A soma de todos os valores de proporção deve ser 100,00%.

Clique para ver um exemplo de entrada

"color_palette": [
    {
        "hex": "#C2D1E6",
        "ratio": "23.51%"
    },
    {
        "hex": "#CDD8E9",
        "ratio": "20.13%"
    },
    {
        "hex": "#B5C8DB",
        "ratio": "15.88%"
    },
    {
        "hex": "#C0B5B4",
        "ratio": "13.27%"
    },
    {
        "hex": "#DAE0EC",
        "ratio": "10.11%"
    },
    {
        "hex": "#636574",
        "ratio": "8.93%"
    },
    {
        "hex": "#CACAD2",
        "ratio": "5.55%"
    },
    {
        "hex": "#CBD4E4",
        "ratio": "2.62%"
    }
]

watermark bool (Opcional)

Adiciona um rótulo de marca d'água no canto inferior direito da imagem com o texto fixo "AI Generated".

  • false (padrão)

  • true

seed integer (opcional)

Semente de número aleatório. Intervalo válido: [0,2147483647].

Usar a mesma seed gera saídas semelhantes. Se omitido, o algoritmo usa uma semente aleatória.

Nota: A geração de imagens é probabilística. Mesmo com a mesma seed, os resultados podem variar.

Parâmetros da resposta

Execução bem-sucedida da tarefa

Os dados da tarefa (status da tarefa e URLs das imagens) são retidos por apenas 24 horas e depois removidos automaticamente. Salve as imagens geradas prontamente.

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "content": [
                        {
                            "image": "https://dashscope-xxx.oss-xxx.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ],
                    "role": "assistant"
                }
            }
        ],
        "finished": true
    },
    "usage": {
        "image_count": 1,
        "input_tokens": 10867,
        "output_tokens": 2,
        "size": "1488*704",
        "total_tokens": 10869
    },
    "request_id": "71dfc3c6-f796-9972-97e4-bc4efc4faxxx"
}

Execução anormal da tarefa

Se uma tarefa falhar, os campos code e message na resposta indicam a causa do erro. Consulte Códigos de erro.

{
    "request_id": "a4d78a5f-655f-9639-8437-xxxxxx",
    "code": "InvalidParameter",
    "message": "num_images_per_prompt must be 1"
}

output object

Informações de saída da tarefa.

Propriedades

choices array

Conteúdo de saída gerado pelo modelo.

Propriedades

finish_reason string

Motivo pelo qual a tarefa foi interrompida. stop indica conclusão natural.

message object

Mensagem retornada pelo modelo.

Propriedades

role string

Função da mensagem. Sempre assistant.

content array

Propriedades

type string

Valor: image.

image string

URL da imagem gerada. Formato: PNG.

O link é válido por 24 horas. Baixe a imagem prontamente.

finished boolean

Indica se a tarefa foi concluída. Padrão: false.

usage object

Estatísticas de uso da solicitação. Apenas resultados bem-sucedidos são contabilizados.

Propriedades

image_count integer

Número de imagens geradas.

size string

Resolução da imagem gerada. Exemplo: 1376*768.

input_tokens integer

Número de tokens de entrada (não faturado). O faturamento baseia-se no número de imagens.

output_tokens integer

Número de tokens de saída (não faturado). O faturamento baseia-se no número de imagens.

total_tokens integer

Número total de tokens (não faturado). O faturamento baseia-se no número de imagens.

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.

HTTP assíncrono

Ideal para tarefas de longa duração. Envie uma tarefa e consulte periodicamente o status e os resultados.

Etapa 1: Crie uma tarefa para obter o ID da tarefa

Singapore

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

Substitua {WorkspaceId} pelo seu ID do workspace real.

Beijing

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation

Substitua {WorkspaceId} pelo seu ID do workspace real.

Parâmetros da requisição

Texto para imagem

O modelo wan2.7-image-pro suporta resolução 4K apenas para geração de texto para imagem. A edição de imagens e a geração de conjuntos de imagens suportam até resolução 2K.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --header "X-DashScope-Async: enable" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"text": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display"}
                        ]
                    }
                ]
            },
            "parameters": {
                "size": "2K",
                "n": 1,
                "watermark": false,
                "thinking_mode": true
            }
        }'
        

Edição de imagem

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --header "X-DashScope-Async: enable" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/pjeqdf/car.webp"},
                            {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/xsunlm/paint.webp"},
                            {"text": "Spray-paint the graffiti from image 2 onto the car in image 1"}
                        ]
                    }
                ]
            },
            "parameters": {
                "size": "2K",
                "n": 1,
                "watermark": false
            }
        }'
        

Edição interativa

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --header "X-DashScope-Async: enable" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"image": "https://img.alicdn.com/imgextra/i3/O1CN0157XGE51l6iL9441yX_!!6000000004770-49-tps-1104-1472.webp"},
                            {"image": "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"},
                            {"text": "Place the alarm clock from image 1 into the selected area of image 2, and blend the scene and lighting naturally."}
                        ]
                    }
                ]
            },
            "parameters": {
                "bbox_list": [[],[[989, 515, 1138, 681]]],
                "size": "2K",
                "n": 1,
                "watermark": false
            }
        }'
        

Geração de conjunto de imagens

O modelo wan2.7-image-pro suporta até resolução 2K para geração de conjuntos de imagens.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
        --header 'Content-Type: application/json' \
        --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
        --header "X-DashScope-Async: enable" \
        --data '{
            "model": "wan2.7-image-pro",
            "input": {
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {"text": "A cinematic photo set featuring the same stray orange cat, whose features must remain consistent across all images. First image: In spring, the cat weaves through blooming cherry blossom trees. Second image: In summer, the cat cools off in the shade on an old street. Third image: In autumn, the cat steps on a ground covered in golden fallen leaves. Fourth image: In winter, the cat walks on the snow, leaving footprints."}
                        ]
                    }
                ]
            },
            "parameters": {
                "enable_sequential": true,
                "n": 4,
                "size": "2K"
            }
        }'
        

Headers

Content-Type string (Obrigatório)

Tipo de conteúdo da requisição. Deve ser application/json.

Authorization string (Obrigatório)

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

X-DashScope-Async string (Obrigatório)

Ativa o processamento assíncrono. Requisições HTTP suportam apenas chamadas assíncronas. O valor deve ser enable.

Importante

Se este header de requisição estiver ausente, o erro "current user api does not support synchronous calls" será retornado.

Corpo da requisição

model string (Obrigatório)

Nome do modelo. Valores válidos: wan2.7-image-pro, wan2.7-image.

input object (Obrigatório)

Objeto de entrada.

Propriedades

messages array (Obrigatório)

Array com o conteúdo da requisição. Apenas conversas de turno único são suportadas.

Propriedades

role string (Obrigatório)

Função da mensagem. Deve ser user.

content array (Obrigatório)

Array com o conteúdo da mensagem.

Propriedades

text string

Prompt de texto. Suporta chinês e inglês. Máximo de 5.000 caracteres. Cada caractere, letra, número ou símbolo conta como um. Caracteres excedentes serão truncados.

image string

URL ou string codificada em Base64 da imagem de entrada.

Limites de imagem:

  • Formato da imagem: JPEG, JPG, PNG (canais alfa não são suportados), BMP, WEBP.

  • Resolução da imagem: Largura e altura devem estar entre 240 e 8.000 pixels. A proporção deve estar entre 1:8 e 8:1.

  • Tamanho do arquivo: No máximo 20 MB.

Limites de quantidade de imagens:

  • É possível inserir de 0 a 9 imagens.

  • Ao inserir múltiplas imagens, passe vários objetos image no array content. A ordem dos objetos no array determina a ordem das imagens.

Formatos de entrada suportados:

  1. Use uma URL publicamente acessível

    • Suporta protocolos HTTP ou HTTPS.

    • Exemplo: http://wanx.alicdn.com/material/xxx.jpeg.

  2. Passe uma string de imagem codificada em Base64

    • Formato: data:{MIME_type};base64,{base64_data}

    • Exemplo: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ... (Apenas para ilustração. Você deve passar a string completa.)

    • Para mais informações, consulte Métodos de entrada de imagem.

parameters object (Opcional)

Configurações de parâmetros do modelo.

Propriedades

bbox_list List[List[List[int]]] (Opcional)

Área da bounding box para edição interativa.

  • O tamanho da lista deve corresponder ao número de imagens de entrada. Se uma imagem não exigir edição, passe uma lista vazia [] na posição correspondente.

  • Formato das coordenadas: [x1, y1, x2, y2] (x superior esquerdo, y superior esquerdo, x inferior direito, y inferior direito). Use coordenadas absolutas em pixels da imagem original. A coordenada superior esquerda é (0, 0).

  • Uma única imagem suporta no máximo duas bounding boxes.

Exemplo: Entrada de 3 imagens, onde a segunda imagem não possui bounding box e a primeira imagem possui duas bounding boxes:

[
  [[0, 0, 12, 12], [25, 25, 100, 100]],  # Image 1 (2 boxes)
  [],                                    # Image 2 (no box)
  [[10, 10, 50, 50]]                     # Image 3 (1 box)
]

enable_sequential boolean (Opcional)

Controla o modo de geração de imagem:

  • false (padrão): Modo de saída padrão.

  • true: Modo de saída de conjunto de imagens.

size string (Opcional)

Resolução da imagem de saída. Suporta dois métodos mutuamente exclusivos:

Modelo: wan2.7-image-pro

  • Método 1: Especifique a resolução da imagem de saída (Recomendado)

    • Suporta especificações 1K, 2K (padrão) e 4K.

    • Escopo de aplicação:

      • Texto para imagem (sem entrada de imagem, exceto para geração de conjunto de imagens): Suporta 1K, 2K e 4K.

      • Outros cenários: Suporta 1K e 2K.

    • Total de pixels para cada especificação: 1K: 1024×1024, 2K: 2048×2048, 4K: 4096×4096

    • Proporção da imagem:

      • Quando uma imagem é inserida: A proporção de saída corresponde à imagem de entrada (a última, se múltiplas imagens forem inseridas) e é escalonada para a resolução selecionada.

      • Quando nenhuma imagem é inserida: A saída é uma imagem quadrada.

  • Método 2: Especifique a largura e a altura em pixels para a imagem gerada

    • Texto para imagem: O total de pixels deve estar entre 768×768 e 4096×4096. A proporção deve estar entre 1:8 e 8:1.

    • Outros cenários: O total de pixels deve estar entre 768×768 e 2048×2048. A proporção deve estar entre 1:8 e 8:1.

Modelo: wan2.7-image

  • Método 1: Especifique a resolução da imagem de saída (Recomendado)

    • Suporta especificações 1K e 2K (padrão). 4K não é suportado.

  • Método 2: Especifique a largura e a altura em pixels para a imagem gerada

    • Em todos os cenários, o total de pixels deve estar entre 768×768 e 2048×2048. A proporção deve estar entre 1:8 e 8:1.

Os valores de pixels da imagem de saída podem ter pequenas diferenças em relação aos valores especificados.

n int (Opcional)

Importante

O parâmetro n afeta diretamente o custo: preço unitário × número de imagens geradas com sucesso. Confirme o preço do modelo antes de chamar a API.

  • Quando o modo de conjunto de imagens está desativado, este valor representa o número de imagens a serem geradas. O intervalo é de 1 a 4. O padrão é 1.

  • Quando o modo de conjunto de imagens está ativado, este valor representa o número máximo de imagens a serem geradas. O intervalo é de 1 a 12. O padrão é 12. O número real é determinado pelo modelo e não excederá n.

thinking_mode boolean (Opcional)

Ativa o modo de raciocínio. O padrão é true. Este parâmetro é efetivo apenas quando o modo de conjunto de imagens está desativado e nenhuma imagem é inserida. Quando ativado, o modelo aprimora suas capacidades de inferência para melhorar a qualidade da saída, mas isso aumenta o tempo de geração.

color_palette array (Opcional)

Tema de cores personalizado. Um array de objetos, cada um com uma cor hexadecimal e uma proporção. Deve incluir de 3 a 10 cores. Recomenda-se 8 cores.

Disponível apenas quando o modo de conjunto de imagens está desativado (enable_sequential=false).

Propriedades

hex string (Obrigatório)

Valor da cor em formato hexadecimal (HEX).

ratio string (Obrigatório)

Porcentagem da cor. Deve ter precisão de duas casas decimais (como "25.00%"). A soma de todos os valores de proporção deve ser 100,00%.

Clique para ver um exemplo de entrada

"color_palette": [
    {
        "hex": "#C2D1E6",
        "ratio": "23.51%"
    },
    {
        "hex": "#CDD8E9",
        "ratio": "20.13%"
    },
    {
        "hex": "#B5C8DB",
        "ratio": "15.88%"
    },
    {
        "hex": "#C0B5B4",
        "ratio": "13.27%"
    },
    {
        "hex": "#DAE0EC",
        "ratio": "10.11%"
    },
    {
        "hex": "#636574",
        "ratio": "8.93%"
    },
    {
        "hex": "#CACAD2",
        "ratio": "5.55%"
    },
    {
        "hex": "#CBD4E4",
        "ratio": "2.62%"
    }
]

watermark bool (Opcional)

Adiciona um rótulo de marca d'água no canto inferior direito da imagem com o texto fixo "AI Generated".

  • false (padrão)

  • true

seed integer (opcional)

Semente de número aleatório. Intervalo válido: [0,2147483647].

Usar a mesma seed gera saídas semelhantes. Se omitido, o algoritmo usa uma semente aleatória.

Nota: A geração de imagens é probabilística. Mesmo com a mesma seed, os resultados podem variar.

Parâmetros da resposta

Resposta de sucesso

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 de saída da tarefa.

Propriedades

task_id string

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

task_status string

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 requisição para rastreamento e solução de problemas.

code string

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

message string

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

Etapa 2: Consultar o resultado pelo ID da tarefa

Singapore

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

Beijing

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Parâmetros da requisição

Consultar resultado da tarefa

Substitua {task_id} pelo valor de task_id retornado na chamada de API anterior. O task_id permanece 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"
Headers

Authorization string (Obrigatório)

Autentica a requisiçã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 da resposta

Execução bem-sucedida da tarefa

Os dados da tarefa (status e URLs das imagens) são mantidos por apenas 24 horas e depois removidos automaticamente. Salve as imagens geradas imediatamente.

{
    "request_id": "810fa5f5-334c-91f3-aaa4-ed89cf0caxxx",
    "output": {
        "task_id": "a81ee7cb-014c-473d-b842-76e98311cxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-03-26 17:16:01.663",
        "scheduled_time": "2026-03-26 17:16:01.716",
        "end_time": "2026-03-26 17:16:22.961",
        "finished": true,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-xxx.oss-xxx.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "size": "2976*1408",
        "total_tokens": 11017,
        "image_count": 1,
        "output_tokens": 2,
        "input_tokens": 11015
    }
}

Execução anormal da tarefa

Se uma tarefa falhar, os campos code e message na resposta indicam a causa do erro. Consulte Códigos de erro.

{
    "request_id": "a4d78a5f-655f-9639-8437-xxxxxx",
    "code": "InvalidParameter",
    "message": "num_images_per_prompt must be 1"
}

output object

Informações 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 a consulta:

  • PENDING → RUNNING → SUCCEEDED ou FAILED.

  • Geralmente, o status inicial da consulta é PENDING ou RUNNING.

  • Quando o status muda para SUCCEEDED, a resposta contém a URL da imagem gerada.

  • Se o status for FAILED, verifique a mensagem de erro e tente executar a tarefa novamente.

submit_time string

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

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

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.

finished boolean

Indica se a tarefa terminou. Padrão: false.

choices array

O conteúdo de saída gerado pelo modelo.

Propriedades

finish_reason string

O motivo pelo qual a tarefa parou. stop indica conclusão natural.

message object

A mensagem retornada pelo modelo.

Propriedades

role string

A função da mensagem. Sempre assistant.

content array

Propriedades

type string

Valores: text, image.

text string

O texto gerado.

image string

A URL da imagem gerada. Formato: PNG.

O link é válido por 24 horas. Baixe a imagem imediatamente.

usage object

Estatísticas de uso da requisição. Apenas resultados bem-sucedidos são contabilizados.

Propriedades

image_count integer

Quantidade de imagens geradas.

size string

Resolução da imagem gerada. Exemplo: 1376*768.

input_tokens integer

Número de tokens de entrada (não faturados). O faturamento baseia-se na quantidade de imagens.

output_tokens integer

Número de tokens de saída (não faturados). O faturamento baseia-se na quantidade de imagens.

total_tokens integer

Número total de tokens (não faturados). O faturamento baseia-se na quantidade de imagens.

request_id string

Identificador exclusivo da requisição para rastreamento e solução de problemas.

code string

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

message string

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

SDK do Python

Os nomes dos parâmetros do SDK são praticamente idênticos aos da API HTTP.

Como as tarefas de geração de imagens podem levar tempo, o SDK encapsula o fluxo de trabalho assíncrono via HTTP. Tanto chamadas síncronas quanto assíncronas são suportadas.

A duração da tarefa depende do tamanho da fila e do status do service.
Importante

Certifique-se de que sua versão do DashScope Python SDK seja 1.25.15 ou posterior. Para atualizar, consulte Instalar SDK.

Tanto base_url quanto a chave de API são específicas da região. O exemplo abaixo utiliza a região Singapore:

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.

Singapore

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

Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.

Singapore

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

Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.

Edição de imagens

Chamada síncrona

Exemplo de requisição
import os
import base64
import mimetypes
import urllib.request
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message

# The following base_url is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"

# If you have not configured environment variables, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API key varies by region. To obtain an API key, visit: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# --- Base64 encoding function ---
# The Base64 encoding format is 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("Unsupported or unrecognized image format")
    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}"

"""
Image input methods:
The following are three methods for image input. You need to choose only one.
1. Use a public URL: This method is suitable for publicly accessible images.
2. Use a local file: This method is suitable for local development and testing.
3. Use Base64 encoding: This method is suitable for private images or scenarios that require encrypted transmission.
"""
# [Method 1] Use a public image URL
image_1 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/pjeqdf/car.webp"
image_2 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/xsunlm/paint.webp"

# [Method 2] Use a local file (supports absolute and relative paths)
# image_1 = "file:///path/to/your/car.png"
# image_2 = "file:///path/to/your/paint.png"

# [Method 3] Use a Base64-encoded image
# image_1 = encode_file("/path/to/your/car.png")
# image_2 = encode_file("/path/to/your/paint.png")

message = Message(
    role="user",
    content=[
        {"text": "Spray the graffiti from image 2 onto the car in image 1"},
        {"image": image_1},
        {"image": image_2},
    ],
)
print("----sync call, please wait a moment----")
rsp = ImageGeneration.call(
    model="wan2.7-image-pro",
    api_key=api_key,
    messages=[message],
    watermark=False,
    n=1,
    size="2K",  # wan2.7-image-pro supports 4K resolution only for text-to-image generation. Image editing and multi-image generation support up to 2K resolution.
)

# Extract the result image URL and save the image to a local file.
if rsp.status_code == 200:
    for i, choice in enumerate(rsp.output.choices):
        for j, content in enumerate(choice["message"]["content"]):
            if content.get("type") == "image":
                image_url = content["image"]
                file_name = f"output_{i}_{j}.png"
                # The result URL is valid for 24 hours. Please download it promptly.
                urllib.request.urlretrieve(image_url, file_name)
                print(f"Image saved to {file_name}")
else:
    print(f"Failed: status_code={rsp.status_code}, message={rsp.message}")
Exemplo de resposta
A URL é válida por 24 horas. Baixe a imagem imediatamente.
{
    "status_code": 200,
    "request_id": "81d868c6-6ce1-92d8-a90d-d2ee71xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "audio": null,
        "finished": true
    },
    "usage": {
        "input_tokens": 18790,
        "output_tokens": 2,
        "characters": 0,
        "image_count": 1,
        "size": "2985*1405",
        "total_tokens": 18792
    }
}

Chamada assíncrona

Exemplo de requisição
import os
import base64
import mimetypes
import urllib.request
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message
from http import HTTPStatus

# The following base_url is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"

# If you have not configured environment variables, replace the following line with your Model Studio API key: api_key="sk-xxx"
# The API key varies by region. To obtain an API key, visit https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# --- Base64 encoding function ---
# The Base64 encoding format is 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("Unsupported or unrecognized image format.")
    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}"

"""
Image input methods:
Three image input methods are provided below. Choose one.
1. Use a public URL - suitable for publicly accessible images.
2. Use a local file - suitable for local development and testing.
3. Use Base64 encoding - suitable for private images or scenarios that require encrypted transmission.
"""
# [Method 1] Use a public image URL
image_1 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/pjeqdf/car.webp"
image_2 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/xsunlm/paint.webp"

# [Method 2] Use a local file (supports absolute and relative paths)
# image_1 = "file:///path/to/your/car.png"
# image_2 = "file:///path/to/your/paint.png"

# [Method 3] Use a Base64-encoded image
# image_1 = encode_file("/path/to/your/car.png")
# image_2 = encode_file("/path/to/your/paint.png")

# Create an asynchronous task.
def create_async_task():
    print("Creating async task...")
    message = Message(
        role="user",
        content=[
            {"text": "Spray the graffiti from image 2 onto the car in image 1."},
            {"image": image_1},
            {"image": image_2},
        ],
    )
    response = ImageGeneration.async_call(
        model="wan2.7-image-pro",
        api_key=api_key,
        messages=[message],
        watermark=False,
        n=1,
        size="2K",  # wan2.7-image-pro supports 4K resolution only for text-to-image generation scenarios. Image editing and collage generation support a maximum resolution of 2K.
    )

    if response.status_code == 200:
        print("Task created successfully:", response)
        return response
    else:
        raise Exception(f"Failed to create task: {response.code} - {response.message}")

# Wait for the task to complete.
def wait_for_completion(task_response):
    print("Waiting for task completion...")
    status = ImageGeneration.wait(task=task_response, api_key=api_key)

    if status.output.task_status == "SUCCEEDED":
        print("Task succeeded!")
        # Extract the result image URL and save the image to a local file.
        for i, choice in enumerate(status.output.choices):
            for j, content in enumerate(choice["message"]["content"]):
                if content.get("type") == "image":
                    image_url = content["image"]
                    file_name = f"output_{i}_{j}.png"
                    # The result URL is valid for 24 hours. Download the image in a timely manner.
                    urllib.request.urlretrieve(image_url, file_name)
                    print(f"Image saved to {file_name}")
    else:
        raise Exception(f"Task failed with status: {status.output.task_status}")

# Obtain information about the asynchronous task.
def fetch_task_status(task):
    print("Fetching task status...")
    status = ImageGeneration.fetch(task=task, api_key=api_key)

    if status.status_code == HTTPStatus.OK:
        print("Task status:", status.output.task_status)
        print("Response details:", status)
    else:
        print(f"Failed to fetch status: {status.code} - {status.message}")

# Cancel the asynchronous task.
def cancel_task(task):
    print("Canceling task...")
    response = ImageGeneration.cancel(task=task, api_key=api_key)

    if response.status_code == HTTPStatus.OK:
        print("Task canceled successfully:", response.output.task_status)
    else:
        print(f"Failed to cancel task: {response.code} - {response.message}")

# Main execution flow.
if __name__ == "__main__":
    task = create_async_task()
    wait_for_completion(task)
Exemplo de resposta
  1. Exemplo de resposta ao criar uma tarefa

    {
        "status_code": 200,
        "request_id": "4fb3050f-de57-4a24-84ff-e37ee5xxxxxx",
        "code": "",
        "message": "",
        "output": {
            "text": null,
            "finish_reason": null,
            "choices": null,
            "audio": null,
            "task_id": "127ec645-118f-4884-955d-0eba8dxxxxxx",
            "task_status": "PENDING"
        },
        "usage": {
            "input_tokens": 0,
            "output_tokens": 0,
            "characters": 0
        }
    }
  2. Exemplo de resposta ao consultar o resultado de uma tarefa

    A URL é válida por 24 horas. Baixe a imagem imediatamente.
    {
        "status_code": 200,
        "request_id": "3b99aae5-d26f-9059-8dd0-ee9ca4804xxx",
        "code": null,
        "message": "",
        "output": {
            "text": null,
            "finish_reason": null,
            "choices": [
                {
                    "finish_reason": "stop",
                    "message": {
                        "role": "assistant",
                        "content": [
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            }
                        ]
                    }
                }
            ],
            "audio": null,
            "task_id": "127ec645-118f-4884-955d-0eba8dxxxxxx",
            "task_status": "SUCCEEDED",
            "submit_time": "2026-03-31 22:58:47.646",
            "scheduled_time": "2026-03-31 22:58:47.683",
            "end_time": "2026-03-31 22:58:59.642",
            "finished": true
        },
        "usage": {
            "input_tokens": 18711,
            "output_tokens": 2,
            "characters": 0,
            "size": "2985*1405",
            "total_tokens": 18713,
            "image_count": 1
        }
    }

Instruções

  1. Leia o conteúdo em inglês para entender O QUE precisa ser comunicado

  2. Escreva o português brasileiro DO ZERO — esqueça a estrutura das frases em inglês

  3. Preserve toda a formatação markdown, blocos de código, links e imagens exatamente como estão

  4. Tags xref (<a data-tag="xref" ...>texto</a>) — preserve a tag INTEIRA com todos os atributos na ordem e caixa originais, traduza APENAS o texto visível entre > e

  5. Aplique todas as regras específicas do idioma rigorosamente

  6. Aplique as regras de stopwords com tolerância zero

  7. Use o modo imperativo em etapas numeradas e listas de procedimentos

  8. Garanta consistência terminológica — mesmo termo = mesma tradução em todo o documento

  9. Varie os inícios de frase em listas/tabelas — nenhum início repetido mais de 3 vezes

  10. Retorne APENAS o documento markdown em português brasileiro, sem explicações

    Geração de conjunto de imagens

    Chamada síncrona

    Exemplo de solicitação
    import os
    import base64
    import mimetypes
    import urllib.request
    import dashscope
    from dashscope.aigc.image_generation import ImageGeneration
    from dashscope.api_entities.dashscope_response import Message
    
    # The following base_url is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
    dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
    
    # If you have not configured the environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx"
    # The API key varies by region. To obtain an API key, visit: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key = os.getenv("DASHSCOPE_API_KEY")
    
    # --- Base64 encoding function ---
    # The Base64 encoding format is 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("Unsupported or unrecognized image format")
        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}"
    
    """
    Description of image input methods (for image-to-image sequence generation):
    Choose one of the following three image input methods:
    1. Use a public URL - Suitable for publicly accessible images.
    2. Use a local file - Suitable for local development and testing.
    3. Use Base64 encoding - Suitable for private images or scenarios that require encrypted transmission.
    """
    # [Method 1] Use a public image URL
    # image_1 = "https://img.alicdn.com/imgextra/i4/O1CN01IM44WN23dq5uY1yla_!!6000000007279-49-tps-1024-1024.webp"
    
    # [Method 2] Use a local file (supports both absolute and relative paths)
    # image_1 = "file:///path/to/your/image.png"
    
    # [Method 3] Use a Base64-encoded image
    # image_1 = encode_file("/path/to/your/image.png")
    
    message = Message(
        role="user",
        content=[
            {
                "text": "A cinematic image sequence featuring the same stray orange cat, whose features must be consistent across all images. First image: In spring, the orange cat weaves through blooming cherry blossom trees. Second image: In summer, the orange cat cools off in the shade of a tree on an old street. Third image: In autumn, the orange cat walks on a carpet of golden fallen leaves. Fourth image: In winter, the orange cat leaves footprints as it walks on the snow."
            }
            # For image-to-image sequence generation: Uncomment the following lines and comment out the plain text above.
            # {"text": "Generate a four-seasons image sequence based on the style of the reference image"},
            # {"image": image_1}
        ],
    )
    
    print("----sync call, please wait a moment----")
    rsp = ImageGeneration.call(
        model="wan2.7-image-pro",
        api_key=api_key,
        messages=[message],
        enable_sequential=True,
        n=4,
        size="2K",  # wan2.7-image-pro supports 4K resolution only in text-to-image scenarios. Image editing and image sequence generation support a maximum resolution of 2K.
    )
    
    # Extract the resulting image URLs and save the images locally.
    if rsp.status_code == 200:
        for i, choice in enumerate(rsp.output.choices):
            for j, content in enumerate(choice["message"]["content"]):
                if content.get("type") == "image":
                    image_url = content["image"]
                    file_name = f"output_{i}_{j}.png"
                    # The result URL is valid for 24 hours. Download the image promptly.
                    urllib.request.urlretrieve(image_url, file_name)
                    print(f"Image saved to {file_name}")
    else:
        print(f"Failed: status_code={rsp.status_code}, message={rsp.message}")
    
    Exemplo de resposta
    A URL tem validade de 24 horas. Baixe a imagem prontamente.
    {
        "status_code": 200,
        "request_id": "56e318fd-ed60-99e8-8ca1-cdef25ca4xxx",
        "code": "",
        "message": "",
        "output": {
            "text": null,
            "finish_reason": null,
            "choices": [
                {
                    "finish_reason": "stop",
                    "message": {
                        "role": "assistant",
                        "content": [
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            },
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            },
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            },
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            }
                        ]
                    }
                }
            ],
            "audio": null,
            "finished": true
        },
        "usage": {
            "input_tokens": 720,
            "output_tokens": 11,
            "characters": 0,
            "image_count": 4,
            "size": "2048*2048",
            "total_tokens": 731
        }
    }

    Chamada assíncrona

    Exemplo de solicitação
    import os
    import base64
    import mimetypes
    import urllib.request
    import dashscope
    from dashscope.aigc.image_generation import ImageGeneration
    from dashscope.api_entities.dashscope_response import Message
    
    # The following base_url is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
    dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
    
    # If you have not configured the DASHSCOPE_API_KEY environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx"
    # The API key varies by region. To obtain an API key, visit: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key = os.getenv("DASHSCOPE_API_KEY")
    
    # --- Base64 encoding function ---
    # The Base64 data URI scheme is 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("Unsupported or unrecognized image format")
        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}"
    
    """
    Description of image input methods (for image-to-image sequence generation):
    The following three image input methods are provided. Choose one of them.
    1. Use a public URL: Suitable for images that are publicly accessible.
    2. Use a local file: Suitable for local development and testing.
    3. Use Base64 encoding: Suitable for private images or scenarios that require encrypted transmission.
    """
    # [Method 1] Use a public image URL
    # image_1 = "https://img.alicdn.com/imgextra/i4/O1CN01IM44WN23dq5uY1yla_!!6000000007279-49-tps-1024-1024.webp"
    
    # [Method 2] Use a local file (absolute and relative paths are supported)
    # image_1 = "file:///path/to/your/image.png"
    
    # [Method 3] Use a Base64-encoded image
    # image_1 = encode_file("/path/to/your/image.png")
    
    def main():
        message = Message(
            role="user",
            content=[
                {
                    "text": "A cinematic sequence of images documenting the same stray orange cat, whose features must remain consistent across all images. Image 1: In spring, the cat weaves through blooming cherry blossom trees. Image 2: In summer, the cat cools off in the shade of trees on an old street. Image 3: In autumn, the cat steps on a carpet of golden fallen leaves. Image 4: In winter, the cat walks on the snow, leaving footprints."
                }
                # Image-to-image sequence generation scenario: Uncomment the following lines and comment out the plain text above.
                # {"text": "Generate a sequence of four seasonal images based on the style of the reference image."},
                # {"image": image_1}
            ],
        )
    
        # Submit an asynchronous task
        print("Submitting an asynchronous task...")
        response = ImageGeneration.async_call(
            model="wan2.7-image-pro",
            api_key=api_key,
            messages=[message],
            enable_sequential=True,
            n=4,
            size="2K",  # wan2.7-image-pro supports 4K resolution only in text-to-image scenarios. Image editing and image sequence generation support a maximum resolution of 2K.
        )
    
        if response.status_code == 200:
            print(f"Task submitted successfully. Task ID: {response.output.task_id}")
    
            # Wait for the task to complete
            status = ImageGeneration.wait(task=response, api_key=api_key)
    
            if status.output.task_status == "SUCCEEDED":
                print("Task completed!")
                # Extract the result image URLs and save them to a local device.
                for i, choice in enumerate(status.output.choices):
                    for j, content in enumerate(choice["message"]["content"]):
                        if content.get("type") == "image":
                            image_url = content["image"]
                            file_name = f"output_{i}_{j}.png"
                            # The result URLs are valid for 24 hours. Download the images in a timely manner.
                            urllib.request.urlretrieve(image_url, file_name)
                            print(f"Image saved to {file_name}")
            else:
                print(f"Task failed. Status: {status.output.task_status}")
        else:
            print(f"Failed to create the task: {response.code} - {response.message}")
    
    if __name__ == "__main__":
        try:
            main()
        except Exception as e:
            print(f"Error: {e}")
    
    Exemplo de resposta
    1. Exemplo de resposta para criação de tarefa

      {
          "status_code": 200,
          "request_id": "4fb3050f-de57-4a24-84ff-e37ee5xxxxxx",
          "code": "",
          "message": "",
          "output": {
              "text": null,
              "finish_reason": null,
              "choices": null,
              "audio": null,
              "task_id": "77093787-a217-4c29-9cd4-ca7b5ac86xxx",
              "task_status": "PENDING"
          },
          "usage": {
              "input_tokens": 0,
              "output_tokens": 0,
              "characters": 0
          }
      }
    2. Exemplo de resposta para consulta de resultado de tarefa

      A URL tem validade de 24 horas. Baixe a imagem prontamente.
      {
          "status_code": 200,
          "request_id": "56e318fd-ed60-99e8-8ca1-cdef25ca4xxx",
          "code": "",
          "message": "",
          "output": {
              "text": null,
              "finish_reason": null,
              "choices": [
                  {
                      "finish_reason": "stop",
                      "message": {
                          "role": "assistant",
                          "content": [
                              {
                                  "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                  "type": "image"
                              },
                              {
                                  "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                  "type": "image"
                              },
                              {
                                  "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                  "type": "image"
                              },
                              {
                                  "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                  "type": "image"
                              }
                          ]
                      }
                  }
              ],
              "audio": null,
              "task_id": "77093787-a217-4c29-9cd4-ca7b5ac86xxx",
              "task_status": "SUCCEEDED",
              "submit_time": "2026-03-31 23:04:46.166",
              "scheduled_time": "2026-03-31 23:04:46.208",
              "end_time": "2026-03-31 23:05:11.664",
              "finished": true
          },
          "usage": {
              "input_tokens": 720,
              "output_tokens": 11,
              "characters": 0,
              "size": "2048*2048",
              "total_tokens": 731,
              "image_count": 4
          }
      }

Java SDK

Os nomes dos parâmetros do SDK são amplamente consistentes com os da HTTP API.

Como as tarefas de geração de imagens podem levar tempo, o SDK encapsula o fluxo de trabalho assíncrono via HTTP. Tanto chamadas síncronas quanto assíncronas são suportadas.

Importante

Certifique-se de que sua versão do DashScope Java SDK seja 2.22.13 ou posterior.

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.

Singapore

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

Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.

Singapore

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

Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.

Edição de imagem

Chamada síncrona

Exemplo de solicitação
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * wan2.7-image-pro Image Editing - Synchronous Call Example
 */
public class Main {

    static {
        // The following URL is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If you have not configured an environment variable, replace the following line with your Model Studio API key: apiKey="sk-xxx"
    // The API key varies by region. To obtain an API key, visit https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    // --- Base64 encoding function ---
    // Base64 encoding format: data:{MIME_type};base64,{base64_data}
    public static String encodeFile(String filePath) throws IOException {
        byte[] fileContent = Files.readAllBytes(Paths.get(filePath));
        String base64String = Base64.getEncoder().encodeToString(fileContent);
        String mimeType = Files.probeContentType(Paths.get(filePath));
        return "data:" + mimeType + ";base64," + base64String;
    }

    public static void basicCall() throws ApiException, NoApiKeyException, UploadFileException, IOException {
        /*
         * Description of image input methods:
         * Three image input methods are provided below. Select one.
         * 1. Use a public URL: Suitable for publicly accessible images.
         * 2. Use a local file: Suitable for local development and testing.
         * 3. Use Base64 encoding: Suitable for private images or scenarios that require encrypted transmission.
         */
        // Method 1: Use a public image URL.
        String image1 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/pjeqdf/car.webp";
        String image2 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/xsunlm/paint.webp";

        // Method 2: Use a local file. Both absolute and relative paths are supported.
        // Format: file:// + file path
        // String image1 = "file:///path/to/your/car.png";
        // String image2 = "file:///path/to/your/paint.png";

        // Method 3: Use a Base64-encoded image.
        // String image1 = encodeFile("/path/to/your/car.png");
        // String image2 = encodeFile("/path/to/your/paint.png");

        // Build a multi-image input message.
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Arrays.asList(
                        // Multi-image input is supported. You can provide multiple reference images.
                        Collections.singletonMap("text", "Spray the graffiti from image 2 onto the car in image 1"),
                        Collections.singletonMap("image", image1),
                        Collections.singletonMap("image", image2)
                )).build();

        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.7-image-pro")
                .messages(Collections.singletonList(message))
                .n(1)
                .size("2K") // For wan2.7-image-pro, only the text-to-image generation scenario supports 4K resolution. Image editing and collage generation support a maximum resolution of 2K.
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult result = null;
        try {
            System.out.println("---sync call for image editing, please wait a moment----");
            result = imageGeneration.call(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        // Extract the result image URL and save it to a local file.
        for (int i = 0; i < result.getOutput().getChoices().size(); i++) {
            List<Map<String, Object>> contents = result.getOutput().getChoices().get(i)
                    .getMessage().getContent();
            for (int j = 0; j < contents.size(); j++) {
                if ("image".equals(contents.get(j).get("type"))) {
                    String imageUrl = (String) contents.get(j).get("image");
                    String fileName = "output_" + i + "_" + j + ".png";
                    // The result URL is valid for 24 hours. Download the image in a timely manner.
                    try (InputStream in = new URL(imageUrl).openStream()) {
                        Files.copy(in, Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
                    }
                    System.out.println("Image saved to " + fileName);
                }
            }
        }
    }

    public static void main(String[] args) throws ApiException, NoApiKeyException, UploadFileException, IOException {
        basicCall();
    }
}
Exemplo de resposta
A URL tem validade de 24 horas. Salve-a prontamente.
{
    "requestId": "1bf6173a-e8de-9f75-94d3-5e618f875xxx",
    "usage": {
        "input_tokens": 18790,
        "output_tokens": 2,
        "total_tokens": 18792,
        "image_count": 1,
        "size": "2985*1405"
    },
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "finished": true
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Chamada assíncrona

Exemplo de solicitação
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * wan2.7-image-pro Image Editing - Asynchronous Invocation Example
 */
public class Main {

    static {
        // The following URL is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If you have not configured an environment variable, replace the following line with your Model Studio API key: apiKey="sk-xxx"
    // The API key varies by region. To obtain an API key, visit: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    // --- Base64 encoding function ---
    // The Base64 encoding format is data:{MIME_type};base64,{base64_data}
    public static String encodeFile(String filePath) throws IOException {
        byte[] fileContent = Files.readAllBytes(Paths.get(filePath));
        String base64String = Base64.getEncoder().encodeToString(fileContent);
        String mimeType = Files.probeContentType(Paths.get(filePath));
        return "data:" + mimeType + ";base64," + base64String;
    }

    public static void asyncCall() throws ApiException, NoApiKeyException, UploadFileException, IOException {
        /*
         * Description of image input methods:
         * The following three image input methods are provided. You can choose one of them.
         * 1. Use a public URL - Suitable for publicly accessible images.
         * 2. Use a local file - Suitable for local development and testing.
         * 3. Use Base64 encoding - Suitable for scenarios that involve private images or require encrypted transmission.
         */
        // [Method 1] Use a public image URL
        String image1 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/pjeqdf/car.webp";
        String image2 = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251229/xsunlm/paint.webp";

        // [Method 2] Use a local file (supports absolute and relative paths)
        // Required format: file:// + file path
        // String image1 = "file:///path/to/your/car.png";
        // String image2 = "file:///path/to/your/paint.png";

        // [Method 3] Use a Base64-encoded image
        // String image1 = encodeFile("/path/to/your/car.png");
        // String image2 = encodeFile("/path/to/your/paint.png");

        // Build a multi-image input message
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Arrays.asList(
                        // Supports multi-image input. You can provide multiple reference images.
                        Collections.singletonMap("text", "Spray-paint the graffiti from image 2 onto the car in image 1"),
                        Collections.singletonMap("image", image1),
                        Collections.singletonMap("image", image2)
                )).build();

        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.7-image-pro")
                .n(1)
                .size("2K") // The wan2.7-image-pro model supports 4K resolution only for text-to-image generation. For image editing and composite image generation, the maximum supported resolution is 2K.
                .messages(Arrays.asList(message))
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult result = null;
        try {
            System.out.println("---async call for image editing, creating task----");
            result = imageGeneration.asyncCall(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        System.out.println("Task creation result:");
        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();
        // Wait for the task to complete
        waitTask(taskId);
    }

    public static void waitTask(String taskId) throws ApiException, NoApiKeyException, IOException {
        ImageGeneration imageGeneration = new ImageGeneration();
        System.out.println("\n---waiting for task completion----");
        ImageGenerationResult result = imageGeneration.wait(taskId, apiKey);
        // Fetch the resulting image URL and save it to a local file
        for (int i = 0; i < result.getOutput().getChoices().size(); i++) {
            List<Map<String, Object>> contents = result.getOutput().getChoices().get(i)
                    .getMessage().getContent();
            for (int j = 0; j < contents.size(); j++) {
                if ("image".equals(contents.get(j).get("type"))) {
                    String imageUrl = (String) contents.get(j).get("image");
                    String fileName = "output_" + i + "_" + j + ".png";
                    // The result URL is valid for 24 hours. Download the image in a timely manner.
                    try (InputStream in = new URL(imageUrl).openStream()) {
                        Files.copy(in, Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
                    }
                    System.out.println("Image saved to " + fileName);
                }
            }
        }
    }

    public static void main(String[] args) throws ApiException, NoApiKeyException, UploadFileException, IOException {
        asyncCall();
    }
}
Exemplo de resposta
  1. Exemplo de resposta para criação de tarefa

    {
        "requestId": "ccf4b2f4-bf30-9e13-9461-3a28c6a7bxxx",
        "output": {
            "task_id": "8811b4a4-00ac-4aa2-a2fd-017d3b90cxxx",
            "task_status": "PENDING"
        },
        "status_code": 200,
        "code": "",
        "message": ""
    }
  2. Exemplo de resposta para consulta de resultado de tarefa

    A URL é válida por 24 horas. Salve-a prontamente.
    {
        "requestId": "60a08540-f1c1-9e76-8cd3-d5949db8cxxx",
        "usage": {
            "input_tokens": 18711,
            "output_tokens": 2,
            "total_tokens": 18713,
            "image_count": 1,
            "size": "2985*1405"
        },
        "output": {
            "choices": [
                {
                    "finish_reason": "stop",
                    "message": {
                        "role": "assistant",
                        "content": [
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            }
                        ]
                    }
                }
            ],
            "task_id": "8811b4a4-00ac-4aa2-a2fd-017d3b90cxxx",
            "task_status": "SUCCEEDED",
            "finished": true,
            "submit_time": "2026-03-31 19:57:58.840",
            "scheduled_time": "2026-03-31 19:57:58.877",
            "end_time": "2026-03-31 19:58:11.563"
        },
        "status_code": 200,
        "code": "",
        "message": ""
    }

Geração de conjunto de imagens

Chamada síncrona

Exemplo de solicitação
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * An example of using wan2.7-image-pro for image series generation through synchronous calls in the Singapore region.
 */
public class Main {

    static {
        // The following URL is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If you have not configured the environment variable, replace the following line with your Model Studio API key: apiKey="sk-xxx"
    // API keys vary by region. To obtain an API key, visit: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    // --- Base64 encoding function ---
    // The format for Base64 encoding is data:{MIME_type};base64,{base64_data}
    public static String encodeFile(String filePath) throws IOException {
        byte[] fileContent = Files.readAllBytes(Paths.get(filePath));
        String base64String = Base64.getEncoder().encodeToString(fileContent);
        String mimeType = Files.probeContentType(Paths.get(filePath));
        return "data:" + mimeType + ";base64," + base64String;
    }

    public static void basicCall() throws ApiException, NoApiKeyException, UploadFileException, IOException {
        /*
         * Image input methods (for image-to-image series generation):
         * Three image input methods are provided below. Choose one.
         * 1. Public URL: Suitable for images that are already publicly accessible.
         * 2. Local file: Suitable for local development and testing.
         * 3. Base64 encoding: Suitable for private images or scenarios that require encrypted transmission.
         */
        // Method 1: Use a public image URL
        // String image1 = "https://img.alicdn.com/imgextra/i4/O1CN01IM44WN23dq5uY1yla_!!6000000007279-49-tps-1024-1024.webp";

        // Method 2: Use a local file (supports both absolute and relative paths)
        // Format: file:// + file path
        // String image1 = "file:///path/to/your/image.png";

        // Method 3: Use a Base64-encoded image
        // String image1 = encodeFile("/path/to/your/image.png");

        // Build the text input message. This supports both text-to-image and image-to-image series generation. This example demonstrates text-to-image series generation.
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Collections.singletonList(
                        Collections.singletonMap("text", "A cinematic image series documenting the same stray orange cat, whose features must remain consistent. First image: In spring, the cat weaves through blooming cherry blossom trees. Second image: In summer, the cat cools off in the shade on an old street. Third image: In autumn, the cat walks on a carpet of golden fallen leaves. Fourth image: In winter, the cat leaves footprints in the snow.")
                )).build();
        // For image-to-image series generation, uncomment the following code and comment out the plain text message builder above.
        // ImageGenerationMessage message = ImageGenerationMessage.builder()
        //         .role("user")
        //         .content(Arrays.asList(
        //                 Collections.singletonMap("text", "Generate a four-season image series based on the style of the reference image."),
        //                 Collections.singletonMap("image", image1)
        //         )).build();

        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.7-image-pro")
                .messages(Collections.singletonList(message))
                .enableSequential(true)
                .n(4)
                .size("2K") // The wan2.7-image-pro model supports 4K resolution only for text-to-image generation. Image editing and image series generation support a maximum resolution of 2K.
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult result = null;
        try {
            System.out.println("----sync call, please wait a moment----");
            result = imageGeneration.call(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        // Extract the resulting image URLs and save them to a local directory.
        for (int i = 0; i < result.getOutput().getChoices().size(); i++) {
            List<Map<String, Object>> contents = result.getOutput().getChoices().get(i)
                    .getMessage().getContent();
            for (int j = 0; j < contents.size(); j++) {
                if ("image".equals(contents.get(j).get("type"))) {
                    String imageUrl = (String) contents.get(j).get("image");
                    String fileName = "output_" + i + "_" + j + ".png";
                    // The resulting URL is valid for 24 hours. Be sure to download it promptly.
                    try (InputStream in = new URL(imageUrl).openStream()) {
                        Files.copy(in, Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
                    }
                    System.out.println("Image saved to " + fileName);
                }
            }
        }
    }

    public static void main(String[] args) throws ApiException, NoApiKeyException, UploadFileException, IOException {
        basicCall();
    }
}
Exemplo de resposta
A URL é válida por 24 horas. Salve-a prontamente.
{
    "requestId": "4678c314-b37a-91c9-a2ae-2d3cd54bbxxx",
    "usage": {
        "input_tokens": 720,
        "output_tokens": 11,
        "total_tokens": 731,
        "image_count": 4,
        "size": "2048*2048"
    },
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        },
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        },
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        },
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "finished": true
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Chamada assíncrona

Exemplo de solicitação
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * wan2.7-image-pro Image Set Generation - Asynchronous Invocation Example (Singapore Region)
 */
public class Main {

    static {
        // The following URL is for the Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. The base_url varies by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If you have not configured environment variables, replace the following line with your Model Studio API key: apiKey="sk-xxx"
    // The API key varies by region. To obtain an API key, visit https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    // --- Base64 encoding function ---
    // The Base64 encoding format is data:{MIME_type};base64,{base64_data}
    public static String encodeFile(String filePath) throws IOException {
        byte[] fileContent = Files.readAllBytes(Paths.get(filePath));
        String base64String = Base64.getEncoder().encodeToString(fileContent);
        String mimeType = Files.probeContentType(Paths.get(filePath));
        return "data:" + mimeType + ";base64," + base64String;
    }

    public static ImageGenerationResult waitTask(String taskId)
            throws ApiException, NoApiKeyException {
        ImageGeneration imageGeneration = new ImageGeneration();
        return imageGeneration.wait(taskId, apiKey);
    }

    public static void asyncCall() throws ApiException, NoApiKeyException, UploadFileException, IOException {
        /*
         * Description of image input methods (for image-to-image set generation scenarios):
         * The following three image input methods are provided. You can choose one of them.
         * 1. Use a public URL - suitable for publicly accessible images.
         * 2. Use a local file - suitable for local development and testing.
         * 3. Use Base64 encoding - suitable for private images or scenarios that require encrypted transmission.
         */
        // [Method 1] Use a public image URL
        // String image1 = "https://img.alicdn.com/imgextra/i4/O1CN01IM44WN23dq5uY1yla_!!6000000007279-49-tps-1024-1024.webp";

        // [Method 2] Use a local file (supports absolute and relative paths)
        // Format: file:// + file path
        // String image1 = "file:///path/to/your/image.png";

        // [Method 3] Use a Base64-encoded image
        // String image1 = encodeFile("/path/to/your/image.png");

        // Build the text input message (supports text-to-image set and image-to-image set generation. This example uses text-to-image set generation.)
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Collections.singletonList(
                        Collections.singletonMap("text", "A cinematic image set documenting the same stray orange cat. Its features must be consistent across all images. Image 1: In spring, the orange cat weaves through blooming cherry blossom trees. Image 2: In summer, the orange cat cools off in the shade of a tree on an old street. Image 3: In autumn, the orange cat steps on a carpet of golden fallen leaves. Image 4: In winter, the orange cat leaves footprints as it walks on the snow.")
                )).build();
        // For image-to-image set generation scenarios: uncomment the following code and comment out the plain text construction above.
        // ImageGenerationMessage message = ImageGenerationMessage.builder()
        //         .role("user")
        //         .content(Arrays.asList(
        //                 Collections.singletonMap("text", "Generate an image set of the four seasons based on the style of the reference image."),
        //                 Collections.singletonMap("image", image1)
        //         )).build();

        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.7-image-pro")
                .messages(Collections.singletonList(message))
                .enableSequential(true)
                .n(4)
                .size("2K") // The wan2.7-image-pro model supports 4K resolution only for text-to-image generation. Image editing and image set generation support a maximum resolution of 2K.
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult taskResult = null;
        try {
            System.out.println("----async call, creating task----");
            taskResult = imageGeneration.asyncCall(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        System.out.println("Task created: " + JsonUtils.toJson(taskResult));

        // Wait for the task to complete.
        String taskId = taskResult.getOutput().getTaskId();
        ImageGenerationResult result = waitTask(taskId);
        // Fetch the resulting image URLs and save them to a local directory.
        for (int i = 0; i < result.getOutput().getChoices().size(); i++) {
            List<Map<String, Object>> contents = result.getOutput().getChoices().get(i)
                    .getMessage().getContent();
            for (int j = 0; j < contents.size(); j++) {
                if ("image".equals(contents.get(j).get("type"))) {
                    String imageUrl = (String) contents.get(j).get("image");
                    String fileName = "output_" + i + "_" + j + ".png";
                    // The result URL is valid for 24 hours. Download the image in a timely manner.
                    try (InputStream in = new URL(imageUrl).openStream()) {
                        Files.copy(in, Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
                    }
                    System.out.println("Image saved to " + fileName);
                }
            }
        }
    }

    public static void main(String[] args) throws ApiException, NoApiKeyException, UploadFileException, IOException {
        asyncCall();
    }
}
Exemplo de resposta
  1. Exemplo de resposta para criação de tarefa

    {
        "requestId": "7d026dc1-e8c9-9caa-84ac-e82e2da97xxx",
        "output": {
            "task_id": "2de18c56-c151-4b80-8105-1d164733exxx",
            "task_status": "PENDING"
        },
        "status_code": 200,
        "code": "",
        "message": ""
    }
  2. Exemplo de resposta para consulta de resultado de tarefa

    A URL é válida por 24 horas. Salve-a prontamente.
    {
        "requestId": "daea7295-4ce0-928a-9a11-4d2bea058xxx",
        "usage": {
            "input_tokens": 720,
            "output_tokens": 11,
            "total_tokens": 731,
            "image_count": 4,
            "size": "2048*2048"
        },
        "output": {
            "choices": [
                {
                    "finish_reason": "stop",
                    "message": {
                        "role": "assistant",
                        "content": [
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            },
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            },
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            },
                            {
                                "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                                "type": "image"
                            }
                        ]
                    }
                }
            ],
            "task_id": "2de18c56-c151-4b80-8105-1d164733exxx",
            "task_status": "SUCCEEDED",
            "finished": true,
            "submit_time": "2026-03-31 19:49:53.124",
            "scheduled_time": "2026-03-31 19:49:53.175",
            "end_time": "2026-03-31 19:50:53.160"
        },
        "status_code": 200,
        "code": "",
        "message": ""
    }

Faturamento e limitação de taxa

  • Para consultar a cota gratuita e o preço unitário do modelo, consulte Preços do modelo.

  • Para informações sobre limitação de taxa do modelo, consulte Wanxiang.

  • Detalhes do faturamento: A cobrança é baseada no número de imagens geradas com sucesso. Chamadas com falha e erros de processamento não geram custos nem consomem sua cota gratuita para novos usuários.

Códigos de erro

Se a chamada do modelo falhar e retornar uma mensagem de erro, consulte Códigos de erro para obter a resolução.