genmux API is now generally available. Read the docs →
genmux API

Qwen-Image 2.0 API

Qwen-Image 2.0 from Alibaba — an image model built around legible in-image text, including Chinese, with reference-image input and 1K or 2K output.

from 3 credits ≈ $0.038 per image

  • Resolutions: 1K · 2K
  • Images per request: 4
  • Reference images: up to 4 per request
Qwen-Image 2.0 sample — isometric data center clean vector style

Pricing

Cost = credits per image × n. Credits are reserved when you submit a job and refunded in full if it fails or you cancel it before it starts.

ResolutionCredits / imageUSD / imageUSD for 4 images
1K3$0.038$0.15
2K4$0.05$0.20

USD figures are converted at the Scale pack rate; larger packs are cheaper per credit. See pricing for the full pack list.

All credit packs →

List prices elsewhere

Publicly listed per-image prices for comparable access to this model, read from each provider's own pricing page. Providers change prices without notice — follow the links for the current figure.

ProviderList price per imageChecked on
genmux API (1K)
3 credits · at the Scale pack rate
$0.038live
Alibaba Cloud Model Studio (qwen-image-2.0)
Alibaba's own list price for image generation, per image (international region).
$0.0352026-09-06

What 1,000 images cost

1,000 images: $37.50 with genmux API vs $35.00 at the list price of Alibaba Cloud Model Studio (qwen-image-2.0).

Per-image price × 1,000, at the Scale pack rate; competitor figures as checked on 2026-09-06.

Sample outputs

Unretouched outputs from this model, generated through the API.

  • Qwen-Image 2.0 sample — isometric data center clean vector style

    isometric data center clean vector style

At a glance

Model id
qwen-image-2
Capability
image.generate
Resolutions
1K · 2K
Aspect ratios
1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9
Images per request
4
Seed
supported
Reference images
up to 4 per request
Negative prompt
supported
Prompt length
up to 2000 characters

Quick start

Create a key in the dashboard, then submit a job and poll it. Replace the id in the second call with the one the first call returns.

1. Submit a generation · cURL
cURL
curl -s -X POST https://api.genmux.tech/v1/generations \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-2","prompt":"a red fox in fresh snow, low winter sun","n":1,"resolution":"1K","ratio":"1:1"}'
Response · 202 Accepted
{
  "id": "0d8b6a3e-2f1c-4a5b-9c1d-7e2f3a4b5c6d",
  "model": "qwen-image-2",
  "status": "queued",
  "params": {"prompt": "a red fox in fresh snow, low winter sun", "n": 1, "resolution": "1K", "ratio": "1:1"},
  "cost": 3,
  "created_at": "2026-08-30T20:01:12.345Z"
}
2. Poll until status is succeeded (typically 1–20 s) · cURL
cURL
curl -s https://api.genmux.tech/v1/generations/0d8b6a3e-2f1c-4a5b-9c1d-7e2f3a4b5c6d \
  -H "Authorization: Bearer $API_KEY"
Response · 200 OK
{
  "id": "0d8b6a3e-2f1c-4a5b-9c1d-7e2f3a4b5c6d",
  "model": "qwen-image-2",
  "status": "succeeded",
  "cost": 3,
  "images": [
    {"index": 0, "url": "https://…/0.png?X-Amz-Expires=900&…", "expires_at": "2026-08-30T20:16:30Z", "mime": "image/png", "width": 1024, "height": 1024, "bytes": 1843201, "sha256": "9f2c…"}
  ],
  "created_at": "2026-08-30T20:01:12.345Z",
  "finished_at": "2026-08-30T20:01:19.802Z"
}
Python (requests)
Python (requests)
import os, time, uuid, requests

BASE = "https://api.genmux.tech"
auth = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

job = requests.post(
    f"{BASE}/v1/generations",
    headers={**auth, "Idempotency-Key": str(uuid.uuid4())},
    json={"model": "qwen-image-2", "prompt": "a red fox in fresh snow, low winter sun", "n": 1, "resolution": "1K", "ratio": "1:1"},
    timeout=30,
).json()

