Qwen Image Edit 2511 LoRA

Qwen Image Edit 2511 LoRA

Playground

Try it on WaveSpeedAI!

Qwen Image Edit 2511 LoRA is an enhanced version with custom LoRA support for personalized styles. It delivers stronger edit consistency, robust multi-person identity/pose consistency, custom LoRA styles, enhanced industrial/product design, and improved geometric reasoning for structure-preserving edits. Built for stable production use with a ready-to-use REST API, no cold starts, and predictable pricing.

Features

Qwen-Image-Edit-2511-LoRA is an enhanced version of Qwen-Image-Edit-2511 with custom LoRA support, enabling personalized style transfer and character-consistent editing. Built on the Qwen-Image 20B (MMDiT) architecture, it delivers all the benefits of 2511 plus the flexibility to apply custom-trained LoRA models for unique artistic styles, brand consistency, or character preservation.


What’s new in 2511-LoRA

  • Custom LoRA support Apply your own trained LoRA models or community LoRAs for personalized styles, characters, or brand aesthetics.

  • Multi-LoRA blending Combine multiple LoRAs with individual weight control for complex style combinations.

  • All 2511 improvements included

  • Stronger multi-person consistency
  • Better industrial & product editing
  • Reduced drift across edits
  • Improved geometric reasoning

Core capabilities

  • Custom style transfer Apply trained LoRA models to maintain consistent artistic style, character appearance, or brand identity across edits.

  • Dual-mode editing

  • Appearance editing: add/remove/modify elements while keeping other regions visually consistent.
  • Semantic editing: global style/pose/scene transformations that preserve intent while allowing broader pixel changes.
  • Precise text editing (when applicable) Add, delete, or replace on-image text while keeping natural typography behavior (spacing, alignment, style).

  • Style preservation Maintains lighting, palette, and overall look while applying targeted changes.


Best for

  • Character-consistent projects — maintain character appearance across multiple edits
  • Brand & marketing — apply brand-specific styles consistently
  • Artistic workflows — use custom artistic styles with LoRA models
  • Multi-person projects — group photos, team portraits, event shots
  • Industrial & product design — product mockups with custom brand styles
  • Identity-preserving edits — portraits, characters, avatar refinement with style control

Example prompts

  • Custom style: Add a sunset background while maintaining the anime style from my LoRA.
  • Multi-person: Add a third person matching the existing lighting and apply my character LoRA.
  • Product design: Convert this product to match my brand style guide (using brand LoRA).
  • Character consistency: Keep the character’s appearance from my trained LoRA and change the background to a futuristic city.

Parameters

ParameterDescription
prompt*The edit instruction describing what to change and what to keep.
images*Input images to edit or reference. Up to 3 images maximum (the first image is typically treated as the main base image).
lorasArray of LoRA models to apply. Each LoRA object contains path (URL/path to LoRA file) and optional scale (weight 0-2, default 1.0).

How to use

  1. Add your base image as the first item in images (you should see a preview in the UI).
  2. Optionally add 1–2 more reference images (maximum 3 total) to guide style, subject details, or composition.
  3. (Optional) Add LoRA models by providing the path/URL and weight for each LoRA you want to apply.
  4. Write a clear prompt describing the edit and constraints (examples: ‘keep face unchanged’, ‘keep pose’, ‘keep background’).
  5. Run the model and review the result.
  6. Iterate by adjusting LoRA weights or tightening constraints for best consistency.

Supported output formats typically include JPG / PNG / WEBP (as exposed by the endpoint).


LoRA Usage Tips

  • Start with lower weights (0.5-0.8) and increase gradually for subtle style application
  • Combine multiple LoRAs for complex effects, but keep total weight under 2.0 for stability
  • Use publicly accessible URLs for LoRA files (or platform-supported paths)
  • Test LoRAs individually before combining to understand their effects

Pricing

  • $0.025 per edited image (with LoRA support)

Note

If you’re using image URLs or LoRA URLs (instead of uploading locally), make sure they’re publicly accessible. If the URL is valid, the interface will display a preview before you run the job.



Reference

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,
  "output_format": "jpeg"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/qwen-image/edit-2511-lora" \
  -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 itemsThe images to edit. A maximum of 3 reference images can be uploaded.
lorasarray<object>No0 ~ 3 itemsArray of LoRA models to apply. Each LoRA can have a custom scale/weight.
seedintegerNo-1-The random seed to use for the generation. -1 means a random seed will be used.
output_formatstringNojpegjpeg, png, webpThe format of the output image.
enable_base64_outputbooleanNofalse-If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN.
enable_sync_modebooleanNofalse-If set to `true`, the request attempts to wait for the generated result and return outputs in the same response. If the result is not ready within the sync wait window, the API can return a timeout body while the task continues processing. This option is only available via the API and is supported only by some models.

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.