Introduction
Qwen Image 2.1 Text to Image turns a written brief into one image per request. Alibaba's Qwen team open-weighted the model on 21 September 2026 and it went live here the same day, hosted, with no weights to download and no GPU to rent.
What sets it apart on this catalogue is not a feature — it is what is missing. There is no content filter, no maturity flag and no prompt scanner in front of it. In our own acceptance testing it rendered uncensored scenes exactly as written, with no substitution and no quiet softening.
Choose a Qwen Image 2.1 mode by starting material
| Starting material | Mode |
|---|---|
| A written brief and nothing else | Qwen Image 2.1 Text to Image |
| One to ten source images to work from | Qwen Image 2.1 Image Editing |
| A brief plus your own LoRA weights | Qwen Image 2.1 LoRA |
Key features & highlights
Uncensored prompts come back rendered, not softened
The failure worth planning around in this market is not a refusal — it is an endpoint that accepts the request, bills for it, and returns a tamer picture than the one described. We tested for exactly that, walking our content ladder from its mildest level to its strongest, and checking each returned frame element by element against the wording that asked for it. Every element was present — nothing substituted, nothing draped over it, no retreat to a safer composition.
Fifteen ratios, composed rather than cropped
Fifteen aspect ratios span 3:1 and 21:9 strips, 1:3 and 9:21 columns, and the print-shaped 5:4 and 4:5. The composition is built at the ratio you request, so a panoramic frame is genuinely staged for its width instead of arriving as the middle slice of a square.
Three tiers, and only the tier moves the price
1k, 1.5k and 2k. The tier is the single field that changes what a generation costs, which makes the working pattern obvious: explore at 1k, then re-run the frames worth keeping at 2k for skin and fabric detail.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | 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. at least 1 characters · at most 5000 characters |
aspect_ratio | No | 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. |
resolution | No | 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. |
enable_prompt_expansion | No | On by default: before generating, the prompt is rewritten into a fuller scene description. Turn it off to have your own wording used as written. Default: |
background | No | opaque by default. |
output_format | No | JPEG by default. PNG when the frame goes into a compositing step, WebP when it ships straight to a page. |
seed | No | Steadies a draw so a series stays in the same neighbourhood. It is not a reproduction guarantee — we sent the same prompt and seed twice and got two different frames. |
Pricing
| Specification | Price |
|---|---|
| $0.024 / image |
| $0.048 / image |
| $0.048 / image |
Use cases
Uncensored work with nothing in the way
Figure studies, couples and bold art direction run on this endpoint with no flag to set and no separate route to request. Your wording is passed through as written.
High-volume concept passes
The 1k tier is priced for running a spread rather than a single hero frame. Run the spread, pick the survivors, promote those to 2k.
Wide banners and phone-first verticals
3:1 and 21:9 for site headers and cinematic plates; 9:21 and 1:3 for full-bleed mobile. Staged at the ratio, not cropped to it.
Character starting frames
Generate the character here, then move to image editing and feed that frame back as a reference to hold identity while you change wardrobe, light or setting.
Prompt guide & pro tips
Pick the ratio and the tier before writing
Both decisions change the picture more than any adjective will. Choose the shape you will publish at, and stay at 1k until the composition is settled.
Put exclusions inside the prompt
There is no negative prompt on this family. With 5,000 characters available, state what belongs in the frame and then state what must not appear — duplicated limbs, extra figures, clothing you did not ask for.
Keep scenes to one or two figures at 2k
Anatomy is where this model breaks first. Single figures and pairs hold together; crowded multi-figure compositions at the top tier can duplicate or merge limbs. If a scene needs a crowd, build it by editing rather than asking for it all at once.
Treat the seed as a nudge
The same seed twice does not return the same file. Use it to keep a set coherent, and archive the asset when a frame is final.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/qwen-image-2.1/text-to-image",
"input": {
"prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
"background": "opaque",
"resolution": "1k",
"aspect_ratio": "1:1",
"output_format": "jpeg"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.

















