Qwen-Image-3.0

Qwen-Image-3.0 is a unified image model from Alibaba for both text-to-image generation and prompt-guided image editing. It supports one to three reference images for editing, automatic prompt expansion, negative prompts, reproducible seeded generation, and adaptive or user-specified output sizes. It supports text-to-image resolutions from 512x512 up to 2048x2048 and image editing resolutions up to 1440x1440, making it a strong fit for high-quality visual creation, controlled edits, and multi-image reference workflows.

Complete technical specification for integration
Ready-to-use code snippets for common workflows
Step-by-step tutorials for advanced use cases
← All GuidesPrompt extension with Qwen Image 3.0
How promptExtend works on Qwen Image 3.0: what the LLM rewrite adds to a short prompt, how the direct and agent modes differ, and why extension and seeds don't mix.
Qwen Image 3.0 runs your prompt through an LLM before generating, expanding a short description into a fuller one. The rewrite is on unless you turn it off, so the prompt in your request is usually not the prompt the model rendered.
The hero below came from five words, a fishing harbour at dawn. Everything else in it was written by the rewrite:

a fishing harbour at dawn
The dock, the coiled rope, the moored fleet, the lighthouse, the pink dawn sky, and the boat's name were all invented. That is the trade in one image: you get production detail for free, and you stop choosing what the detail is.
Request shape
Extension lives in providerSettings.alibaba, where promptExtend defaults to on and promptExtendMode picks the rewriting strategy:
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'alibaba:qwen-image@3.0',
positivePrompt: 'a fishing harbour at dawn',
width: 3200,
height: 1800,
providerSettings: {
alibaba: {
promptExtend: true,
promptExtendMode: 'agent'
}
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "alibaba:qwen-image@3.0",
"positivePrompt": "a fishing harbour at dawn",
"width": 3200,
"height": 1800,
"providerSettings": {
"alibaba": {
"promptExtend": True,
"promptExtendMode": "agent"
}
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "imageInference",
"taskUUID": "d4e5f6a7-8b90-4c12-9d3e-5f6a7b8c9d01",
"model": "alibaba:qwen-image@3.0",
"positivePrompt": "a fishing harbour at dawn",
"width": 3200,
"height": 1800,
"providerSettings": {
"alibaba": {
"promptExtend": true,
"promptExtendMode": "agent"
}
}
}
]'runware run alibaba:qwen-image@3.0 \
positivePrompt="a fishing harbour at dawn" \
width=3200 \
height=1800 \
providerSettings.alibaba.promptExtend=true \
providerSettings.alibaba.promptExtendMode=agent{
"taskType": "imageInference",
"taskUUID": "d4e5f6a7-8b90-4c12-9d3e-5f6a7b8c9d01",
"model": "alibaba:qwen-image@3.0",
"positivePrompt": "a fishing harbour at dawn",
"width": 3200,
"height": 1800,
"providerSettings": {
"alibaba": {
"promptExtend": true,
"promptExtendMode": "agent"
}
}
}[
{
"taskType": "imageInference",
"taskUUID": "d4e5f6a7-8b90-4c12-9d3e-5f6a7b8c9d01",
"imageUUID": "3c8d5e21-9a4b-4f70-b6c2-8e1d0a2f3b45",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/3c8d5e21-9a4b-4f70-b6c2-8e1d0a2f3b45.jpg"
}
]promptExtendMode can only be sent when extension is on. Pairing it with promptExtend: false is rejected, since there is no rewrite for the mode to configure. Turning extension off means sending promptExtend alone.
What the rewrite adds
Both images below came from a desert road. The only difference is whether the rewrite ran:

a desert road

a desert road
Without the rewrite you get the noun you asked for: a road, some rock, a sky. With it you get a scene the rewrite decided you meant, complete with a sunset, a highway sign, cacti, and a parked truck carrying lettering nobody requested.
That last part is the thing to watch. The rewrite adds subjects, and added subjects can carry text and branding you did not ask for, which matters on any image heading for commercial use.
direct and agent
direct is the default and expands the prompt straightforwardly. agent reasons about the request before rewriting it, and travels further from what you typed. Both images came from a blacksmith at work:

