---
title: Prompting Qwen Image 3.0 — Qwen-Image-3.0 | Runware Docs
url: https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting
description: How to prompt Qwen Image 3.0, from sizing inside its pixel budget to layering a scene description, steering with negativePrompt, and locking a result with a seed.
---
Qwen Image 3.0 is a unified image model from Alibaba, where the same request generates from a prompt or edits from reference images depending on what you pass. Two properties shape how you write for it. Output size is **a pixel budget rather than a preset list**, so you name any width and height whose area fits. And an LLM **rewrites your prompt before the model sees it** unless you switch that off.

![A Nordic restaurant dining room at blue hour with long pale timber tables, a wall of tall windows, and rows of glass pendants glowing amber over the tables](https://runware.ai/docs/assets/output-hero.BIYpyU4d_Zp5kLR.jpg)

> **Prompt**: A Nordic restaurant dining room photographed at blue hour from a low corner angle. Long pale ash timber tables run toward a wall of tall steel-framed windows, each table set with a single stem of dried grass in a small glass bottle. Rows of hand-blown glass pendants hang low over the tables, their filaments glowing warm amber against the cool blue light outside. A dark plastered wall on the left carries a single long shelf of ceramic vessels. Polished concrete floor with soft reflections of the pendants. Editorial interiors photography, wide angle, warm-to-cool colour contrast, no people, no text.

Every example in this guide sets `promptExtend` to `false`, so **the prompt you read is the prompt the model received**. Leaving it on is a different way to work and has [its own guide](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompt-extension).

### [Request shape](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting#request-shape)

A generation needs a `positivePrompt`. **Everything else is optional**: `width` and `height` default to 1024, and `negativePrompt` and `seed` are there when you want them.

TypeScriptPythoncURLCLIJSON

```typescript
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 Nordic restaurant dining room photographed at blue hour from a low corner angle. Long pale ash timber tables run toward a wall of tall steel-framed windows. Rows of hand-blown glass pendants hang low over the tables, their filaments glowing warm amber against the cool blue light outside. Editorial interiors photography, wide angle, no people, no text.',
  width: 3072,
  height: 2048,
  providerSettings: {
    alibaba: {
      promptExtend: false
    }
  }
})
```

```python
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 Nordic restaurant dining room photographed at blue hour from a low corner angle. Long pale ash timber tables run toward a wall of tall steel-framed windows. Rows of hand-blown glass pendants hang low over the tables, their filaments glowing warm amber against the cool blue light outside. Editorial interiors photography, wide angle, no people, no text.",
            "width": 3072,
            "height": 2048,
            "providerSettings": {
                "alibaba": {
                    "promptExtend": False
                }
            }
        })

asyncio.run(main())
```

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "imageInference",
      "taskUUID": "b2c3d4e5-6f70-4812-9a3b-4c5d6e7f8091",
      "model": "alibaba:qwen-image@3.0",
      "positivePrompt": "A Nordic restaurant dining room photographed at blue hour from a low corner angle. Long pale ash timber tables run toward a wall of tall steel-framed windows. Rows of hand-blown glass pendants hang low over the tables, their filaments glowing warm amber against the cool blue light outside. Editorial interiors photography, wide angle, no people, no text.",
      "width": 3072,
      "height": 2048,
      "providerSettings": {
        "alibaba": {
          "promptExtend": false
        }
      }
    }
  ]'
```

```bash
runware run alibaba:qwen-image@3.0 \
  positivePrompt="A Nordic restaurant dining room photographed at blue hour from a low corner angle. Long pale ash timber tables run toward a wall of tall steel-framed windows. Rows of hand-blown glass pendants hang low over the tables, their filaments glowing warm amber against the cool blue light outside. Editorial interiors photography, wide angle, no people, no text." \
  width=3072 \
  height=2048 \
  providerSettings.alibaba.promptExtend=false
