Alibaba Wan 2.6 Image Edit

Alibaba Wan 2.6 Image Edit

Playground

Try it on WaveSpeedAI!

WAN 2.6 Image-Edit turns prompts into precise photo edits—adjusting color and lighting, restyling aesthetics, replacing backgrounds, removing objects, and refining details while preserving subject identity. Built for stable, repeatable image-to-image pipelines. Ready-to-use REST API, best performance, no cold starts, affordable pricing.

Features

WAN 2.6 Image Edit (/wan-2.6/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 for style/subject/background guidance (useful for fusion edits).
  • Seed control for repeatable outputs and more consistent iteration.
  • Negative prompting support to reduce artifacts (text, watermarks, extra fingers, etc.).

Capabilities

  • Image-to-image editing from natural-language instructions
  • Multi-image reference editing (1–4 inputs recommended, depending on workflow)
  • Style shifts, background swaps, object addition/removal, and material/color changes
  • More stable iterative refinement when using a fixed seed

Parameters

ParameterDescription
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 (uploaded files or public URLs).
seedOptional integer for reproducibility; use a fixed seed to iterate with smaller prompt changes.
negative_promptOptional list of things you don’t want (e.g., “text, watermark, extra fingers, blurry face”).

How to use

  1. Upload one or more images (the main image to edit; optionally add style/background references).
  2. 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.”
  1. Optional: add a negative_prompt to reduce unwanted artifacts.
  2. Optional: set a fixed seed to make iterations more comparable.
  3. Run the model, preview the output, and iterate step-by-step if needed.

Pricing

  • $0.035 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


  • WAN 2.5 Image Edit — Previous WAN image-edit model with a similar prompt-driven workflow for fast image revisions.
  • Qwen Image Edit — General-purpose AI image editing with strong prompt adherence for everyday creative and product workflows.
  • Qwen Image Edit Plus — Higher-quality image editing variant for cleaner results and better detail retention on complex scenes.
  • 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,
  "enable_prompt_expansion": false
}
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.6/image-edit" \
  -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
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
imagesarray<string>Yes-0 ~ 3 itemsList of URLs of input images for editing. The maximum number of images is 3.
seedintegerNo-1-The random seed to use for the generation. -1 means a random seed will be used.
enable_prompt_expansionbooleanNofalse-If set to true, the prompt optimizer will be enabled.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<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.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.