Alibaba Wan 2.7 Image Edit Pro API Documentation
Playground
Try it on WaveSpeedAI!WAN 2.7 Image Edit Pro performs prompt-driven image editing with multi-image reference support and up to 2K output. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Wan 2.7 Image Edit Pro is the professional tier of prompt-driven image editing model, delivering higher-fidelity results for production-grade workflows. Upload one or more reference images, describe the edit in plain language, and get a high-resolution updated image — while preserving the original structure, subject identity, and composition.
Ideal for retouching product shots, high-resolution background swaps, detailed style transfers, and any editing task where maximum output quality matters.
- Looking for a lower-cost option? Try Wan 2.7 Image Edit
Why Choose This?
-
Higher resolution output Generate edited images at up to 2048×2048 for print-ready assets, large-format displays, and high-DPI screens.
-
Natural-language editing Describe what to change and what to keep — the model follows your intent accurately for common creative workflows.
-
Multi-image reference support Upload 1 to 3 input images for style, subject, or background guidance and fusion edits.
-
Composition preservation Designed to preserve subject identity, pose, and overall structure while applying localized changes.
-
Seed control Fix a seed for repeatable outputs and more consistent iteration across prompt variations.
Parameters
| Parameter | Required | Description |
|---|---|---|
| images | Yes | One or more input images to edit (1–3 images, uploaded files or public URLs). |
| prompt | Yes | Edit instruction describing what to change and what to keep. |
| size | No | Output dimensions. Defaults to the original image size if not specified. |
| seed | No | Integer for reproducibility. Use a fixed seed to iterate with smaller prompt changes. -1 for random. |
How to Use
- Upload your image(s) — provide the main image to edit. Add up to 3 images for style or background reference.
- Write your prompt — describe both what to change and what must stay the same. For example: “Color-match the skirt in Figure 1 according to the colors of the bird in Figure 2, keeping the clothing style and model unchanged.”
- Set size (optional) — specify output dimensions, or leave empty to match the original image size.
- Set seed (optional) — fix a seed to make iterations more comparable and reproducible.
- Submit — preview the output and iterate step by step if needed.
Pricing
Just $0.075 per run.
Best Use Cases
- Product Photography — Retouch and edit product images at high resolution for e-commerce and print.
- Fashion & Apparel — Swap clothing styles, colors, or materials while preserving pose and identity.
- Background Replacement — Change scene environment or mood at high fidelity without affecting the subject.
- Style Transfer — Apply detailed artistic or visual style shifts to an existing image.
- Print & Large Format — Generate edited assets at resolutions suitable for physical print and high-DPI displays.
Pro Tips
- Structure your prompt in two parts: what to change, and what to keep. Example: “Change the jacket to leather, keep the face and pose unchanged.”
- If edits spill into areas you want to preserve, strengthen constraints: “keep the face unchanged”, “keep the background intact”, “do not alter the text.”
- Use a fixed seed to make iterative prompt refinements more comparable across runs.
- If outputs look inconsistent, simplify your prompt and iterate with smaller changes.
- Higher output resolutions will take longer to generate — use the standard model for rapid iteration and Pro for final renders.
Notes
- Both images and prompt are required fields.
- Output size defaults to the original image dimensions if size is not specified.
- Output size range is 512–4096 pixels per dimension, with total pixels between 768×768 and 2048×2048 and aspect ratio between 1:8 and 8:1.
Related Models
- Wan 2.7 Image Edit — Standard version at lower cost for everyday editing needs.
- 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
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"images": [
"https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
],
"seed": -1
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/alibaba/wan-2.7/image-edit-pro" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | The positive prompt for the generation. | |
| images | array<string> | Yes | - | 0 ~ 9 items | List of URLs of input images for editing (1-9 images). |
| seed | integer | No | -1 | - | 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 | Output values, usually URL strings; some models return text strings or structured result objects (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.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 |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to poll for the prediction result |
| data.status | string | Status: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created |
| 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 |