while job["status"] in ("queued", "running"):
    time.sleep(1)
    job = requests.get(f"{BASE}/v1/generations/{job['id']}", headers=auth, timeout=30).json()

print(job["images"][0]["url"])  # presigned, valid for 15 minutes
Node.js (fetch)
Node.js (fetch)
const BASE = "https://api.genmux.tech";
const auth = { Authorization: `Bearer ${process.env.API_KEY}` };

let job = await fetch(`${BASE}/v1/generations`, {
  method: "POST",
  headers: { ...auth, "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json" },
  body: JSON.stringify({ model: "qwen-image-2", prompt: "a red fox in fresh snow, low winter sun", n: 1, resolution: "1K", ratio: "1:1" }),
}).then((r) => r.json());

while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 1000));
  job = await fetch(`${BASE}/v1/generations/${job.id}`, { headers: auth }).then((r) => r.json());
}

console.log(job.images[0].url); // presigned, valid for 15 minutes
Full API reference →

Frequently asked questions

What is the Qwen-Image 2.0 API?
Qwen-Image 2.0 is Alibaba's image-generation model from the Qwen-Image line, a family the Qwen team introduced with an explicit focus on rendering legible text inside the picture — including Chinese characters — and on editing an image you supply. Through genmux API the Qwen-Image API is the model id "qwen-image-2": it renders at 1K, 2K, takes up to 4 reference images per request and costs 1K — 3 credits · 2K — 4 credits.
How much does one Qwen-Image 2.0 image cost?
From 3 credits per image, about $0.038 at the Scale pack rate. Price follows the resolution tier: 1K — 3 credits · 2K — 4 credits. A request for n images costs n times the per-image price. Credits are prepaid, so there is no subscription and no per-seat fee.
How is Qwen-Image 2.0 different from Qwen-Image Max?
Max is the flagship of the line and costs more per image here; 2.0 is the standard tier. This model renders at 1K, 2K and takes up to 4 reference images, where Max is restricted to a fixed, narrower set of aspect ratios. The request fields are otherwise the same, so comparing the two is a one-field change — put the same prompt and seed through both and read the two spec tables side by side.
When should I use Qwen-Image 2.0 instead of Nano Banana?
When the text in the image is the point: posters, packaging mockups, UI screenshots, slides, anything with a headline or CJK copy that has to come out readable. The Qwen-Image line was built around that case. Nano Banana is the general-purpose default — compare the two pricing tables and pick per job. Both accept reference images, share one API key and draw on the same credit balance.
What resolutions does Qwen-Image 2.0 support?
Resolution is a tier, not a pixel size: this model renders at 1K, 2K, and the request defaults to 1K when you omit the resolution field. A tier outside that list is rejected with a 400 validation_error rather than quietly downscaled, so you always know which price you are paying. The legacy size field ("1024x1024") still works for existing integrations and is mapped to the nearest tier and ratio.
What aspect ratios can I ask for?
1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9. Pass it as the ratio field; it defaults to 1:1. A ratio outside the list is a 400 validation_error. Ratio never changes the price — only the resolution tier does.
Can I send reference images (image-to-image)?
Yes. Pass images as an array of public https URLs — up to 4 per request — and the prompt then describes the edit or the variation rather than the whole scene; with reference images the prompt itself is optional. URLs must be reachable from the public internet: private hosts and non-https URLs are rejected with a 400 validation_error.
Is there a negative prompt?
Yes. Pass negative_prompt alongside prompt to describe what you do not want in the frame — artefacts, text, watermarks, a colour you are steering away from. It costs nothing extra.
How many images can I generate in one request?
Up to 4 per call, via the n field. Each image is billed separately, so n=4 at 1K costs 4 times the per-image price. For larger batches submit several jobs — throughput is bounded by your account's in-flight job limit (20 by default), not by n.
Are generations reproducible? Does it support seeds?
Yes. Pass an integer seed alongside the prompt, and the same seed with the same prompt, resolution and ratio gives you a reproducible result — which is also how you compare two models fairly. Leave it out and each call is sampled independently.
How long does a generation take, and do I have to poll?
Typically 1–20 seconds from submit to succeeded, depending on the resolution tier and queue depth. The API is asynchronous: POST /v1/generations returns a job id in milliseconds, and from there you either poll GET /v1/generations/{id} or pass webhook_url and let us POST you once the job finishes, retrying with backoff for up to 8 attempts until your endpoint returns 2xx. Every delivery carries an HMAC-SHA256 signature you verify with your account webhook secret.
What happens if a generation fails?
You are not charged. Credits are reserved when the job is created and refunded in full if the job fails, is cancelled while still queued, or the model is temporarily unavailable (503 model_unavailable). The failed job carries an error object with a code such as content_policy so you can branch on it.
What stops me from being double-charged on a retry?
Every POST /v1/generations requires an Idempotency-Key header. Resending the same key returns the original job with 200 and charges nothing extra, so a network timeout can be retried safely. Reusing a key with a different body is rejected with 422 idempotency_key_mismatch.
Can I use the generated images commercially?
Yes — under our terms of service you own the rights we can pass on to the output of your generations and may use them commercially, provided the prompt and the use comply with the terms and the upstream model provider's content policy. Read the terms before shipping anything customer-facing.

Keep reading

Other models

Same key, same request shape — switch by changing the model field.

  • Nano Banana API

    nanobanana

    Fast, general-purpose text-to-image and image-to-image generation at 1K, behind a single HTTP endpoint. Billed per image in credits, refunded automatically when a job fails.

    from 2 credits ≈ $0.025 per image

  • Nano Banana Pro API

    nanobanana-pro

    Higher-fidelity generation for hero shots and print-sized crops, with 1K, 2K and 4K output — roughly twice the base price per image at 1K.

    from 4 credits ≈ $0.05 per image

  • Qwen-Image Max API

    qwen-image-max

    Qwen-Image Max — the flagship of Alibaba's Qwen-Image line, with reference-image input, 1K and 2K output and a fixed set of five aspect ratios.

    from 8 credits ≈ $0.10 per image

  • Seedream 5.0 API

    seedream-5

    ByteDance Seedream 5.0 — a high-resolution model for photoreal frames and in-image text, served at 2K and 4K only. Takes reference images, billed per image in credits.

    from 16 credits ≈ $0.20 per image

  • Wan 2.7 Image API

    wan-2-7-image

    wan2.7-image from Alibaba's Tongyi Wanxiang line — text-to-image and reference-image generation at 1K or 2K, on the same endpoint and API key as every other model here.

    from 2 credits ≈ $0.025 per image

Text models (10)

  • Doubao Seed 2.0 Pro API

    ByteDance's flagship Doubao model with vision and web search — for complex reasoning and multimodal tasks.

    $1.063 in · $5.10 out per 1M tokens

  • Doubao Seed 2.0 Code API

    Doubao's coding-tuned model with vision — for agentic coding, refactors and UI-from-screenshot tasks.

    $1.063 in · $5.10 out per 1M tokens

  • Doubao Seed 2.0 Lite API

    Mid-tier Doubao model with vision — general assistants and image-aware chat at a lower cost than Pro.

    $0.213 in · $1.063 out per 1M tokens

  • Doubao Seed 2.0 Mini API

    The cheapest Doubao model with vision — high-volume, latency-sensitive chat and simple image tasks.

    $0.027 in · $0.85 out per 1M tokens

  • Kimi K3 API

    Moonshot's flagship Kimi model with a huge context window — for very long documents and multi-step agents.

    $2.463 in · $12.323 out per 1M tokens

  • Claude Opus 5.5 API

    Anthropic's top Claude Opus model — strong reasoning and agentic coding with a large context window for complex, multi-step work.

    $1.836 in · $9.18 out per 1M tokens