Skip to main content

Qwen Image 2.1 text-to-image is Alibaba's open-weight model: a 5,000-character prompt becomes one image at 1k, 1.5k or 2k in fifteen aspect ratios, as JPEG, PNG or WebP. Transparent backgrounds are available, and there is no content filter.

From $0.024/image

Workbench

Input

Text to image
337/5000
Up to 5,000 characters. There is no negative prompt on this family, so exclusions belong here too — name what is in the frame, then say plainly what must not be. One continuous description outperforms a pile of keywords. at least 1 characters · at most 5000 characters
Composes the frame before generation rather than cropping afterwards, so pick the shape you will publish at. Fifteen options, from the 3:1 and 21:9 strips to 1:3 and 9:21 columns. All ratios cost the same.
affects price
The tier that sets output size and price: 1k is the default and the cheapest, 1.5k sits in between, 2k is where skin texture, hair and fabric weave hold together. Iterate at 1k and promote the keeper to 2k.
Safety checkerOff

SpicyAPI does not run a safety checker on this model. Your prompt and media go to the model as written, and the model itself decides what comes back.

Checking your account before enabling submission and pricing.

Output

Ready for a new run
silk-robe-doorwayExample result

Related models and next tasks

Missing the model you need?

Tell us what to add and where you would use it. Requests go to the people who decide what gets onboarded next.

Shape and tier are two fields here, not one size string

Qwen Image 2.1 Text to Image turns one written brief into one image per request, and the first field to get right is the one that moved. Qwen-Image 2.0 asked for output size as a single string, size set to something like 1024*1024. Here that decision is two fields: aspect_ratio picks one of fifteen shapes, resolution picks the 1k, 1.5k or 2k tier. The request schema is closed, so a field it does not declare is rejected rather than quietly dropped, and generation is asynchronous — the call returns a handle and the image arrives after polling.

Open the playground
Shape and tier are two fields here, not one size string
Request body
prompt, aspect_ratio, resolution, output_format and seed — prompt is the only required one
Frame shape
aspect_ratio, fifteen values; the frame is composed at that shape rather than cropped to it
Priced axis
resolution alone — 1k by default, then 1.5k and 2k
Unknown fields
Rejected, not ignored: the schema is closed, so a leftover size field fails the call
Content declaration
None: no maturity field in the request and no platform filter in front of the model
Delivery
Asynchronous — one image per request, read from platform storage once the task is terminal
Migration
One decision became two fieldsQwen-Image 2.0 carried output size as a single string. Here the shape and the tier are separate: aspect_ratio takes fifteen values and resolution takes three. Splitting them is what lets you move a frame from square to panoramic without also changing how much detail you paid for.
Quote
Only the tier moves the numberresolution is the one field on this endpoint that changes what a render costs. aspect_ratio, output_format and seed quote the same whatever you set them to, so sweeping a brief across every shape is the cheap kind of experiment and raising the tier is the expensive one. The live estimate above the form is what settles.
Declaration
Nothing in the body labels the workThere is no maturity field to set, no separate uncensored endpoint to request and no filter standing in front of the model. For an integration that means one code path and one request shape: what changes from one render to the next is the sentence in prompt, not the call.

Working with the Qwen Image 2.1 text-to-image API

Porting a body from the 2.0 generation

Porting a body from the 2.0 generation

1024*1024 becomes aspect_ratio 1:1, and the tier becomes a decision you now make out loud. Drop the old string and set nothing in its place and the request still runs — at the 1k default — which is the quiet way a clean-looking port ends up rendering smaller than the code it replaced.

Unknown fields fail loudly, which is the useful behaviour

Unknown fields fail loudly, which is the useful behaviour

