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

Text and typography with Qwen Image 3.0

How to render exact copy with Qwen Image 3.0: quoting the strings you need, building a type hierarchy, setting Chinese and bilingual layouts, and sizing for print.

Most image models treat lettering as texture. They learn the shapes of characters without learning spelling or word boundaries, so the copy comes back approximate and a poster that needs to say one specific thing says something adjacent to it instead. Qwen Image 3.0 renders the strings you actually write, across twelve languages, at the size and position you put them.

Five separate strings, each at its own weight and place on the sheet, all correct. The rest of this guide is how to ask for that reliably.

Set promptExtend to false for any image with copy on it. The rewrite runs before generation and edits your prompt, including the strings in it, and it adds signage and lettering of its own. Exact copy and prompt extension do not mix.

Request shape

Rendering text needs no special parameters. The copy sits inside positivePrompt alongside the scene description, the canvas comes from width and height, and promptExtend goes to false so the strings reach the model as written:

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 museum exhibition poster printed on heavy warm off-white stock. The title "NORTHERN LIGHT" runs across the upper third in very large bold black condensed capitals, tightly set on two lines. Directly beneath it in a small regular weight: "Scandinavian Design 1930-1970". At the bottom left in medium capitals: "12 MAR - 28 JUN". At the bottom right in the same size: "HALL TWO". Swiss editorial poster design, flat print look, no other text.',
  width: 2048,
  height: 2816,
  providerSettings: {
    alibaba: {
      promptExtend: false
    }
  }
})
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 museum exhibition poster printed on heavy warm off-white stock. The title \"NORTHERN LIGHT\" runs across the upper third in very large bold black condensed capitals, tightly set on two lines. Directly beneath it in a small regular weight: \"Scandinavian Design 1930-1970\". At the bottom left in medium capitals: \"12 MAR - 28 JUN\". At the bottom right in the same size: \"HALL TWO\". Swiss editorial poster design, flat print look, no other text.",
            "width": 2048,
            "height": 2816,
            "providerSettings": {
                "alibaba": {
                    "promptExtend": False
                }
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "imageInference",
      "taskUUID": "a1b2c3d4-5e6f-4708-9a1b-2c3d4e5f6071",
      "model": "alibaba:qwen-image@3.0",
      "positivePrompt": "A museum exhibition poster printed on heavy warm off-white stock. The title \"NORTHERN LIGHT\" runs across the upper third in very large bold black condensed capitals, tightly set on two lines. Directly beneath it in a small regular weight: \"Scandinavian Design 1930-1970\". At the bottom left in medium capitals: \"12 MAR - 28 JUN\". At the bottom right in the same size: \"HALL TWO\". Swiss editorial poster design, flat print look, no other text.",
      "width": 2048,
      "height": 2816,
      "providerSettings": {
        "alibaba": {
          "promptExtend": false
        }
      }
    }
  ]'
runware run alibaba:qwen-image@3.0 \
  positivePrompt="A museum exhibition poster printed on heavy warm off-white stock. The title \"NORTHERN LIGHT\" runs across the upper third in very large bold black condensed capitals, tightly set on two lines. Directly beneath it in a small regular weight: \"Scandinavian Design 1930-1970\". At the bottom left in medium capitals: \"12 MAR - 28 JUN\". At the bottom right in the same size: \"HALL TWO\". Swiss editorial poster design, flat print look, no other text." \
  width=2048 \
  height=2816 \
  providerSettings.alibaba.promptExtend=false
{
  "taskType": "imageInference",
  "taskUUID": "a1b2c3d4-5e6f-4708-9a1b-2c3d4e5f6071",
  "model": "alibaba:qwen-image@3.0",
  "positivePrompt": "A museum exhibition poster printed on heavy warm off-white stock. The title \"NORTHERN LIGHT\" runs across the upper third in very large bold black condensed capitals, tightly set on two lines. Directly beneath it in a small regular weight: \"Scandinavian Design 1930-1970\". At the bottom left in medium capitals: \"12 MAR - 28 JUN\". At the bottom right in the same size: \"HALL TWO\". Swiss editorial poster design, flat print look, no other text.",
  "width": 2048,
  "height": 2816,
  "providerSettings": {
    "alibaba": {
      "promptExtend": false
    }
  }
}
Response
[
  {
    "taskType": "imageInference",
    "taskUUID": "a1b2c3d4-5e6f-4708-9a1b-2c3d4e5f6071",
    "imageUUID": "6e0b2d94-7f18-4a35-b0c9-3d5e7f1a2b68",
    "imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/6e0b2d94-7f18-4a35-b0c9-3d5e7f1a2b68.jpg"
  }
]

Quoting the copy

Put the literal words in quotation marks and state where they go. Describing the copy instead of writing it hands the wording to the model:

"Advertising the daily special" produced a board reading SPECIAL and nothing else. The quoted version returned all four lines, kept the apostrophe in TODAY'S, held both prices, and set the closing line in the italic script it was asked for. Anything you do not quote, the model writes for you.

Building a hierarchy

Copy on packaging or a poster is not one string but several at different weights. Name each line, its relative size, and its order down the sheet:

Six strings landed in the right order at the right weights, including the tracked small caps under the brand name and the seal in the lower corner. The pattern that makes this work is relative sizing plus vertical order: "large bold capitals across the top", "small widely-spaced capitals directly beneath", "at the bottom edge". Absolute point sizes mean nothing to the model, but "larger than", "beneath", and "at the bottom" all land.

Structural marks are worth naming too. The thin rule between the brand block and the origin line was requested and drawn, and rules are what stop a dense label reading as a list.

Non-Latin scripts

Qwen Image 3.0 renders twelve languages natively, and the rule for all of them is the one Latin copy already follows: write the characters, never describe them. Asking for "a Chinese headline meaning spring tea has arrived" invites the model to invent something that looks like Chinese and says nothing.

The headline, the two-phrase subhead, and a full street address with a number all came back correct. If you cannot type the characters, paste them. The prompt field takes them as they are.

The same prompt structure carries across writing systems. These three came from one template with only the strings and the illustration swapped:

Accented Latin is worth checking as carefully as a different script. Diacritics are where Latin copy usually fails, and the Spanish poster puts the tilde in "OTOÑO" and the accent in "sábado" in the same request.

Mixed-script layouts

Signage and menus usually carry two scripts at once. Quote both, and say how the pair should sit together:

Every pair is correct and every arrow points where it was told to. The model did make one layout decision on its own: the header sets its two scripts side by side as asked, while the three rows below stack the Chinese under the English. Pairing is reliable, arrangement is not, so if the two scripts must sit on one line, say "on the same line" for each row rather than describing the pattern once at the top.

Sizing for print

Small type needs pixels. Qwen Image 3.0 allows up to 6,553,600 pixels for text-to-image, and any width and height are valid as long as their product fits, so a poster shape like 2176 × 3008 is available at nearly the full budget:

The four-line credit block at the foot of the poster is the part that needs the resolution. Qwen documents legible rendering down to roughly 10px type, and that floor is what the canvas has to satisfy: at 1024 × 1024 the credit block falls under it and the lettering turns to texture. Draft at a small size and render the deliverable at the ceiling, since the composition holds while the type sharpens.

The budget applies to the pixel count, not the shape. 2176 × 3008 portrait, 3200 × 2048 landscape, and 2560 × 2560 square all sit under the same 6,553,600 ceiling, so choosing a poster aspect costs you nothing in resolution.

Tips

  1. Quote every string that matters. Copy inside quotation marks is rendered as written. Copy you describe is rewritten.

  2. Turn off prompt extension. The rewrite edits your strings and invents new ones, which undoes the whole technique.

  3. Position by relation, not by measurement. "Across the upper third", "directly beneath", and "at the bottom edge" work. Point sizes and pixel coordinates do not.

  4. End the prompt with "no other text". It stops the model filling empty margins with plausible extra lettering.

  5. Render the final asset near the pixel ceiling. Small type is the first thing to break at low resolution and the main reason to spend the budget.

  6. Paste non-Latin copy directly. Characters written in the prompt come through correctly, while paraphrased script comes back as convincing nonsense.