MODEL IDalibaba:qwen-image@3.0
live

Qwen-Image-3.0

Alibaba
by Alibaba

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.

Qwen-Image-3.0

Editing and composing with reference images

How to use reference images on Qwen Image 3.0 to recolour a packshot, carry a product into a new scene, or stage two products together in one shot.

Adding inputs.referenceImages switches Qwen Image 3.0 from generating to working off images you supply. You can pass up to three, and there is no fixed meaning to the slots: the prompt assigns each image its job, whether that is the subject to preserve, the product to place, or the room to place it in.

That room was empty and those two products were studio packshots. The three references behind it:

Request shape

References go in inputs.referenceImages as an array of URLs, UUIDs, or data URIs. The prompt then refers to them by position:

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: 'Compose the two products into one overhead travel flat-lay on a dark walnut table in soft window light. The leather field satchel from the second image lies open-flapped across the lower left of the frame. The rangefinder camera from the first image sits above and to the right of it. Keep the exact appearance of the camera and the satchel from their references.',
  width: 1824,
  height: 1216,
  inputs: {
    referenceImages: [
      'https://im.runware.ai/image/os/a14d18/ws/2/ii/5f2a7c11-8b3d-4e90-a1c6-2d3e4f5a6b70.jpg',
      'https://im.runware.ai/image/os/a14d18/ws/2/ii/9c4e1b83-2a7f-4d51-b8e0-3f6a1c2d4e58.jpg'
    ]
  }
})
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": "Compose the two products into one overhead travel flat-lay on a dark walnut table in soft window light. The leather field satchel from the second image lies open-flapped across the lower left of the frame. The rangefinder camera from the first image sits above and to the right of it. Keep the exact appearance of the camera and the satchel from their references.",
            "width": 1824,
            "height": 1216,
            "inputs": {
                "referenceImages": [
                    "https://im.runware.ai/image/os/a14d18/ws/2/ii/5f2a7c11-8b3d-4e90-a1c6-2d3e4f5a6b70.jpg",
                    "https://im.runware.ai/image/os/a14d18/ws/2/ii/9c4e1b83-2a7f-4d51-b8e0-3f6a1c2d4e58.jpg"
                ]
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "imageInference",
      "taskUUID": "e6f7a8b9-0c12-4d34-8e56-7f8a9b0c1d23",
      "model": "alibaba:qwen-image@3.0",
      "positivePrompt": "Compose the two products into one overhead travel flat-lay on a dark walnut table in soft window light. The leather field satchel from the second image lies open-flapped across the lower left of the frame. The rangefinder camera from the first image sits above and to the right of it. Keep the exact appearance of the camera and the satchel from their references.",
      "width": 1824,
      "height": 1216,
      "inputs": {
        "referenceImages": [
          "https://im.runware.ai/image/os/a14d18/ws/2/ii/5f2a7c11-8b3d-4e90-a1c6-2d3e4f5a6b70.jpg",
          "https://im.runware.ai/image/os/a14d18/ws/2/ii/9c4e1b83-2a7f-4d51-b8e0-3f6a1c2d4e58.jpg"
        ]
      }
    }
  ]'