The schema declares five fields and rejects everything else, so a leftover size, a negative prompt field or a batch count is not silently dropped on the way upstream. The port surfaces as a rejected request at submit time instead of as a picture that is subtly not the one you asked for.

  • Explore across shape, commit across tier

    Because the shape is free and the tier is not, the cheap sweep is one brief rendered at several aspect ratios on one tier, and the expensive step is re-running the survivor higher. Ordering the work that way keeps the part you pay for to the frames that earned it.

  • One string carries the whole brief

    prompt holds up to 5,000 characters and there is no second field for exclusions, so a template that used to write a subject block and a negative block has to concatenate them. State what is in the frame, then state plainly what must not be.

  • Uncensored work is the same call

    Uncensored prompts go to this endpoint with nothing added: no flag to thread through your client, no second route to keep alive, no approval step to build a queue around. The only thing that differs from any other render is the wording.

Who calls the Qwen Image 2.1 text-to-image API

  • Re-decide the tier you used to imply

    Teams porting from the 2.0 interface

    Re-decide the tier you used to imply

    The old size string carried both the shape and how big the render was. Splitting it means the second half of that decision now has a default, and defaults are the part of a migration nobody reviews. Set resolution explicitly on every ported call, even when the value you pick is the default one.

  • Render each placement instead of cropping one

    Design and marketing systems

    Render each placement instead of cropping one

    A banner, a square and a phone vertical are three calls with one brief and three aspect_ratio values, quoting the same on one tier. The composition is built for the shape each time, which is the difference between a wide frame and the middle of a square.

  • One integration, not a second one

    Studios producing uncensored work

    One integration, not a second one

    Because nothing in the request declares maturity, the uncensored half of a catalogue does not need its own client, its own credentials path or its own review queue. The same builder, the same polling loop and the same storage handling cover both.

How to integrate the Qwen Image 2.1 text-to-image API

  1. Split the old size value first

    Map the shape to aspect_ratio and the size to a resolution tier. 1024*1024 is 1:1 plus a tier you choose, and writing the tier down is what stops the default from choosing for you.

  2. Strip anything the schema does not declare

    Five fields go up: prompt, aspect_ratio, resolution, output_format and seed. A leftover from an older body is not dropped in transit; the request comes back rejected, which is where you want to find it.

  3. Fold exclusions into the prompt

    There is no separate field for what must stay out of frame, so the same string carries both halves. Name the subject, the light and the lens, then name what must not appear.

  4. Submit, then poll for a terminal state

    The call returns a task handle rather than pixels. Poll until the task is terminal and read the image from the result, which is served from platform storage.

  5. Settle the shape before you raise the tier

    Composition is the free variable and detail is the paid one. Get the frame right at the default tier, then re-run only the frames worth the higher one.

Qwen Image 2.1 text-to-image patterns

  • One brief, three placements

    Hold the prompt constant and send it three times with different aspect_ratio values — a 21:9 header, a 1:1 card and a 9:21 phone vertical. Each frame is staged for its shape, so the columns fall differently in the wide one than in the tall one, and all three quote the same on one tier.

    A woman in a floor-length oxblood coat walking away down an empty marble colonnade at dusk, low sun raking between the columns, long shadows across the stone floor, shot on a 35mm lens, no text anywhere in the frame
  • Exclusions written into the only field there is

    With no negative field available, the clause that would have lived there becomes the tail of the prompt. Keep the exclusions concrete — objects, materials and lettering — rather than abstract quality words, which give the model nothing to act on.

    A close portrait of a woman with wet swept-back hair lit by one low warm lamp against a charcoal background, bare shoulders, sharp catchlights in the eyes, no jewellery, no visible logos, no lettering of any kind

Qwen Image 2.1 text-to-image questions

Porting a request body

Two things changed shape and one thing did not. The size string became aspect_ratio plus resolution, and unknown fields became rejections rather than silent drops; the prompt is still one string carrying the entire brief, exclusions included. Set the tier explicitly on every ported call so the default never quietly stands in for a decision, sweep shapes while they are free, and keep a polling loop between the call and the picture.