O modelo Wan text-to-image gera imagens a partir de prompts de texto, com suporte a estilos artísticos e efeitos fotográficos realistas.
Links rápidos: Experimente online (Singapore | Virginia | Beijing) | Site oficial do Wan
Os recursos do site do Wan podem diferir das capacidades da API. Este documento aborda a API e é atualizado conforme ocorrem alterações.
Pré-requisitos
Antes de fazer uma chamada, obtenha uma chave de API e exporte a chave de API como uma variável de ambiente. Para realizar chamadas usando o SDK, instale o DashScope SDK.
As regiões Singapore, US (Virginia) e China (Beijing) 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. Para mais informações, consulte Selecionar uma região e escopo de implantação do service.
HTTP síncrono (wan2.6)
A API nesta seção utiliza o novo protocolo e suporta apenas o modelo wan2.6.
Recupere 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
Ao chamar, substitua {WorkspaceId} pelo seu ID do workspace real.
US (Virginia)
POST https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
China (Beijing)
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Ao chamar, substitua {WorkspaceId} pelo seu ID do workspace real.
O escopo de implantação global (região de Frankfurt) suporta apenas chamadas assíncronas .
Parâmetros da solicitação |
Text-to-image
|
Cabeçalhos da solicitação |
|
|
Content-Type O tipo de conteúdo da solicitação. Deve ser |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
Corpo da solicitação |
|
|
model O nome do modelo. Exemplo: wan2.6-t2i. Nota
Para modelos wan2.5 e anteriores, consulte Chamada assíncrona HTTP para chamadas HTTP. |
|
|
input O objeto de entrada. |
|
|
parameters Parâmetros de geração de imagem. |
Parâmetros da resposta |
Execução bem-sucedida da tarefaOs 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.
Falha na execução da tarefaSe a tarefa falhar, a API retorna informações de erro. Identifique a causa pelos campos code e message. Consulte Códigos de erro.
|
|
output O objeto de saída. |
|
|
usage Estatísticas de uso da solicitação. Apenas resultados bem-sucedidos são contabilizados. |
|
|
request_id Identificador único da solicitação para rastreamento e solução de problemas. |
|
|
code Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro. |
|
|
message Mensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro. |
HTTP assíncrono (wan2.6)
A API desta seção utiliza o novo protocolo e oferece suporte apenas ao modelo wan2.6.
O fluxo da tarefa consiste em duas etapas principais: Criar tarefa -> Consultar resultado. O processo é o seguinte:
Etapa 1: Criar uma tarefa e obter o ID da tarefa
Singapore
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
US (Virginia)
POST https://dashscope-us.aliyuncs.com/api/v1/services/aigc/image-generation/generation
China (Beijing)
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
Germany (Frankfurt)
POST https://<u>{WorkspaceId}.eu-central-1.maas.aliyuncs.com</u>/api/v1/services/aigc/image-generation/generation
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do Workspace.
Após criar a tarefa, utilize o
task_idretornado para consultar o resultado. Otask_idpermanece válido por 24 horas. Não crie tarefas duplicadas. Em vez disso, use consultas periódicas (polling) para obter o resultado.Para orientações destinadas a iniciantes, consulte Chamar APIs com Postman ou cURL.
Parâmetros da solicitação |
Texto para imagem
|
Cabeçalhos da solicitação |
|
|
Content-Type O tipo de conteúdo da solicitação. Deve ser |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
|
X-DashScope-Async Ativa o processamento assíncrono. Solicitações HTTP suportam apenas chamadas assíncronas. O valor deve ser Importante Se este cabeçalho de solicitação estiver ausente, o erro "current user api does not support synchronous calls" será retornado. |
|
Corpo da solicitação |
|
|
model O nome do modelo. Exemplo: wan2.6-t2i. Nota
Para modelos wan2.5 e anteriores, consulte Chamada assíncrona HTTP. |
|
|
input O objeto de entrada. |
|
|
parameters Parâmetros de geração de imagem. |
Parâmetros de resposta |
Resposta bem-sucedidaSalve o Resposta de erroFalha na criação da tarefa. Consulte Códigos de erro. |
|
output O objeto de saída. |
|
|
request_id Identificador único da solicitação para rastreamento e solução de problemas. |
|
|
code Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro. |
|
|
message Mensagem de erro detalhada. Retornada apenas para solicitaçõ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}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
US (Virginia)
GET https://dashscope-us.aliyuncs.com/api/v1/tasks/{task_id}
China (Beijing)
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
Germany (Frankfurt)
GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do Workspace real.
Recomendação de polling: A geração de imagens demanda tempo. Utilize um mecanismo de consulta periódica com um intervalo razoável, como 10 segundos.
Transição de estado da tarefa: PENDING → RUNNING → SUCCEEDED ou FAILED.
Link do resultado: Após o sucesso da tarefa, uma URL de imagem válida por 24 horas é retornada. Baixe e salve a imagem em um armazenamento permanente, como o OSS.
Parâmetros da solicitação |
Consultar resultado da tarefaSubstitua |
Cabeçalhos da solicitação |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
Parâmetros de caminho da URL |
|
|
task_id O ID da tarefa. |
Parâmetros de resposta |
Execução da tarefa bem-sucedidaOs 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.
Falha na execução da tarefaSe a tarefa falhar, a API retorna informações de erro. Identifique a causa pelos campos code e message. Consulte Códigos de erro.
|
|
output As informações de saída da tarefa. |
|
|
usage Estatísticas de uso da solicitação. Apenas resultados bem-sucedidos são contabilizados. |
|
|
request_id Identificador único da solicitação para rastreamento e solução de problemas. |
|
|
code Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro. |
|
|
message Mensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro. |
HTTP assíncrono (modelos wan2.5 e anteriores)
Esta API utiliza o protocolo antigo e oferece suporte apenas aos modelos wan2.5 e anteriores.
Como as tarefas de texto para imagem podem levar um tempo considerável (geralmente de 1 a 2 minutos), a API utiliza chamadas assíncronas. O fluxo consiste em duas etapas principais: Criar tarefa -> Consultar resultado. O processo funciona da seguinte forma:
O tempo de processamento varia conforme a fila de tarefas e o status do service.
Etapa 1: Criar uma tarefa e obter o ID da tarefa
Singapore
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis
Beijing
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis
Após criar a tarefa, utilize o
task_idretornado para consultar o resultado. Otask_idpermanece válido por 24 horas. Não crie tarefas duplicadas. Em vez disso, use o mecanismo de consulta periódica (polling) para recuperar o resultado.Para orientações destinadas a iniciantes, consulte Chamar APIs com Postman ou cURL.
Parâmetros da requisição |
Texto para imagemAs chaves de API para as regiões Singapore e Beijing são diferentes. Obter uma chave de API A seguir está a URL para a região Singapore. Se você estiver usando um modelo na região Beijing, substitua a URL por: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis Substitua
Texto para imagem (com prompt negativo)Use negative_prompt para impedir que "pessoas" apareçam na imagem gerada. As chaves de API para as regiões Singapore e Beijing são diferentes. Obter uma chave de API A seguir está a URL para a região Singapore. Se você estiver usando um modelo na região Beijing, substitua a URL por: https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis Substitua
|
Cabeçalhos da requisição |
|
|
Content-Type O tipo de conteúdo da requisição. Deve ser |
|
|
Authorization Autentica a requisição com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
|
X-DashScope-Async Ativa o processamento assíncrono. Requisições HTTP suportam apenas chamadas assíncronas. O valor deve ser Importante Se este cabeçalho de requisição estiver ausente, o erro "current user api does not support synchronous calls" será retornado. |
|
Corpo da requisição |
|
|
model Nome do modelo. Para modelos de texto para imagem, consulte a Lista de Modelos. Exemplo: wan2.5-t2i-preview. Nota
Para chamadas HTTP ao modelo wan2.6, consulte Chamada síncrona HTTP e Chamada assíncrona HTTP. |
|
|
input Objeto de entrada contendo o prompt. |
|
|
parameters Parâmetros de geração da imagem. |
Parâmetros da resposta |
Resposta bem-sucedidaSalve o Resposta de erroFalha na criação da tarefa. Consulte Códigos de erro. |
|
output Informações de saída da tarefa. |
|
|
request_id Identificador único da requisição para rastreamento e solução de problemas. |
|
|
code Código de erro. Retornado apenas para requisições com falha. Consulte Códigos de erro. |
|
|
message 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
China (Beijing)
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
Singapore
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
Singapore
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
China (Beijing)
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ao fazer a chamada, substitua {WorkspaceId} pelo seu ID do workspace real.
Recomendação de polling: A geração de imagens demanda tempo. Utilize um mecanismo de consulta periódica com um intervalo razoável, como 10 segundos.
Transição de estados da tarefa: PENDING → RUNNING → SUCCEEDED ou FAILED.
Link do resultado: Após o sucesso da tarefa, uma URL de imagem válida por 24 horas é retornada. Baixe e salve a imagem em um armazenamento permanente, como o OSS.
Parâmetros da requisição |
Consultar resultado da tarefaSubstitua As chaves de API são diferentes para cada região. Para mais informações, consulte Obter uma chave de API. Se você usar um modelo na região China (Beijing), substitua |
Cabeçalhos da requisição |
|
|
Authorization Autentica a requisição com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
Parâmetros de caminho da URL |
|
|
task_id O ID da tarefa. |
Parâmetros da resposta |
Execução da tarefa bem-sucedidaAs URLs das imagens são válidas por apenas 24 horas e depois são removidas automaticamente. Salve as imagens geradas prontamente. Falha na tarefaQuando uma tarefa falha,
Falha parcial da tarefaO modelo pode gerar múltiplas imagens por tarefa. Se pelo menos uma for bem-sucedida, o status da tarefa será
Consulta de tarefa expiradaO |
|
output Informações de saída da tarefa. |
|
|
usage Estatísticas de uso da requisição. Apenas resultados bem-sucedidos são contabilizados. |
|
|
request_id Identificador único da requisição para rastreamento e solução de problemas. |
DashScope Python SDK
Os nomes dos parâmetros do SDK correspondem aos da HTTP API, com estruturas adaptadas para Python.
Como as tarefas de texto para imagem podem levar um tempo considerável, o SDK encapsula o processo de chamada assíncrona HTTP e oferece suporte a chamadas síncronas e assíncronas.
O tempo de processamento depende da fila de tarefas e do status do service.
wan2.6
O código a seguir aplica-se exclusivamente ao modelo wan2.6.
Certifique-se de que a versão do seu DashScope Python SDK seja pelo menos 1.25.7 antes de executar o código abaixo. Para atualizar, consulte Instalar o SDK.
O base_url e a chave de API são específicos por região. O exemplo a seguir mostra uma chamada na região de Singapore:
Singapore
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.
US (Virginia)
https://dashscope-us.aliyuncs.com/api/v1
China (Beijing)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.
Germany (Frankfurt)
https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1
Substitua {WorkspaceId} pelo seu Workspace ID real.
O escopo de implantação global (região de Frankfurt) suporta apenas chamadas assíncronas.
Synchronous call
Exemplo de solicitação
import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message
# The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
dashscope.base_http_api_url = '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: api_key="sk-xxx"
# The API key is region-specific. To obtain an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
message = Message(
role="user",
content=[
{
'text': 'A flower shop with exquisite windows, a beautiful wooden door, and flowers on display'
}
]
)
print("----Sync call, please wait a moment----")
rsp = ImageGeneration.call(
model="wan2.6-t2i",
api_key=api_key,
messages=[message],
negative_prompt="",
prompt_extend=True,
watermark=False,
n=1,
size="1280*1280"
)
print(rsp)
Exemplo de resposta
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{
"status_code": 200,
"request_id": "820dd0db-eb42-4e05-8d6a-1ddb4axxxxxx",
"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": 0,
"output_tokens": 0,
"characters": 0,
"image_count": 1,
"size": "1280*1280",
"total_tokens": 0
}
}
Asynchronous call
Exemplo de solicitação
import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Role, Message
from http import HTTPStatus
# The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
dashscope.base_http_api_url = '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: api_key="sk-xxx"
# The API key is region-specific. To obtain an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
# Create an asynchronous task
def create_async_task():
print("Creating async task...")
message = Message(
role="user",
content=[{'text': 'A flower shop with exquisite windows, a beautiful wooden door, and flowers on display'}]
)
response = ImageGeneration.async_call(
model="wan2.6-t2i",
api_key=api_key,
messages=[message],
negative_prompt="",
prompt_extend=True,
watermark=False,
n=1,
size="1280*1280"
)
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!")
print("Response:", status)
else:
raise Exception(f"Task failed with status: {status.output.task_status}")
# Fetch asynchronous task information
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
-
Exemplo de resposta ao criar uma tarefa
{ "status_code": 200, "request_id": "c4f11410-ea42-4996-957d-9c82f9xxxxxx", "code": "", "message": "", "output": { "text": null, "finish_reason": null, "choices": null, "audio": null, "task_id": "f470bbfd-d955-4165-935b-d35b8eexxxxxx", "task_status": "PENDING" }, "usage": { "input_tokens": 0, "output_tokens": 0, "characters": 0 } } -
Exemplo de resposta ao consultar o resultado de uma tarefa
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{ "status_code": 200, "request_id": "7e57e7e8-00b0-4534-9aff-fe31e0xxxxxx", "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": "f470bbfd-d955-4165-935b-d35b8exxxxxx", "task_status": "SUCCEEDED", "submit_time": "2026-01-09 17:18:17.901", "scheduled_time": "2026-01-09 17:18:17.941", "end_time": "2026-01-09 17:18:45.544", "finished": true }, "usage": { "input_tokens": 0, "output_tokens": 0, "characters": 0, "size": "1280*1280", "total_tokens": 0, "image_count": 1 } }
wan2.5 e modelos anteriores
O código a seguir destina-se apenas ao wan2.5 e a modelos anteriores.
-
Verifique se a versão do seu DashScope Python SDK é pelo menos 1.25.2 antes de executar o código abaixo.
Versões desatualizadas podem gerar erros como "url error, please check url!". Para atualizar, consulte Instalar o SDK.
O base_url e a chave de API são específicos por região. O exemplo a seguir mostra uma chamada na região de 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.
Synchronous call
Exemplo de solicitação
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os
import dashscope
# The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
dashscope.base_http_api_url = '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: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To obtain an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
print('----Sync call, please wait a moment----')
rsp = ImageSynthesis.call(api_key=api_key,
model="wan2.5-t2i-preview",
prompt="A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
negative_prompt="",
n=1,
size='1280*1280',
prompt_extend=True,
watermark=False,
seed=12345)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
# Save the image in the current directory
for result in rsp.output.results:
file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
with open('./%s' % file_name, 'wb+') as f:
f.write(requests.get(result.url).content)
else:
print('sync_call Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
Exemplo de resposta
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{
"status_code": 200,
"request_id": "9d634fda-5fe9-9968-a908-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "d35658e4-483f-453b-b8dc-xxxxxx",
"task_status": "SUCCEEDED",
"results": [{
"url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png",
"orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
"actual_prompt": "An exquisite flower shop, with elegant carvings on the windows and a beautiful wooden door with a brass handle. Inside, a variety of colorful flowers such as roses, tulips, and lilies are displayed. The background is a warm indoor scene with soft light, creating a peaceful and comfortable atmosphere. High-definition realistic photography, close-up center composition."
}],
"submit_time": "2025-01-08 19:36:01.521",
"scheduled_time": "2025-01-08 19:36:01.542",
"end_time": "2025-01-08 19:36:13.270",
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
}
},
"usage": {
"image_count": 1
}
}
Asynchronous call
Exemplo de solicitação
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os
import dashscope
# The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
dashscope.base_http_api_url = '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: api_key="sk-xxx"
# The API keys for the Singapore and Beijing regions are different. To obtain an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
def async_call():
print('----Create task----')
task_info = create_async_task()
print('----Wait for task to complete, then save image----')
wait_async_task(task_info)
# Create an asynchronous task
def create_async_task():
rsp = ImageSynthesis.async_call(api_key=api_key,
model="wan2.5-t2i-preview",
prompt="A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
negative_prompt="",
n=1,
size='1280*1280',
prompt_extend=True,
watermark=False,
seed=12345)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
return rsp
# Wait for the asynchronous task to finish
def wait_async_task(task):
rsp = ImageSynthesis.wait(task=task, api_key=api_key)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output)
# save file to current directory
for result in rsp.output.results:
file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
with open('./%s' % file_name, 'wb+') as f:
f.write(requests.get(result.url).content)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# Fetch asynchronous task information
def fetch_task_status(task):
status = ImageSynthesis.fetch(task=task, api_key=api_key)
print(status)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# Cancel the asynchronous task. Only tasks in the PENDING state can be canceled.
def cancel_task(task):
rsp = ImageSynthesis.cancel(task=task, api_key=api_key)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output.task_status)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
async_call()
Exemplo de resposta
-
Exemplo de resposta ao criar uma tarefa
{ "status_code": 200, "request_id": "31b04171-011c-96bd-ac00-f0383b669cc7", "code": "", "message": "", "output": { "task_id": "4f90cf14-a34e-4eae-xxxxxxxx", "task_status": "PENDING", "results": [] }, "usage": null } -
Exemplo de resposta ao consultar o resultado de uma tarefa
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{ "status_code": 200, "request_id": "9d634fda-5fe9-9968-a908-xxxxxx", "code": null, "message": "", "output": { "task_id": "d35658e4-483f-453b-b8dc-xxxxxx", "task_status": "SUCCEEDED", "results": [{ "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/xxx.png", "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display", "actual_prompt": "An exquisite flower shop, with elegant carvings on the windows and a beautiful wooden door with a brass handle. Inside, a variety of colorful flowers such as roses, tulips, and lilies are displayed. The background is a warm indoor scene with soft light, creating a peaceful and comfortable atmosphere. High-definition realistic photography, close-up center composition." }], "submit_time": "2025-01-08 19:36:01.521", "scheduled_time": "2025-01-08 19:36:01.542", "end_time": "2025-01-08 19:36:13.270", "task_metrics": { "TOTAL": 1, "SUCCEEDED": 1, "FAILED": 0 } }, "usage": { "image_count": 1 } }
DashScope Java SDK
Os nomes dos parâmetros do SDK correspondem aos da HTTP API, com estruturas adaptadas para Java.
Tarefas de texto para imagem podem demandar um tempo significativo. O SDK encapsula o fluxo de chamada assíncrona HTTP e oferece suporte tanto a chamadas síncronas quanto assíncronas.
O tempo de processamento varia conforme a fila de tarefas e o status do service.
wan2.6
O código a seguir aplica-se exclusivamente ao modelo wan2.6-t2i.
Antes de executar o código abaixo, garanta que a versão do seu DashScope Java SDK seja 2.22.6 ou superior.
O base_url e a chave de API são específicos para cada região e não são intercambiáveis. Os exemplos a seguir demonstram como realizar uma chamada na região de Singapore:
Singapore
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.
US (Virginia)
https://dashscope-us.aliyuncs.com/api/v1
China (Beijing)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
Ao fazer a chamada, substitua {WorkspaceId} pelo seu workspace ID real.
Germany (Frankfurt)
https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1
Substitua {WorkspaceId} pelo seu Workspace ID real.
O escopo de implantação global (região de Frankfurt) suporta apenas chamadas assíncronas.
Synchronous call
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.util.Collections;
public class Main {
static {
// The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary 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"
// The API key is different for each region. To get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void basicCall() throws ApiException, NoApiKeyException, UploadFileException {
ImageGenerationMessage message = ImageGenerationMessage.builder()
.role("user")
.content(Collections.singletonList(
Collections.singletonMap("text", "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display")
)).build();
ImageGenerationParam param = ImageGenerationParam.builder()
.apiKey(apiKey)
.model("wan2.6-t2i")
.n(1)
.size("1280*1280")
.negativePrompt("")
.promptExtend(true)
.watermark(false)
.messages(Collections.singletonList(message))
.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());
}
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
basicCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
}
}
Exemplo de resposta
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{
"status_code": 200,
"request_id": "50b57166-eaaa-4f17-b1e0-35a5ca88672c",
"code": "",
"message": "",
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
}
]
}
}
],
"finished": true
},
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"image_count": 1,
"size": "1280*1280",
"total_tokens": 0
}
}
Asynchronous call
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.util.Collections;
public class Main {
static {
// The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary 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"
// The API key is different for each region. To get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void asyncCall() throws ApiException, NoApiKeyException, UploadFileException {
ImageGenerationMessage message = ImageGenerationMessage.builder()
.role("user")
.content(Collections.singletonList(
Collections.singletonMap("text", "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display")
)).build();
ImageGenerationParam param = ImageGenerationParam.builder()
.apiKey(apiKey)
.model("wan2.6-t2i")
.n(1)
.size("1280*1280")
.negativePrompt("")
.promptExtend(true)
.watermark(false)
.messages(Collections.singletonList(message))
.build();
ImageGeneration imageGeneration = new ImageGeneration();
ImageGenerationResult result = null;
try {
System.out.println("---async call, creating task----");
result = imageGeneration.asyncCall(param);
} catch (ApiException | NoApiKeyException | UploadFileException e) {
throw new RuntimeException(e.getMessage());
}
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 {
ImageGeneration imageGeneration = new ImageGeneration();
ImageGenerationResult result = imageGeneration.wait(taskId, apiKey);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
asyncCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
}
}
Exemplos de resposta
-
Resposta de exemplo para criação de uma tarefa
{ "status_code": 200, "request_id": "9cd85950-2e26-4b2c-b562-1694cf9288e5", "code": "", "message": "", "output": { "task_id": "4c861fbe-af89-4a2f-8fc5-4bb15c3139ba", "task_status": "PENDING" }, "usage": null }
-
Resposta de exemplo para consulta do resultado da tarefa
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{ "status_code": 200, "request_id": "cbdf1424-306e-4a52-82f3-8bf5d8a99103", "code": "", "message": "", "output": { "choices": [ { "finish_reason": "stop", "message": { "role": "assistant", "content": [ { "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx", "type": "image" } ] } } ], "task_id": "4c861fbe-af89-4a2f-8fc5-4bb15c3139ba", "task_status": "SUCCEEDED", "submit_time": "2026-01-16 16:36:06.556", "scheduled_time": "2026-01-16 16:36:06.591", "end_time": "2026-01-16 16:36:25.190", "finished": true }, "usage": { "input_tokens": 0, "output_tokens": 0, "size": "1280*1280", "total_tokens": 0, "image_count": 1 } }
Modelos wan2.5 e anteriores
O código a seguir aplica-se apenas aos modelos wan2.5 e anteriores.
-
Certifique-se de que a versão do seu DashScope Java SDK seja 2.22.2 ou posterior antes de executar o código abaixo.
Caso sua versão esteja desatualizada, erros como "url error, please check url!" podem ocorrer. Consulte Instalar o SDK para atualizar.
O base_url e a chave de API são específicos para cada região e não podem ser usados de forma intercambiável. Os exemplos a seguir mostram como fazer uma chamada na 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.
Chamada síncrona
Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;
public class Main {
static {
// The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary 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"
// The API keys for the Singapore and Beijing regions are different. To get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void basicCall() throws ApiException, NoApiKeyException {
// Set the parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("watermark", false);
parameters.put("seed", 12345);
ImageSynthesisParam param =
ImageSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.5-t2i-preview")
.prompt("A flower shop with exquisite windows, a beautiful wooden door, and flowers on display")
.n(1)
.size("1280*1280")
.negativePrompt("")
.parameters(parameters)
.build();
ImageSynthesis imageSynthesis = new ImageSynthesis();
ImageSynthesisResult result = null;
try {
System.out.println("---sync call, please wait a moment----");
result = imageSynthesis.call(param);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
}
public static void listTask() throws ApiException, NoApiKeyException {
ImageSynthesis is = new ImageSynthesis();
AsyncTaskListParam param = AsyncTaskListParam.builder().build();
param.setApiKey(apiKey);
ImageSynthesisListResult result = is.list(param);
System.out.println(result);
}
public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
ImageSynthesis is = new ImageSynthesis();
// If the DASHSCOPE_API_KEY environment variable is set, you can set apiKey to null.
ImageSynthesisResult result = is.fetch(taskId, apiKey);
System.out.println(result.getOutput());
System.out.println(result.getUsage());
}
public static void main(String[] args){
try{
basicCall();
//listTask();
}catch(ApiException|NoApiKeyException e){
System.out.println(e.getMessage());
}
}
}
Exemplo de resposta
A URL tem validade de 24 horas. Baixe a imagem prontamente.
{
"request_id": "22f9c744-206c-9a78-899a-xxxxxx",
"output": {
"task_id": "4a0f8fc6-03fb-4c44-a13a-xxxxxx",
"task_status": "SUCCEEDED",
"results": [{
"orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
"actual_prompt": "A flower shop with exquisitely carved windows and a beautiful dark wooden door slightly ajar. A variety of fresh flowers, including roses, lilies, and sunflowers, are on display inside, vibrant in color and fragrant. The background is a cozy indoor scene with soft light streaming through the windows onto the flowers. High-definition realistic photography, medium shot composition.",
"url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png"
}],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
}
},
"usage": {
"image_count": 1
}
}
Chamada assíncrona
Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;
public class Main {
static {
// The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary 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"
// The API keys for the Singapore and Beijing regions are different. To get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public void asyncCall() {
System.out.println("---create task----");
String taskId = this.createAsyncTask();
System.out.println("---wait task done then return image url----");
this.waitAsyncTask(taskId);
}
/**
* Create an asynchronous task
* @return taskId
*/
public String createAsyncTask() {
// Set the parameters
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("watermark", false);
parameters.put("seed", 12345);
ImageSynthesisParam param =
ImageSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.5-t2i-preview")
.prompt("A flower shop with exquisite windows, a beautiful wooden door, and flowers on display")
.n(1)
.size("1280*1280)
.negativePrompt("")
.parameters(parameters)
.build();
ImageSynthesis imageSynthesis = new ImageSynthesis();
ImageSynthesisResult result = null;
try {
result = imageSynthesis.asyncCall(param);
} catch (Exception e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
String taskId = result.getOutput().getTaskId();
System.out.println("taskId=" + taskId);
return taskId;
}
/**
* Wait for the asynchronous task to finish
* @param taskId The task ID
* */
public void waitAsyncTask(String taskId) {
ImageSynthesis imageSynthesis = new ImageSynthesis();
ImageSynthesisResult result = null;
try {
// After configuring the environment variable, you can set apiKey to null here
result = imageSynthesis.wait(taskId, apiKey);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
System.out.println(JsonUtils.toJson(result.getOutput()));
}
public static void main(String[] args){
Main main = new Main();
main.asyncCall();
}
}
Exemplos de resposta
-
Resposta de exemplo para criação de uma tarefa
{ "request_id": "5dbf9dc5-4f4c-9605-85ea-542f97709ba8", "output": { "task_id": "7277e20e-aa01-4709-xxxxxxxx", "task_status": "PENDING" } } -
Resposta de exemplo para consulta do resultado da tarefa
{ "request_id": "22f9c744-206c-9a78-899a-xxxxxx", "output": { "task_id": "4a0f8fc6-03fb-4c44-a13a-xxxxxx", "task_status": "SUCCEEDED", "results": [{ "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display", "actual_prompt": "A flower shop with exquisitely carved windows and a beautiful dark wooden door slightly ajar. A variety of fresh flowers, including roses, lilies, and sunflowers, are on display inside, vibrant in color and fragrant. The background is a cozy indoor scene with soft light streaming through the windows onto the flowers. High-definition realistic photography, medium shot composition.", "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png" }], "task_metrics": { "TOTAL": 1, "SUCCEEDED": 1, "FAILED": 0 } }, "usage": { "image_count": 1 } }
Limitações
Validade dos dados: O
task_idda tarefa e aurlda imagem são mantidos por apenas 24 horas. Após esse período, não é possível consultá-los ou baixá-los.Moderação de conteúdo: Tanto o
promptde entrada quanto a imagem gerada passam por moderação de conteúdo. Conteúdo em desacordo retorna um erroIPInfringementSuspectouDataInspectionFailed. Consulte Códigos de erro.
Faturamento e limitação de taxa
Verifique as cotas gratuitas e os preços no console.
Para limitação de taxa do modelo, consulte Série Wan.
O faturamento baseia-se no número de imagens geradas com sucesso. Chamadas com falha não geram cobranças nem consomem a 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 resolução.
FAQ
P: Como visualizo os custos de inferência e o volume de chamadas de um modelo?
R: Consulte Consulta de faturas e gestão de custos.