Introduction
Qwen Image 2.1 LoRA Editing applies your own LoRA weights while revising one to ten reference images. It is the same custom-weights setup as the text-to-image endpoint, pointed at work you already have rather than at a blank frame.
There is no review of the weights you load and no content filter on the result.
Choose a Qwen Image 2.1 LoRA mode by starting material
| Starting material | Mode |
|---|---|
| Source images plus your own weights | Qwen Image 2.1 LoRA Editing |
| A brief plus your own weights | Qwen Image 2.1 LoRA Text to Image |
| Editing without custom weights | Qwen Image 2.1 Image Editing |
Key features & highlights
Bring a character LoRA to work already in progress
A LoRA you can only start new work with is far less useful than one you can apply to an approved frame. This endpoint takes both: up to ten references and up to three weight files in the same request.
Weights and references solve different halves of consistency
References hold composition, setting and the specific frame; the LoRA holds identity across every frame. Using both is steadier than leaning hard on either.
Uncensored on both sides
No review of the weights, no filter on the output, and a source stays as it is unless the instruction says otherwise.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Up to 5,000 characters. There is no negative prompt on this family, so exclusions belong here too. at least 1 characters · at most 5000 characters |
image_urls | Yes | Supply one to ten reference images to Qwen Image 2.1 LoRA for reference editing with custom 2.1 weights, and tell the instruction which source provides the person, object or set… at least 1 items · at most 10 items |
aspect_ratio | No | For reference editing with custom 2.1 weights in Qwen Image 2.1 LoRA, omit |
resolution | No | For reference editing with custom 2.1 weights, Qwen Image 2.1 LoRA exposes 1k, 1.5k, 2k; the tier changes the quote, and editing references add to it |
loras | No | Load up to three compatible LoRA files in Qwen Image 2.1 LoRA, each with a public path and scale from 0 to 4; test a visible style change before using those weights for referenc… Default: |
output_format | No | JPEG by default; PNG for compositing, WebP to ship straight to a page. Does not change the price or the render. |
seed | No | Use seed in Qwen Image 2.1 LoRA for controlled comparisons of reference editing with custom 2.1 weights; save the chosen image itself because a matching seed does not guarantee… |
Pricing
| Specification | Price |
|---|---|
| $0.042 / image |
| $0.078 / image |
| $0.15 / image |
Use cases
Applying a character LoRA to shots you already approved
The expensive part of a shoot is rarely the generation — it is arriving at a frame everyone signed off on. This endpoint lets you keep that frame and change who is in it: send the approved composition as a reference, load the character LoRA, and let the weights carry the identity while lighting, staging and crop stay exactly where they were.
Bringing a back catalogue into the current house style
Point a style LoRA at work generated months ago. Send the old frames as references, load the style weights at a moderate scale, and re-run them so an archive shot and a new one sit together on the same page without an obvious seam between them.
Scene work built from a reference you control
Start from a figure you already generated and add the second subject, the wardrobe or the setting. Instructions are carried out as written and uncensored weights load without review, so the scene can be assembled in steps rather than gambled on in one prompt.
Wardrobe and location swaps with the person held fixed
Two references — one carrying the person, one carrying the garment or the room — plus a character LoRA, and a prompt that says which source is which. Change the room, keep the face; change the outfit, keep both.
Prompt guide & pro tips
Name what every reference contributes before you name the change
The model does not infer roles from order or from filename. Write it out: "the first image is the woman, the second is the room she is standing in, the third is the coat." Without that sentence a multi-reference request blends the sources instead of editing with them, and the result looks like an averaging artefact rather than a mistake you can debug.
Do not let the prompt and the LoRA describe the same thing
When a character LoRA is loaded, describe the scene, the action and the light — not the face. Restating features the weights already encode pulls the render in two directions and usually produces something that resembles neither. Let the LoRA own identity and let the prompt own everything around it.
Put protections in the instruction, because there is no negative prompt
State plainly what must survive the edit: "keep her exactly as in the source, add nothing to her wardrobe" or "do not change the hair length." An editing model left to its own judgement will tidy things you did not ask it to tidy, and on uncensored work that tidying is the whole failure mode.
Price the request before you send it, not after
Two things move the cost here at once: the reference count and the resolution tier, with the LoRA premium on top. Ten references with three LoRAs at 2k is the most expensive shape this family accepts. The pre-submit estimate is authoritative — read it on large requests instead of assuming the tier alone sets the price.
Verify a new LoRA changes something before trusting a batch
Weights built for a different base architecture can load with no error and have almost no visible effect. Run one deliberately obvious prompt against new weights, confirm the output moved, then queue the batch.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/qwen-image-2.1-lora/edit",
"input": {
"aspect_ratio": "1:1",
"image_urls": [
"https://example.com/reference.png"
],
"output_format": "jpeg",
"prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
"resolution": "1k"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.


















