Alibaba Wan 2.7 Image Edit
Playground
Try it on WavespeedAI!Alibaba WAN 2.7 Image Edit performs prompt-driven image editing with multi-image reference support. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
Alibaba Wan 2.7 Image Edit
Alibaba Wan 2.7 Image Edit (alibaba/wan-2.7/image-edit) is a prompt-driven image-to-image editing model for making targeted changes to an existing image. Upload one or more reference images, describe the edit in plain English, and the model returns an updated image while aiming to preserve the original structure, subject identity, and composition.
It’s a strong fit for fast creative iteration: changing clothing, colors, materials, background mood, adding/removing simple objects, and applying style adjustments without rebuilding the entire scene.
Why it stands out
- Prompt-based edits with strong intent-following for common creative workflows.
- Designed to preserve composition and key subject features while applying localized changes.
- Multi-image reference support (1–9 inputs) for style/subject/background guidance and fusion edits.
- Seed control for repeatable outputs and more consistent iteration.
Capabilities
- Image-to-image editing from natural-language instructions
- Multi-image reference editing (1–9 inputs for flexible workflows)
- Style shifts, background swaps, object addition/removal, and material/color changes
- More stable iterative refinement when using a fixed seed
Parameters
| Parameter | Description |
|---|---|
| prompt* | The edit instruction describing what to change and what to keep (e.g., “change the jacket to leather, keep face and pose unchanged”). |
| images* | One or more input images to edit (1–9 images, uploaded files or public URLs). |
| seed | Optional integer for reproducibility; use a fixed seed to iterate with smaller prompt changes (-1 for random). |
How to use
-
Upload one or more images (the main image to edit; optionally add style/background references).
-
Write a clear prompt with two parts:
- What to change (the edit)
- What must stay the same (constraints) Example: “Replace the background with a rainy Tokyo street at night, keep the person’s face and pose unchanged.”
-
Optional: set a fixed seed to make iterations more comparable.
-
Run the model, preview the output, and iterate step-by-step if needed.
Pricing
- $0.03 per run
Notes
-
If edits spill into areas you want to preserve, strengthen constraints: “keep the face unchanged”, “keep the background intact”, “do not alter the text”.
-
If outputs look inconsistent, try:
- simplifying the prompt
- using a fixed seed
- iterating with smaller changes
Related Models
- Wan 2.7 Image Edit Pro — Pro version with 4K support for higher-resolution editing.
- Alibaba Wan 2.6 Image Edit — Previous generation Wan image-edit model with a similar prompt-driven workflow.
- Qwen Image Edit — General-purpose AI image editing with strong prompt adherence for everyday creative and product workflows.
- Google Nano Banana Pro (Edit) — High-fidelity image editing with strong composition preservation and reliable text handling.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/alibaba/wan-2.7/image-edit" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"size": "1024*1024",
"seed": -1
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| images | array | Yes | [] | 1 ~ 9 items | List of URLs of input images for editing (1-9 images). |
| prompt | string | Yes | - | The positive prompt for the generation. | |
| size | string | No | 1024*1024 | 768 ~ 2048 per dimension | The size of the generated image in pixels (width*height). |
| seed | integer | No | -1 | -1 ~ 2147483647 | The random seed to use for the generation. -1 means a random seed will be used. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | object | Array of URLs to the generated content. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |