Alibaba shipped Qwen Image 3.0 in July 2026 as the regular version of its third image generation, next to a Pro sibling. Its long prompt lets you describe a whole page, region by region, and its text stays readable even at 10 px, in 12 languages. Because the price does not change between 1K and 2K, there is no reason not to render everything at the larger size.
What you can make
- Mock newspaper and magazine pages for presentations or props.
- Storyboards: a grid of numbered frames, each with a caption line.
- Infographics and menus in several languages.
- A few alternative layouts of the same content in one run.
Settings that matter
- Prompt: roughly 4.5k tokens. Walk through the page top to bottom (masthead, body columns, picture captions, bottom strip) and give the exact words for each part.
- Resolution: 1K or 2K at the same price. Go for 2K whenever there is small type.
- Images per request: 1 to 4.
- Aspect ratio: seven preset shapes. Kadraris does not take custom width and height values yet.
- References: 1 to 3 images for editing. Common formats work (JPG, PNG, WEBP, GIF, also TIFF and BMP), with a 10 MB cap per file.
- Negative prompt: supported.
Starter prompt
Storyboard sheet, 6 numbered panels in a 3x2 grid. Panel 1 "INT. KITCHEN - MORNING", a girl pours milk. Panel 2 "She notices the cat on the table". Pencil sketch style, captions under each panelContinue the same pattern for panels 3 to 6 with your own scene descriptions.
Questions
What will Qwen Image 3.0 cost me?
from $0.0576 per image, whether you pick 1K or 2K. Failed generations cost $0.
Standard or Pro?
Go for Qwen Image 3.0 Pro when every inch is packed with lettering, like a long menu or a test sheet; note it charges double for 2K. For most pages the regular tier does the job.
How much can I fit into one prompt?
Around 4.5k tokens. In practice that fits a page with several sections plus all the copy that goes on it.
Qwen Image 3.0 in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-image-3.0",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "qwen-image-3.0",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "qwen-image-3.0",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ||
negative_prompt | string | ||
aspect_ratio | string | 1:1 4:3 3:4 16:9 9:16 3:2 2:3 | 1:1 |
resolution | string | 1K 2K | 1K |
num_images | integer | 1-4 | 1 |
image_urls | array | max 3 |
Fetch this list as JSON with GET /v1/models/qwen-image-3.0.
























