Wan2.6 - image generation and editing
Wan2.6 supports multi-image input, image editing, and interleaved text-image output.
Model overview
Model name | Description | Output image specifications |
|---|---|---|
wan2.6-image | Wan2.6 image Supports image editing and interleaved text-image output. For pure text-to-image generation, we recommend using the wan2.6-t2i model (Tongyi Wan - Text-to-Image V2). | Image format: PNG. For image resolution and dimensions, see the size parameter. |
NoteBefore calling the API, check the model list and pricing supported in each region.
Prerequisites
Obtain and configure an API key and export the API key as an environment variable.
ImportantThe China (Beijing), Singapore, and US (Virginia) regions have separate API keys and request endpoints. They cannot be used interchangeably. Cross-region calls lead to authentication failures or service errors. For more information, see Select a region, service deployment scope, and endpoint.
ImportantAlibaba Cloud Model Studio has launched workspace-dedicated domains for the China (Beijing) and Singapore regions, which deliver superior performance and higher stability for inference requests. We recommend migrating to the new domains:
- China (Beijing) region: migrate from
https://dashscope.aliyuncs.comtohttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapore region: migrate from
https://dashscope-intl.aliyuncs.comtohttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} is your workspace ID, which you can view on the Workspace details page in the Model Studio console. The existing domains remain available.
HTTP synchronous calls
Returns results in a single request with a simple process. Recommended for most scenarios.
China (Beijing)
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
When calling, replace {WorkspaceId} with your actual Workspace ID.
Singapore
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
When calling, replace {WorkspaceId} with your actual Workspace ID.
US (Virginia)
POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
The global deployment scope (Frankfurt region) only supports asynchronous calls.
Request parametersRequest headersContent-Type The content type of the request. This parameter must be set to Authorization Request authentication. The API uses an Alibaba Cloud Model Studio API key for authentication. Example: Bearer sk-xxxx. X-DashScope-Sse Used to enable streaming output.
Request bodymodel Model name. Set to wan2.6-image. input Basic input information. parameters Image processing parameters. | Image editingInterleaved text-image output (streaming only)When the synchronous interface enables interleaved text-image output (that is,
dashscope CLIImportantThe SDK Expert interactive assistant can accomplish the same development and troubleshooting in natural language. See DashScope SDK Expert.For the complete region table, see Base URL overview. |
Response parametersoutput Task output information. usage Output statistics. Only successful results are counted. request_id Unique request identifier. Can be used for request tracing and troubleshooting. code Error code of the failed request. This parameter is not returned when the request succeeds. For more information, see Error codes. message Detailed information of the failed request. This parameter is not returned when the request succeeds. For more information, see Error codes. | Successful task executionTask data (such as task status and image URLs) is retained for only 24 hours and automatically cleared after expiration. Be sure to save the generated images promptly. Successful task execution (streaming output)Task data (such as task status and image URLs) is retained for only 24 hours and automatically cleared after expiration. Be sure to save the generated images promptly. Task execution failureIf the task fails for some reason, relevant information is returned, and the code and message fields clearly indicate the cause of the error. See Error codes for troubleshooting. |
HTTP asynchronous calls
The process consists of two core steps: "Create task -> Poll for results", as follows:
Step 1: Create a task and obtain the task ID
China (Beijing)
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation
When calling, replace {WorkspaceId} with your actual Workspace ID.
Singapore
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation
When calling, replace {WorkspaceId} with your actual Workspace ID.
US (Virginia)
POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation
Germany (Frankfurt)
POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation
When calling, replace {WorkspaceId} with your actual Workspace ID.
Note
- After the task is created successfully, use the
task_idreturned by the API to query the result. The task_id is valid for 24 hours. Do not create duplicate tasks. Use polling to obtain the result. - For beginner guidance, see Postman.
Request parametersRequest headersContent-Type The content type of the request. This parameter must be set to Authorization Request authentication. The API uses an Alibaba Cloud Model Studio API key for authentication. Example: Bearer sk-xxxx. X-DashScope-Async Asynchronous processing configuration parameter. Must be set to ImportantOmitting this header returns the error: "current user api does not support synchronous calls". Request bodymodel Model name. Example: wan2.6-image input Basic input information. parameters Image processing parameters. | |
Response parametersoutput Task output information. request_id Unique request identifier. Can be used for request tracing and troubleshooting. code Error code of the failed request. This parameter is not returned when the request succeeds. For more information, see Error codes. message Detailed information of the failed request. This parameter is not returned when the request succeeds. For more information, see Error codes. | Successful responseSave the task_id, which is used to query the task status and results. Error responseTask creation failed. See Error codes for troubleshooting. |
Step 2: Query the result by task ID
China (Beijing)
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
When calling, replace {WorkspaceId} with your actual Workspace ID.
Singapore
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
When calling, replace {WorkspaceId} with your actual Workspace ID.
US (Virginia)
GET https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Germany (Frankfurt)
GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
When calling, replace {WorkspaceId} with your actual Workspace ID.
Note
- Polling recommendation: Image generation takes a long time. We recommend using a polling mechanism with a reasonable query interval (such as 10 seconds) to obtain the result.
- Task status flow: PENDING (queuing) → RUNNING (processing) → SUCCEEDED (success)/ FAILED (failure).
- Result link: After the task succeeds, an image link is returned, valid for 24 hours. We recommend downloading it immediately and transferring it to permanent storage (such as Alibaba Cloud OSS).
- RPS limit: The query API defaults to 20 RPS. For higher-frequency queries or event notifications, we recommend configuring asynchronous task callbacks.
- More operations: For batch queries, task cancellation, and other operations, see Manage asynchronous tasks.
Request parametersRequest headersAuthorization Request authentication. The API uses an Alibaba Cloud Model Studio API key for authentication. Example: Bearer sk-xxxx. URL path parameterstask_id Task ID. | Query task resultFully replace |
Response parametersoutput Task output information. usage Output statistics. Only successful results are counted. request_id Unique request identifier. Can be used for request tracing and troubleshooting. code Error code of the failed request. This parameter is not returned when the request succeeds. For more information, see Error codes. message Detailed information of the failed request. This parameter is not returned when the request succeeds. For more information, see Error codes. | Successful task executionTask data (such as task status and image URLs) is retained for only 24 hours and automatically cleared after expiration. Be sure to save the generated images promptly. Task execution failureIf the task fails for some reason, relevant information is returned, and the code and message fields clearly indicate the cause of the error. See Error codes for troubleshooting. |
DashScope Python SDK
The SDK parameter naming is basically the same as the HTTP API, with the parameter structure encapsulated according to language features.
Since tasks take a long time, the SDK encapsulates the HTTP asynchronous call process at the underlying layer and supports both synchronous and asynchronous calling methods.
The specific duration depends on the number of queuing tasks and service execution conditions. Please wait patiently when obtaining the result.
ImportantMake sure the DashScope Python SDK version is 2.0.1 or later before running the following code. For updates, see Install the SDK.
The region values and API keys of each region are not interchangeable. The following examples use the Beijing region:
China (Beijing)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
When calling, replace {WorkspaceId} with your actual Workspace ID.
Singapore
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
When calling, replace {WorkspaceId} with your actual Workspace ID.
US (Virginia)
https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1
Germany (Frankfurt)
https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1
When calling, replace {WorkspaceId} with your actual Workspace ID.
The global deployment scope (Frankfurt region) only supports asynchronous calls.
Image editing
Synchronous call
Request example
import os
import dashscope
# 以下为华北2(北京)地域的配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的region取值不同。
client = dashscope.Client(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
# 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
workspace="{WorkspaceId}",
region="cn-beijing",
)
print("----sync call, please wait a moment----")
job = client.images.generate(
model='wan2.6-image',
prompt="参考图1的风格和图2的背景,生成番茄炒蛋",
# 参考图列表,支持本地文件 如 "file://umbrella1.png"
image_urls=[
"https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png",
"https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"
],
negative_prompt="",
prompt_extend=True,
watermark=False,
n=1,
parameters={"enable_interleave": False},
size="1K"
)
print(job)
Response example
The url is valid for 24 hours. Download the image promptly.
{
"request_id": "b6a4c68d-3a91-4018-ae96-3cf373xxxxxx",
"task_id": "127ec645-118f-4884-955d-0eba8dxxxxxx",
"status": "SUCCEEDED",
"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_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
},
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"image_count": 1,
"size": "1376*768",
"total_tokens": 0
}
}
Asynchronous call
Request example
import os
import dashscope
from dashscope.v2 import DashScopeError
# 以下为华北2(北京)地域的配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的region取值不同。
client = dashscope.Client(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
# 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
workspace="{WorkspaceId}",
region="cn-beijing",
)
# 创建异步任务
def create_async_task():
print("Creating async task...")
job = client.images.jobs.create(
model="wan2.6-image",
prompt='参考图1的风格和图2的背景,生成番茄炒蛋',
# 参考图列表,支持本地文件 如 "file://umbrella1.png"
image_urls=[
'https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png',
'https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp'
],
negative_prompt="",
prompt_extend=True,
watermark=False,
n=1,
parameters={"enable_interleave": False},
size="1K"
)
print("Task created successfully:", job)
return job # 返回任务
# 等待任务完成
def wait_for_completion(task_response):
print("Waiting for task completion...")
done = client.images.jobs.wait(task_response)
if done.succeeded:
print("Task succeeded!")
print("Response:", done)
else:
raise Exception(f"Task failed with status: {done.status}")
# 获取异步任务信息
def fetch_task_status(task_id):
print("Fetching task status...")
snapshot = client.images.jobs.fetch(task_id)
print("Task status:", snapshot.status)
print("Response details:", snapshot)
# 取消异步任务
def cancel_task(task_id):
print("Canceling task...")
response = client.images.jobs.cancel(task_id)
print("Task canceled successfully:", response.status)
# 主执行流程
if __name__ == "__main__":
try:
task = create_async_task()
wait_for_completion(task)
except DashScopeError as e:
print(f"HTTP返回码:{e.status_code}")
print(f"错误码:{e.code}")
print(f"错误信息:{e.message}")
print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
Response example
- Response example for creating a task
{
"request_id": "4fb3050f-de57-4a24-84ff-e37ee5xxxxxx",
"task_id": "127ec645-118f-4884-955d-0eba8dxxxxxx",
"status": "PENDING"
}
- Response example for querying the task result
The url is valid for 24 hours. Download the image promptly.
{
"request_id": "b2a7fab4-5e00-4b0a-86fe-8b9964xxxxxx",
"task_id": "127ec645-118f-4884-955d-0eba8xxxxxx",
"status": "SUCCEEDED",
"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_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
},
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"image_count": 1,
"size": "1376*768",
"total_tokens": 0
}
}
Interleaved text-image output
Synchronous call (streaming only)
Request example
import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message
# 以下为华北2(北京)地域的URL。请将{WorkspaceId}替换为您的百炼业务空间ID,各地域的URL不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
# 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
def sync_call_with_stream():
print("\n========== 同步调用 - 流式图文输出 ==========")
image_message = Message(
role="user",
content=[
{
"text": "给我一个3张图辣椒炒肉教程"
}
]
)
image_stream_res = ImageGeneration.call(
model="wan2.6-image",
api_key=api_key,
messages=[image_message],
stream=True, # 仅支持流式调用
negative_prompt="",
enable_interleave=True,
max_images=3,
size="1280*1280"
)
print("流式输出结果:")
for stream_res in image_stream_res:
print(stream_res)
if __name__ == "__main__":
sync_call_with_stream()
Response example (returned by the HTTP API)
The url is valid for 24 hours. Download the image promptly. The above is the streaming data chunk returned by the HTTP API (the current example code uses the 1.x calling method, whose printed results additionally contain fields such as status_code/code/message).
{"request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "辣椒"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 0, "characters": 0, "total_tokens": 28, "image_count": 0, "size": "0*0"}}
{"request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "炒"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 1, "characters": 0, "total_tokens": 29, "image_count": 0, "size": "0*0"}}
{"request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "肉"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 2, "characters": 0, "total_tokens": 30, "image_count": 0, "size": "0*0"}}
......
{"request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "。"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 398, "characters": 0, "total_tokens": 426, "image_count": 2, "size": "1280*1280"}}
{"request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "stop", "message": {"role": "assistant", "content": [{"type": "image", "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}], "audio": null, "finished": true}, "usage": {"input_tokens": 28, "output_tokens": 523, "characters": 0, "total_tokens": 551, "image_count": 3, "size": "1280*1280"}}
Asynchronous call
Request example
Note: The stream parameter is not required for asynchronous calls.
import os
import dashscope
from dashscope.v2 import DashScopeError
# 以下为华北2(北京)地域的配置,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域的region取值不同。
client = dashscope.Client(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
# 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
workspace="{WorkspaceId}",
region="cn-beijing",
)
def main():
"""异步调用 - 图文输出"""
print("========== wan2.6-image 异步调用 - 图文输出 ==========")
# 创建异步任务
print("---async call, creating task----")
job = client.images.jobs.create(
model="wan2.6-image",
prompt="给我一个3张图的辣椒炒肉教程",
# 异步调用不需要设置stream参数
negative_prompt="",
parameters={"enable_interleave": True, "max_images": 3},
size="1280*1280"
)
print(f"任务创建成功:")
print(job)
# 等待任务完成
print("\n---waiting for task completion----")
done = client.images.jobs.wait(job)
if done.succeeded:
print("任务完成!")
print(f"结果:")
print(f"图片URL: {done.image_urls}")
else:
print(f"任务失败,状态: {done.status}")
if __name__ == "__main__":
try:
main()
except DashScopeError as e:
print(f"HTTP返回码:{e.status_code}")
print(f"错误码:{e.code}")
print(f"错误信息:{e.message}")
print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
Response example
- Response example for creating a task
{
"request_id": "4fb3050f-de57-4a24-84ff-e37ee5xxxxxx",
"task_id": "5c67585e-a3be-4943-b04d-c3fbb2xxxxxx",
"status": "PENDING"
}
- Response example for querying the task result
The url is valid for 24 hours. Download the image promptly.
{
"request_id": "997a759b-fbb9-4b35-9a4d-6dab1xxxxxx",
"task_id": "5c67585e-a3be-4943-b04d-c3fbb2xxxxxx",
"status": "SUCCEEDED",
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "辣椒炒肉是湘菜中的经典,也是许多人心中的家常美味。它以鲜辣爽口、肉质鲜嫩而闻名,制作过程简单,却能带来极致的味蕾享受。今天,我们就来一起学习这道菜的制作方法。\n\n首先,准备好所有食材是成功的第一步。新鲜的猪肉、红绿辣椒、蒜瓣和姜片是必不可少的。将猪肉切成薄片,辣椒切段,蒜和姜切片备用。",
"type": "text"
},
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
},
{
"text": "接下来是炒制的关键环节。热锅凉油,放入蒜片和姜片爆香,接着倒入切好的肉片,快速翻炒至肉片变色。肉片炒香后,加入切好的辣椒段,继续翻炒,让辣椒的香气充分释放出来,与肉片的鲜美完美融合。",
"type": "text"
},
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
},
{
"text": "最后,加入适量的生抽、老抽、蚝油和少许糖调味,快速翻炒均匀,让每一片肉和辣椒都裹上酱汁。待汤汁收浓,即可关火出锅。这道色香味俱全的辣椒炒肉就大功告成了!",
"type": "text"
},
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
}
]
}
}
],
"task_metrics": {
"TOTAL": 1,
"SUCCEEDED": 1,
"FAILED": 0
},
"usage": {
"input_tokens": 29,
"output_tokens": 477,
"size": "1280*1280",
"total_tokens": 506,
"image_count": 3
}
}
DashScope Java SDK
The SDK parameter naming is basically the same as the HTTP API, with the parameter structure encapsulated according to language features.
Since tasks take a long time, the SDK encapsulates the HTTP asynchronous call process at the underlying layer and supports both synchronous and asynchronous calling methods.
The specific duration depends on the number of queuing tasks and service execution conditions. Please wait patiently when obtaining the result.
ImportantMake sure the DashScope Java SDK version is 2.22.6 or later before running the following code.
The base_url and API keys of each region are not interchangeable. The following examples use the Beijing region:
China (Beijing)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
When calling, replace {WorkspaceId} with your actual Workspace ID.
Singapore
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
When calling, replace {WorkspaceId} with your actual Workspace ID.
US (Virginia)
https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1
Germany (Frankfurt)
https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1
When calling, replace {WorkspaceId} with your actual Workspace ID.
The global deployment scope (Frankfurt region) only supports asynchronous calls.
Image editing
Synchronous call
Request example
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.Arrays;
import java.util.Collections;
/**
* wan2.6-image 图像编辑 - 同步调用示例
*/
public class Main {
static {
// 以下为北京地域url,各地域的base_url不同
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
}
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey="sk-xxx"
// 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/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(Arrays.asList(
// 支持多图输入,可以提供多张参考图片
Collections.singletonMap("text", "参考图1的风格和图2的背景,生成番茄炒蛋"),
Collections.singletonMap("image", "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"),
Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp")
)).build();
// 图像编辑使用普通同步调用,不需要设置stream和enable_interleave
ImageGenerationParam param = ImageGenerationParam.builder()
.apiKey(apiKey)
.model("wan2.6-image")
.messages(Collections.singletonList(message))
.n(1)
.size("1K")
.negativePrompt("")
.promptExtend(true)
.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());
}
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
basicCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
}
}
Response example
The url is valid for 24 hours. Download the image promptly.
{
"requestId": "b148327e-830f-414c-a8df-724dec28exxx",
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"total_tokens": 0,
"image_count": 1,
"size": "1376*768"
},
"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
},
"status_code": 200,
"code": "",
"message": ""
}
Asynchronous call
Request example
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.Arrays;
import java.util.Collections;
/**
* wan2.6-image 图像编辑 - 异步调用示例
*/
public class Main {
static {
// 以下为北京地域url,各地域的base_url不同
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
}
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey="sk-xxx"
// 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/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(Arrays.asList(
// 支持多图输入,可以提供多张参考图片
Collections.singletonMap("text", "参考图1的风格和图2的背景,生成番茄炒蛋"),
Collections.singletonMap("image", "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"),
Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp")
)).build();
ImageGenerationParam param = ImageGenerationParam.builder()
.apiKey(apiKey)
.model("wan2.6-image")
.n(1)
.size("1K")
.negativePrompt("")
.promptExtend(true)
.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("任务创建结果:");
System.out.println(JsonUtils.toJson(result));
String taskId = result.getOutput().getTaskId();
// 等待任务完成
waitTask(taskId);
}
public static void waitTask(String taskId) throws ApiException, NoApiKeyException {
ImageGeneration imageGeneration = new ImageGeneration();
System.out.println("\n---waiting for task completion----");
ImageGenerationResult result = imageGeneration.wait(taskId, apiKey);
System.out.println("任务完成结果:");
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
asyncCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
}
}
Response example
- Response example for creating a task
{
"status_code": 200,
"request_id": "9cd85950-2e26-4b2c-b562-1694cf928xxx",
"code": "",
"message": "",
"output": {
"task_id": "4c861fbe-af89-4a2f-8fc5-4bb15c313xxx",
"task_status": "PENDING"
},
"usage": null
}
- Response example for querying the task result
The url is valid for 24 hours. Download the image promptly.
{
"status_code": 200,
"request_id": "cbdf1424-306e-4a52-82f3-8bf5d8a99xxx",
"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": "1376*768",
"total_tokens": 0,
"image_count": 1
}
}
Interleaved text-image output
Synchronous call (streaming only)
Request example
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 io.reactivex.Flowable;
import java.util.Collections;
/**
* wan2.6-image 图文输出 - 流式调用示例
*/
public class Main {
static {
// 以下为北京地域url,各地域的base_url不同
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
}
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey="sk-xxx"
// 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
ImageGenerationMessage message = ImageGenerationMessage.builder()
.role("user")
.content(Collections.singletonList(
Collections.singletonMap("text", "给我一个3张图辣椒炒肉教程")
)).build();
// 图文输出必须使用流式调用
ImageGenerationParam param = ImageGenerationParam.builder()
.apiKey(apiKey)
.model("wan2.6-image")
.messages(Collections.singletonList(message))
.stream(true) // 必须开启流式输出
.enableInterleave(true)
.size("1280*1280")
.negativePrompt("")
.maxImages(3)
.build();
ImageGeneration imageGeneration = new ImageGeneration();
try {
System.out.println("---stream call for image interleave----");
Flowable<ImageGenerationResult> resultFlowable = imageGeneration.streamCall(param);
resultFlowable.blockingForEach(result -> {
System.out.println(JsonUtils.toJson(result));
});
} catch (ApiException | NoApiKeyException | UploadFileException e) {
throw new RuntimeException(e.getMessage());
}
}
public static void main(String[] args) {
try {
streamCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
Response example
The url is valid for 24 hours. Download the image promptly.
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":0,"total_tokens":28,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"辣椒"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":1,"total_tokens":29,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"炒"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":2,"total_tokens":30,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"肉"}]}}],"finished":false},"status_code":200,"code":"","message":""}
......
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":73,"total_tokens":101,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"。"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":198,"total_tokens":226,"image_count":1,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"image","image":"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":199,"total_tokens":227,"image_count":1,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"接下来"}]}}],"finished":false},"status_code":200,"code":"","message":""}
......
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":245,"total_tokens":273,"image_count":1,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"。"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":368,"total_tokens":396,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"image","image":"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":369,"total_tokens":397,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"最后"}]}}],"finished":false},"status_code":200,"code":"","message":""}
......
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":416,"total_tokens":444,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"锅"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":417,"total_tokens":445,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"。"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":541,"total_tokens":569,"image_count":3,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"stop","message":{"role":"assistant","content":[{"type":"image","image":"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}],"finished":true},"status_code":200,"code":"","message":""}
Asynchronous call
Request example
Note: The stream parameter is not required for asynchronous calls.
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;
/**
* wan2.6-image 图文输出 - 异步调用示例
*/
public class Main {
static {
// 以下为北京地域url,各地域的base_url不同
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
}
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey="sk-xxx"
// 各地域的API Key不同。获取API Key:https://help.aliyun.com/zh/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", "给我一个3张图的辣椒炒肉教程")
)).build();
ImageGenerationParam param = ImageGenerationParam.builder()
.apiKey(apiKey)
.model("wan2.6-image")
.size("1280*1280")
.enableInterleave(true)
.maxImages(3)
.negativePrompt("")
.messages(Collections.singletonList(message))
.build();
ImageGeneration imageGeneration = new ImageGeneration();
ImageGenerationResult result = null;
try {
System.out.println("---async call for image interleave, creating task----");
result = imageGeneration.asyncCall(param);
} catch (ApiException | NoApiKeyException | UploadFileException e) {
throw new RuntimeException(e.getMessage());
}
System.out.println("任务创建结果:");
System.out.println(JsonUtils.toJson(result));
String taskId = result.getOutput().getTaskId();
// 等待任务完成
waitTask(taskId);
}
public static void waitTask(String taskId) throws ApiException, NoApiKeyException {
ImageGeneration imageGeneration = new ImageGeneration();
System.out.println("\n---waiting for task completion----");
ImageGenerationResult result = imageGeneration.wait(taskId, apiKey);
System.out.println("任务完成结果:");
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
asyncCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
}
}
Response example
- Response example for creating a task
{
"requestId": "7d6c5760-334b-48c4-9b1e-08ee9c7fexxx",
"output": {
"task_id": "1bb9d9fa-bf1a-43dc-b5fe-366c1dc70xxx",
"task_status": "PENDING"
},
"status_code": 200,
"code": "",
"message": ""
}
- Response example for querying the task result
The url is valid for 24 hours. Download the image promptly.
{
"requestId": "6ed62b00-2225-4fc3-8ee3-2aed0b484xxx",
"usage": {
"input_tokens": 29,
"output_tokens": 471,
"total_tokens": 500,
"image_count": 3,
"size": "1280*1280"
},
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "辣椒炒肉是湘菜中的经典,也是许多人心中的家常美味。它以鲜辣爽口、肉质鲜嫩而闻名,制作过程简单,却能带来极致的味蕾享受。今天,我们就来一起学习这道菜的制作方法。\n\n首先,准备好所有食材是成功的第一步。新鲜的猪肉、红绿辣椒、蒜瓣和姜片是必不可少的。将猪肉切成薄片,辣椒切段,蒜和姜切片备用。",
"type": "text"
},
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
},
{
"text": "接下来是腌制猪肉。将切好的猪肉片放入碗中,加入少许生抽、料酒、淀粉和食用油,用手抓匀,腌制10-15分钟。这样处理过的肉片会更加滑嫩入味。",
"type": "text"
},
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
},
{
"text": "最后,热锅凉油,放入腌制好的肉片快速滑炒至变色,盛出备用。锅中留底油,放入蒜片和姜片爆香,再加入辣椒段翻炒出香味。随后倒入肉片,加入生抽、老抽、少许糖和蚝油,快速翻炒均匀,撒上葱花即可出锅。",
"type": "text"
},
{
"image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
"type": "image"
}
]
}
}
],
"task_id": "1bb9d9fa-bf1a-43dc-b5fe-366c1dc70836",
"task_status": "SUCCEEDED",
"finished": true,
"submit_time": "2026-01-16 18:26:32.082",
"scheduled_time": "2026-01-16 18:26:32.133",
"end_time": "2026-01-16 18:28:41.748"
},
"status_code": 200,
"code": "",
"message": ""
}
Limitations
- Data retention: The task
task_idand imageurlare retained for only 24 hours. They cannot be queried or downloaded after expiration. - Content moderation: Both the input
promptand the output image go through content safety moderation. Requests containing non-compliant content return the error "IPInfringementSuspect" or "DataInspectionFailed". For more information, see Error codes.
Billing and rate limiting
- For the model free quota and billing unit price, see Model pricing.
- For model rate limits, see Wan.
- Billing description: Billed by the number of images successfully generated. Failed model calls or processing errors incur no fees and do not consume the new user free quota.
Error codes
If the model call fails and returns an error message, see Error codes for troubleshooting.
FAQ
Q: Why does the code example fail to run?A: Upgrade your SDK to the latest version. For updates, see Install the SDK.