Qwen Image 2 is Alibaba's February 2026 model that unifies text-to-image and single-image editing. It is known for structured text inside images, so posters, slides, infographics and comics come out with readable lettering and ordered layouts. Each request returns one image, and prompts are short, capped at 800 characters. Text-to-image offers 5 aspect ratios (1:1, 3:4, 4:3, 9:16, 16:9), and editing adds 2:3, 3:2 and 21:9. A seed parameter lets you repeat results.
Best for
- Slides and infographic panels with headings and bullet text
- Comic panels with speech bubbles
- Posters with a clear title hierarchy
- Replacing text or objects in an existing image
Prompting tips
- With only 800 characters, list the text blocks first and keep the style description brief.
- Put every string that must appear in the image in quotes.
- 2:3, 3:2 and 21:9 only work in edit mode; in text-to-image they return an error.
- Sending
image_urlswitches to editing, so describe the change rather than the whole picture.
FAQ
How much does Qwen Image 2 cost?
The price is $0.077 per image. You can see the estimated cost before sending, and failed generations are not charged.
What is the prompt limit for Qwen Image 2?
800 characters. For longer page layouts, Qwen Image 3.0 takes prompts of roughly 4.5k tokens.
Can Qwen Image 2 use several reference images?
No, editing takes a single source image. Qwen Image 2.1 accepts up to 10 references.
How to call Qwen Image 2 via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-image-2",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "16:9"
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "qwen-image-2",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "16:9"
}
}).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://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "qwen-image-2",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "16:9"
}
}),
})).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));
Parameters
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 800 chars | |
aspect_ratio | string | 1:1 3:4 4:3 9:16 16:9 2:3 3:2 21:9 | 16:9 |
image_url | string | ||
seed | integer |
The same schema is available from GET /v1/models/qwen-image-2.