runware run alibaba:qwen-image@3.0 \
  positivePrompt="Compose the two products into one overhead travel flat-lay on a dark walnut table in soft window light. The leather field satchel from the second image lies open-flapped across the lower left of the frame. The rangefinder camera from the first image sits above and to the right of it. Keep the exact appearance of the camera and the satchel from their references." \
  width=1824 \
  height=1216 \
  inputs.referenceImages.0=https://im.runware.ai/image/os/a14d18/ws/2/ii/5f2a7c11-8b3d-4e90-a1c6-2d3e4f5a6b70.jpg \
  inputs.referenceImages.1=https://im.runware.ai/image/os/a14d18/ws/2/ii/9c4e1b83-2a7f-4d51-b8e0-3f6a1c2d4e58.jpg
{
  "taskType": "imageInference",
  "taskUUID": "e6f7a8b9-0c12-4d34-8e56-7f8a9b0c1d23",
  "model": "alibaba:qwen-image@3.0",
  "positivePrompt": "Compose the two products into one overhead travel flat-lay on a dark walnut table in soft window light. The leather field satchel from the second image lies open-flapped across the lower left of the frame. The rangefinder camera from the first image sits above and to the right of it. Keep the exact appearance of the camera and the satchel from their references.",
  "width": 1824,
  "height": 1216,
  "inputs": {
    "referenceImages": [
      "https://im.runware.ai/image/os/a14d18/ws/2/ii/5f2a7c11-8b3d-4e90-a1c6-2d3e4f5a6b70.jpg",
      "https://im.runware.ai/image/os/a14d18/ws/2/ii/9c4e1b83-2a7f-4d51-b8e0-3f6a1c2d4e58.jpg"
    ]
  }
}
Response
[
  {
    "taskType": "imageInference",
    "taskUUID": "e6f7a8b9-0c12-4d34-8e56-7f8a9b0c1d23",
    "imageUUID": "1d9f4a67-3c25-4b80-9e17-6a2b8c0d3e49",
    "imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/1d9f4a67-3c25-4b80-9e17-6a2b8c0d3e49.jpg"
  }
]

Reference mode halves the pixel budget. Text-to-image allows up to 6,553,600 pixels, but any request carrying referenceImages is capped at 2,250,000, which is 1500 × 1500 square or 1824 × 1216 landscape. Going over returns Invalid image pixels. Total pixels (width x height) must be between 262144 and 2250000, so a size that worked while you were generating will fail the first time you attach a reference.

Editing a single reference

With one reference and a prompt that names a change, the model returns the same shot with that change applied:

The glass and the pump changed. The silhouette, the proportions, the backdrop, and the catchlight down the side did not. Name what changes and name what holds, because a prompt that only says "make it amber" leaves the rest of the frame open to being rebuilt. Colourways and finish changes both work this way, which is most of what a product catalogue needs.

Remixing a subject into a new scene

The same single reference can travel instead of staying put. Here the prompt keeps the product's identity and replaces everything around it:

The canvas colour, the leather straps, the black hardware, and the roll top all survived the move onto a mountain. Restate the identifying details in the remix prompt rather than trusting the reference alone. Listing the material, the hardware, and the closure is what keeps a lifestyle shot sellable as the same SKU.

Composing multiple references

Two or three references compose into one frame when the prompt gives each a position:

Both products kept their materials and hardware while moving to a shared overhead angle under one light. The map, the keys, and the cup were written into the prompt as filler and generated from scratch, which is the usual split: references carry the things that must be right, the prompt supplies the set dressing.

Refer to images by their position in the array. "The first image" and "the second image" are enough, and the ordering in referenceImages is what those phrases resolve against.

What a reference holds, and what it rebuilds

Objects come back intact. Across the edits above, the shapes and materials carried through even when the camera angle, the lighting, and the surroundings all changed.

Environments behave differently. A room passed as a reference is re-rendered rather than composited, so the model rebuilds it from the same ingredients instead of pasting your products onto the original pixels. In the hero above, the oak floor, the plaster wall, the rug, and the window all came back where they belong, because that room is plain and the camera is square to it. The busier the space, the more it drifts, and a reference photo full of architecture and props will return recognisably similar rather than identical.

For a product shot that has to sit in a specific real room, generate the staging and treat the result as a new asset. For a colourway or a finish change on a packshot, the single-reference edit holds tightly enough to ship.

Tips

  1. Drop the resolution when you attach a reference. The ceiling falls to 2,250,000 pixels, so 1824 × 1216 or 1440 × 1440 are the practical sizes for reference work.

  2. Name what stays as explicitly as what changes. "Keep the exact silhouette, backdrop, and lighting" is what turns a re-render into an edit.

  3. Give every reference a job in the prompt. Three images with no roles assigned produce an average of all three rather than a composition.

  4. Repeat the identifying details when remixing. Material, colour, and hardware named in the prompt are what keep a product recognisable in a new scene.

  5. Set promptExtend to false for reference work. The rewrite will happily reinterpret the instruction that was holding your product still.