```

```json
{
  "taskType": "imageInference",
  "taskUUID": "b2c3d4e5-6f70-4812-9a3b-4c5d6e7f8091",
  "model": "alibaba:qwen-image@3.0",
  "positivePrompt": "A Nordic restaurant dining room photographed at blue hour from a low corner angle. Long pale ash timber tables run toward a wall of tall steel-framed windows. Rows of hand-blown glass pendants hang low over the tables, their filaments glowing warm amber against the cool blue light outside. Editorial interiors photography, wide angle, no people, no text.",
  "width": 3072,
  "height": 2048,
  "providerSettings": {
    "alibaba": {
      "promptExtend": false
    }
  }
}
```

Response

```json
[
  {
    "taskType": "imageInference",
    "taskUUID": "b2c3d4e5-6f70-4812-9a3b-4c5d6e7f8091",
    "imageUUID": "7a1f3c92-5b8d-4e60-a2c7-9d0e1f2a3b4c",
    "imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/7a1f3c92-5b8d-4e60-a2c7-9d0e1f2a3b4c.jpg"
  }
]
```

### [Sizing inside the pixel budget](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting#sizing-inside-the-pixel-budget)

Most models hand you a menu of sizes. Qwen Image 3.0 gives you **a total pixel count to spend**, and any `width` and `height` are valid as long as their product lands inside it. Text-to-image runs from 262,144 up to **6,553,600 pixels**, which is 2560 × 2560 square, 3200 × 2048 landscape, or anything else that multiplies out under the ceiling.

The three renders below are one prompt at three shapes. **The aspect ratio is not a crop**, it changes what the model composes into the frame:

![A green-painted corner florist shop with tiered stands of white flowers and eucalyptus in warm late-afternoon light](https://runware.ai/docs/assets/output-aspect-square.Bdo9bwld_JCmvU.jpg)

*2432 × 2432, the shopfront fills the frame*

> **Prompt**: A corner florist shop on a European city street in late afternoon. Deep green painted timber shopfront with a wide open doorway, tiered wooden stands outside crowded with buckets of eucalyptus, white ranunculus, and trailing ivy. A hand-lettered slate board leans against the lowest stand. Warm low sun rakes across the pavement from the right, throwing long soft shadows. Photoreal editorial street photography, no people, no readable text.

![The same florist shop seen from further back, with the pavement and street receding to the right](https://runware.ai/docs/assets/output-aspect-wide.B8cts27L_Z12G3mv.jpg)

*3200 × 1800, the street enters the shot*

> **Prompt**: A corner florist shop on a European city street in late afternoon. Deep green painted timber shopfront with a wide open doorway, tiered wooden stands outside crowded with buckets of eucalyptus, white ranunculus, and trailing ivy. A hand-lettered slate board leans against the lowest stand. Warm low sun rakes across the pavement from the right, throwing long soft shadows. Photoreal editorial street photography, no people, no readable text.

![The same florist shop framed vertically, showing the upper storey of the building above the shopfront](https://runware.ai/docs/assets/output-aspect-tall.CQswcs3D_Z1gELT9.jpg)

*1800 × 3200, the building above comes in*

> **Prompt**: A corner florist shop on a European city street in late afternoon. Deep green painted timber shopfront with a wide open doorway, tiered wooden stands outside crowded with buckets of eucalyptus, white ranunculus, and trailing ivy. A hand-lettered slate board leans against the lowest stand. Warm low sun rakes across the pavement from the right, throwing long soft shadows. Photoreal editorial street photography, no people, no readable text.

The square render gives the shopfront the whole frame. The landscape version pulls back far enough for the pavement and the street to matter. The portrait version keeps the stands and gains the storey above them. **Pick the shape before you write the prompt**, because the composition language you choose ("wide", "from further back", "the building above") only pays off if the canvas has room for it.

> [!WARNING]
> The budget **drops to 2,250,000 pixels** as soon as the request carries `inputs.referenceImages`. A 3072 × 2048 call that works for text-to-image fails the moment you add a reference, with `Invalid image pixels. Total pixels (width x height) must be between 262144 and 2250000`. [Reference images](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/reference-images) covers sizing for that mode.

### [Layering a prompt](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting#layering-a-prompt)

A short prompt is a valid prompt. It just leaves every decision to the model:

![A bakery display case filled with rows of croissants and baguettes on wire racks under shelf lighting](https://runware.ai/docs/assets/output-prompt-brief.Bogdb5qa_1w6i0m.jpg)

*"a bakery counter"*

> **Prompt**: a bakery counter

![A marble bakery counter running diagonally with a basket of sourdough boules, croissants under a glass dome, a brass cake stand, and oak shelving of paper bags behind](https://runware.ai/docs/assets/output-prompt-layered.CuKG9i2r_2qU5bg.jpg)

*The same subject, fully specified*

> **Prompt**: A neighbourhood bakery counter shot from customer height at opening time. A long marble-topped counter runs diagonally across the frame, stacked with woven baskets of sourdough boules, a tray of glossy laminated pastries under a glass dome, and a slim brass cake stand holding a single tall canele tower. Behind the counter, open oak shelving carries rows of unlabelled paper bags and a warm brass scale. Morning daylight enters from a window on the left, catching the flour dust in the air. Photoreal editorial food photography, shallow depth of field on the pastries, warm neutral palette, no people, no readable text.

Three words returned a competent stock photograph of a display case. The second prompt got **the counter, the props, and the light that were asked for**, because each of those was named. The difference is not prompt length, it is which decisions you kept.

The longer prompt is built in layers:

**[Subject]** A neighbourhood bakery counter shot from customer height at opening time, **[Composition and framing]** A long marble-topped counter runs diagonally across the frame, stacked with woven baskets of sourdough boules, a tray of glossy laminated pastries under a glass dome, and a slim brass cake stand holding a single tall canele tower, **[Environmental detail]** Behind the counter, open oak shelving carries rows of unlabelled paper bags and a warm brass scale, **[Lighting]** Morning daylight enters from a window on the left, catching the flour dust in the air, **[Style]** Photoreal editorial food photography, shallow depth of field on the pastries, warm neutral palette, no people, no readable text

**Lead with the subject.** Opening on style ("a beautifully lit editorial photograph of...") tunes the treatment before the model knows what it is composing, and the subject ends up serving the adjectives. Naming the object first anchors everything after it.

**Counts and positions are honored when you state them.** "A tray under a glass dome" and "shelving behind the counter" both landed where the prompt put them. Vague quantities ("some pastries", "various baskets") give the model licence it will use.

### [Steering with `negativePrompt`](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting#steering-with-negativeprompt)

`negativePrompt` names what to keep out. It **trims a render rather than redirecting it**, so treat it as a cleanup pass over a prompt that already works:

![A hotel room with a white-linen platform bed, a black arc reading lamp, a travertine side table, and a tall window showing treetops](https://runware.ai/docs/assets/output-negative-off.sNqxvb2__Z8aOSp.jpg)

*No negative prompt*

> **Prompt**: A quiet hotel room interior in the late morning. A low platform bed with crisp white linen sits against a warm limewash wall, a slim black reading lamp arcs over one side, and a rounded travertine side table holds a single glass of water. A tall window on the right frames a soft view of green treetops. Wide interiors photograph, natural daylight, calm neutral palette.

![The same hotel room with a plainer window, bare surfaces, and no reflections in the glass](https://runware.ai/docs/assets/output-negative-on.DM2E9S7s_ZQstH6.jpg)

*Clutter, reflections, and signage ruled out*

> **Prompt**: A quiet hotel room interior in the late morning. A low platform bed with crisp white linen sits against a warm limewash wall, a slim black reading lamp arcs over one side, and a rounded travertine side table holds a single glass of water. A tall window on the right frames a soft view of green treetops. Wide interiors photograph, natural daylight, calm neutral palette.

Both renders answer the prompt. The second one **holds the surfaces bare and drops the window reflections** that the first let in. The shift is real but modest, which is what to expect: when the positive prompt is already specific, there is little left for a negative to remove.

```json
"negativePrompt": "people, reflections in the window, clutter on surfaces, patterned wallpaper, visible text, signage, watermark, harsh contrast"
```

Name **categories of failure, not subjects you never mentioned**. Listing "cars" in a negative prompt for a hotel room spends words on something that was never going to appear.

### [Seeds and repeatability](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting#seeds-and-repeatability)

`seed` is new in 3.0, and it **fixes the noise the render starts from**. Same prompt, same seed, same image. Change the seed and you get another take on the same description:

![A ceramicist's workbench with a half-finished vase on a wheel head, wire tools in a row, and a stack of blue-glazed test tiles](https://runware.ai/docs/assets/output-seed-a.DiQKFkGz_VA85T.jpg)

*seed 101*

> **Prompt**: A ceramicist's workbench in a daylit studio. A half-finished stoneware vase sits centred on a spattered wooden wheel head, surrounded by wire tools laid in a row, a shallow bowl of grey slip, and a stack of bisque test tiles glazed in muted blues. Dust and clay marks across the bench surface. Overhead north light, documentary craft photography, muted earth palette, no people, no text.

![The same workbench from a lower angle with the tools spread along the front edge and a mug behind the wheel](https://runware.ai/docs/assets/output-seed-b.D_JsV352_27j41m.jpg)

*seed 202*

> **Prompt**: A ceramicist's workbench in a daylit studio. A half-finished stoneware vase sits centred on a spattered wooden wheel head, surrounded by wire tools laid in a row, a shallow bowl of grey slip, and a stack of bisque test tiles glazed in muted blues. Dust and clay marks across the bench surface. Overhead north light, documentary craft photography, muted earth palette, no people, no text.

![The same workbench with a taller vase, the tile stack moved to the right, and shelves of plaster moulds behind](https://runware.ai/docs/assets/output-seed-c.-Fubkjk2_2sqNqn.jpg)

*seed 303*

> **Prompt**: A ceramicist's workbench in a daylit studio. A half-finished stoneware vase sits centred on a spattered wooden wheel head, surrounded by wire tools laid in a row, a shallow bowl of grey slip, and a stack of bisque test tiles glazed in muted blues. Dust and clay marks across the bench surface. Overhead north light, documentary craft photography, muted earth palette, no people, no text.

Every element the prompt named is in all three. What moves is everything it left open: the camera height, where the tools lie, what fills the background. **A seed is how you keep a render you liked** while you edit the wording around it, and how you hand a colleague the exact image rather than a description of it.

> [!WARNING]
> Reproducibility needs `promptExtend` set to `false`. With extension on, the same seed and the same prompt produce **a different image on every call**, because the rewrite that runs first is not itself seeded.

### [Tips](https://runware.ai/docs/models/alibaba-qwen-image-3-0/guides/prompting#tips)

1. **Set `promptExtend` to `false` while you iterate.** Otherwise you are tuning a prompt the model never sees, and two runs of the same wording will not match.
    
2. **Choose the canvas before the wording.** The aspect ratio decides what fits, so a prompt written for a landscape banner wastes its composition language on a square.
    
3. **Spend the budget where detail is visible.** Fine texture and small type need pixels, so push toward the 6,553,600 ceiling for print and hero work and stay near 1024 × 1024 while exploring.
    
4. **Say "no text" when you don't want any.** The model renders lettering readily, which is a strength elsewhere and noise on a plain product or interior shot.
    
5. **Keep a seed with every render you might need again.** It costs nothing to send and it is the only way back to a specific image.