a blacksmith at work

a blacksmith at work
direct returned a workshop in daylight with the tools on the wall, close to a documentary read of the phrase. agent moved the light source into the forge, dropped the ambient exposure, and framed tighter on the strike. Neither is more correct. agent is the one that makes creative decisions, so reach for it when the prompt is a starting point and for direct when it is closer to a brief.
Extension on a prompt you already wrote
The rewrite runs whether or not your prompt needs it. Below is a fully specified alpine scene, generated once with extension off and once with direct:

An alpine cable car station at 2,400 metres in hard winter light. The concrete and timber station building sits on the left third of the frame, its wide glass front reflecting the ridgeline. A single red gondola hangs still on the cable, centred, halfway between the station and the first pylon. Snow-loaded pines drop away down the slope on the right toward a valley filled with low cloud. Hard midday sun from the upper left, deep blue shadow in the snow, crisp air with no haze. Wide documentary mountain photograph, cool palette, no people, no text.

An alpine cable car station at 2,400 metres in hard winter light. The concrete and timber station building sits on the left third of the frame, its wide glass front reflecting the ridgeline. A single red gondola hangs still on the cable, centred, halfway between the station and the first pylon. Snow-loaded pines drop away down the slope on the right toward a valley filled with low cloud. Hard midday sun from the upper left, deep blue shadow in the snow, crisp air with no haze. Wide documentary mountain photograph, cool palette, no people, no text.
The first render placed the station on the left third and hung the gondola centred on the cable, which is what the prompt asked for. The second moved the camera in and rebuilt the station as a snow-roofed chalet. Nothing went wrong there, the rewrite simply had opinions about a description that already had them. The more precisely you have written, the more extension costs you.
Extension and reproducibility
With extension off, a fixed seed returns the same image every call:

A weathered dock worker in his sixties standing at the edge of a quay in early morning light, wearing a faded navy canvas jacket with the collar turned up, salt-grey stubble, deep lines around the eyes, looking off to the left of camera. Fishing boats and coiled rope blurred behind him. Documentary portrait, natural side light, shallow depth of field, muted coastal palette, no text.

A weathered dock worker in his sixties standing at the edge of a quay in early morning light, wearing a faded navy canvas jacket with the collar turned up, salt-grey stubble, deep lines around the eyes, looking off to the left of camera. Fishing boats and coiled rope blurred behind him. Documentary portrait, natural side light, shallow depth of field, muted coastal palette, no text.
Turn extension on, keep everything else identical, and the two calls diverge:

A weathered dock worker in his sixties standing at the edge of a quay in early morning light, wearing a faded navy canvas jacket with the collar turned up, salt-grey stubble, deep lines around the eyes, looking off to the left of camera. Fishing boats and coiled rope blurred behind him. Documentary portrait, natural side light, shallow depth of field, muted coastal palette, no text.

A weathered dock worker in his sixties standing at the edge of a quay in early morning light, wearing a faded navy canvas jacket with the collar turned up, salt-grey stubble, deep lines around the eyes, looking off to the left of camera. Fishing boats and coiled rope blurred behind him. Documentary portrait, natural side light, shallow depth of field, muted coastal palette, no text.
Same man, different photograph: the framing, the distance, and the dock all changed. The rewrite is not covered by your seed, so it produces a fresh prompt on every call and the seed then locks the noise for a description that keeps moving. Two runs at a fixed seed with extension on are no closer to each other than two unrelated renders.
"providerSettings": {
"alibaba": {
"promptExtend": false
}
}That block is the whole fix. Anything that has to be repeatable, whether a regression test or a client revision, needs extension off.
Tips
-
Leave it on for exploration. Short prompts plus
agentis a fast way to find a direction you would not have written, and it costs one field. -
Turn it off before you commit. Once the composition matters, extension is a second author working from a copy of your brief.
-
Write the prompt you want instead of a shorter one. Extension is not a substitute for specifying, it is a substitute for deciding.
-
Check outputs for invented copy. The rewrite adds signage, packaging, and lettering on its own, which is a problem for commercial work and for anything going near a brand.
-
Send
promptExtendalone when disabling. IncludingpromptExtendModealongsidefalseis rejected.