Qwen Image 2.1 Pro


Qwen Image 2.1 Pro is Alibaba's flagship unified model for high-fidelity text-to-image synthesis and multi-modal image editing. Built on an optimized 7B single-stream DiT architecture, it seamlessly merges studio-grade 2K image rendering, multi-image reference control (up to 10 input images), and localized inpainting via mask or brush interactions while strictly preserving subject identity.

Qwen Image 2.1 Pro

Qwen Image 2.1 Pro is Alibaba's flagship second-generation visual generation foundation model, delivering industry-leading rendering precision, complex scene synthesis, and multi-language text rendering. Built on a unified vision-language framework, it natively integrates text-to-image, image-to-image, and fine-grained visual editing in a single architecture. The model supports native 2K output resolutions (total pixels from 512 \times 512 up to 2048 \times 2048 with aspect ratios from 1:8 to 8:1), native RGBA transparency generation, and up to 10 multi-image conditioning references.

Base URL

https://api.icreat.ai

Authentication

All API requests must be authenticated with an API Key. You can obtain an API Key from the console.

export ICREAT_API_KEY="your-api-key-here"

HTTP Request Headers

import os

API_KEY = os.environ.get("ICREAT_API_KEY")
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + API_KEY,
}

Protect your API Key Never expose your API Key in client-side code or public repositories. Use environment variables or a backend proxy.

Code Examples

Image generation uses a two-step async flow: submit a task to get task_id, then poll via query task result; the response includes status and result ([] while processing; on SUCCEEDED, result holds resources and costUSD is present). The examples below use the same task_id across both steps.

1. Submit Task

Send a generation request to the submit endpoint.

POST/v1/task/submit/aliyun/qwen-image-2-1-pro

2. Query Task Result (Poll)

Use the task_id from submit to poll progress (repeat until terminal). The response includes status and result: result is [] while processing; on SUCCEEDED, result holds resources and costUSD is included; FAILED means the task failed.

POST/v1/task/result

Input Schema

Submit Task — Input

The following parameters are accepted in the submit request body.

Total: 2 Required: 1 Optional: 1

inputobjectrequired

Generation input payload.

parametersobject

Generation parameters.

Query Task Result — Input

Total: 1 Required: 1 Optional: 0

task_idstringrequired

The task ID returned from the submit endpoint.

Output Schema

Submit Task — Output

Total: 1

task_idstring

Async task identifier.

Query Task Result — Output

Total: variable

statusstring

Current task status. result is usually [] until success; on SUCCEEDED, result holds resources and costUSD is present.

SUBMITTEDSUCCEEDEDFAILED
resultarray[object]

Generated resources. Empty array while processing or on failure; array of objects on success.

costUSDnumber

Task cost in USD ($0.04 per successful generation). Present only when status is SUCCEEDED.

LLM Prompt

The Markdown below is an LLM-friendly prompt you can paste into AI assistants (e.g. Cursor, ChatGPT) to help them understand this model's API, call flow, and key parameters. Use Copy for AI or copy from the code block below.

# aliyun/qwen-image-2-1-pro

> Qwen Image 2.1 Pro is Alibaba's flagship second-generation visual generation foundation model, supporting native 2K output resolutions, text-to-image, image editing, and multi-reference composition.

## Overview

Use the iCreat two-step async task API: submit a generation request, then poll the query task result endpoint; on success read resources from `result` (includes `costUSD`).

## API Info

- **Base URL**:`https://api.icreat.ai`
- **Submit endpoint (POST)**:`/v1/task/submit/aliyun/qwen-image-2-1-pro`
- **Query result endpoint (POST)**:`/v1/task/result`
- **Model ID**:`aliyun/qwen-image-2-1-pro`
- **Auth**:`Authorization: Bearer ${ICREAT_API_KEY}`

## Call Flow

1. **Submit**: POST submit path with body per Input Notes; response `{ "task_id": "..." }`
2. **Query result**: POST `/v1/task/result` with `{ "task_id": "..." }`; response includes `status` and `result` (`[]` while processing); on `SUCCEEDED`, `result` holds resources and `costUSD` is present ($0.04); read `url` or `download_url` when `type` is `Image`

### Input Notes

- Top-level body: `input` (object) + `parameters` (object) as siblings
- `input.messages` (required)
- `input.messages[].role` (required): Message role (`user`).
- `input.messages[].content` (required): Array of content objects.
- `input.messages[].content[].text` (optional): Text prompt or editing instruction.
- `input.messages[].content[].image` (optional): Reference image URL (supports up to 10 input images, 1-8000px resolution range).
- `parameters.size` (optional): Output image size within $512 \times 512$ to $2048 \times 2048$ pixels (aspect ratio 1:8 to 8:1). E.g. `"2048*2048"`, `"1024*1024"`, `"2688*1536"`. Defaults to semantic auto-selection if omitted.
- `parameters.watermark` (optional): Whether to add a watermark to the output image (`true` or `false`, default: `false`).

### Output Notes

- Poll: read `status`; `result` is `[]` while processing
- Success: `result` is `[{ "type": "Image", "url": "...", "download_url": "..." }]` plus `costUSD` ($0.04)

## Notes

- Use the same `task_id` across both steps; `result` is `[]` while processing — keep polling
- `FAILED` is terminal — check request parameters, image URLs, or content moderation errors
- `input` and `parameters` are sibling top-level fields; do not nest them