# Qwen Image This file is the focused AI-readable context for one UniAll documentation page. URL: https://docs.uniall.ai/models/image/qwen-image Locale: en Markdown: https://docs.uniall.ai/ai/pages/models/image/qwen-image.md Description: Qwen Image 3.0, 2.1 and 2.0 generation and editing with OpenAI Images and the Bailian native synchronous API. Agent guidance: - Use this page when the user is asking about this specific route or model capability. - Preserve endpoint paths, JSON keys, model IDs, and placeholder values exactly. - `{BASE_URL}` means `https://api.uniall.ai`; treat `sk-***` and `task_xxx` as safe placeholders, not real secrets. ## Page Markdown Generate or edit images with OpenAI Images or the Bailian native API. Both return image URLs synchronously; no task polling is required. ## Models | Model ID | Maximum reference images | | --- | --- | | `qwen-image-3.0-pro` | 3 | | `qwen-image-3.0` | 3 | | `qwen-image-2.1-pro` | 10 | | `qwen-image-2.1-turbo` | 10 | | `qwen-image-2.0-pro` | 3 | | `qwen-image-2.0` | 3 | ## Endpoints Use `https://api.uniall.ai` with `Authorization: Bearer $UNIAI_API_KEY`. Replace the key and reference URLs in the examples with your own values. | Format | Method | Path | | --- | --- | --- | | OpenAI generation | POST | `/v1/images/generations` | | OpenAI editing (JSON or multipart) | POST | `/v1/images/edits` | | Bailian native generation and editing | POST | `/api/v1/services/aigc/multimodal-generation/generation` | ## Parameters For OpenAI JSON, put these fields at the top level. For the native API, keep `model` at the top level, put the prompt and images in `input.messages`, and generation options in `parameters`. | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `model` | string | Yes | One of the six IDs above. | | `prompt` | string | Yes | Generation or editing instruction. Native: one `text` item in `input.messages[0].content`. | | `image` | string or array | Conditional | Ordered reference URLs or image data URLs. Native: one `image` content item per reference. | | `n` | integer | No | Output count, 1–6; default `1`. | | `size` | string | No | `WIDTHxHEIGHT`, `WIDTH*HEIGHT`, or `auto`. See limits below. | | `seed` | integer | No | 0–2147483647. | | `negative_prompt` | string | No | 3.0 and 2.0 families only. | | `prompt_extend` | boolean | No | Enable prompt expansion. | | `prompt_extend_mode` | string | No | `direct` or `agent`; 3.0 and 2.1 only. `agent` is text-to-image only. | | `enable_thinking` | boolean | No | 3.0 and 2.1 families only. | | `watermark` | boolean | No | Add a watermark. | | `response_format` | string | No | OpenAI only: `url`. | OpenAI also accepts `num_images` as an alias for `n`, and `image_url`, `image_urls`, or `images` for references. Use one reference field; `n` and `num_images` must match if both are present. Generation options may be supplied in `extra_body`; duplicated top-level values must match. ## OpenAI Images {/* #openai-images */} ### Generate ```bash curl "https://api.uniall.ai/v1/images/generations" \ -H "Authorization: Bearer $UNIAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-image-3.0", "prompt": "A blue ceramic cup on a wooden table", "n": 1, "size": "1024x1024", "seed": 0, "prompt_extend": false, "enable_thinking": false, "watermark": false }' ``` ### Edit with a reference URL ```bash curl "https://api.uniall.ai/v1/images/edits" \ -H "Authorization: Bearer $UNIAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-image-2.1-pro", "prompt": "Turn the cup blue and keep the rest unchanged", "image": ["https://images.example.com/reference.png"], "n": 1, "size": "1024x1024" }' ``` The same JSON body can be sent to `/v1/images/generations`: including `image` selects editing. Reference-array order is preserved. ### Edit with a local file ```bash curl "https://api.uniall.ai/v1/images/edits" \ -H "Authorization: Bearer $UNIAI_API_KEY" \ -F "model=qwen-image-2.1-pro" \ -F "prompt=Turn the cup blue and keep the rest unchanged" \ -F "image[]=@reference.png" \ -F "n=1" \ -F "size=1024x1024" \ -F "seed=0" \ -F "enable_thinking=false" ``` Repeat `-F "image[]=@another.png"` for more references. Form options use integer strings and `true` / `false`; let cURL set the multipart Content-Type. ### Response Generation and editing return the same shape. Read image URLs from `data[].url`. ```json { "created": 1792627200, "data": [ { "url": "https://images.example.com/result.png" } ] } ``` ## Bailian native API {/* #bailian-native */} Use exactly one `user` message containing one `text` item. Add `image` items for editing; omit them for text-to-image. ### Generate ```bash curl "https://api.uniall.ai/api/v1/services/aigc/multimodal-generation/generation" \ -H "Authorization: Bearer $UNIAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-image-3.0", "input": { "messages": [{ "role": "user", "content": [{"text": "A blue ceramic cup on a wooden table"}] }] }, "parameters": { "n": 1, "size": "1024*1024", "seed": 0, "prompt_extend": false, "enable_thinking": false, "watermark": false } }' ``` ### Edit ```bash curl "https://api.uniall.ai/api/v1/services/aigc/multimodal-generation/generation" \ -H "Authorization: Bearer $UNIAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-image-2.1-pro", "input": { "messages": [{ "role": "user", "content": [ {"image": "https://images.example.com/reference.png"}, {"text": "Turn the cup blue and keep the rest unchanged"} ] }] }, "parameters": {"n": 1, "size": "1024*1024"} }' ``` ### Response Read image URLs from `output.choices[].message.content[].image`. ```json { "output": { "choices": [ { "finish_reason": "stop", "message": { "role": "assistant", "content": [ { "image": "https://images.example.com/result.png" } ] } } ] }, "request_id": "req_example" } ``` ## Limits - Output area: 262,144–4,194,304 pixels (512²–2048²); aspect ratio: 1:8–8:1. This is an area limit, not a 2048-pixel limit on each edge. Standard 4K sizes such as `3840x2160` exceed it. - References: up to 10 MB each; per-model counts are listed above. - Results are PNG images. For transparent output on 2.1 models, request a transparent background in the prompt. - Streaming, mask editing and Base64 output are unsupported. Omit `quality`, `output_format` and `operation`. Requests can take tens of seconds. After a timeout, check request records before resubmitting. Save returned images before their URLs expire. ## Request errors For HTTP 400, check required fields, model-specific options, reference counts and size limits. For HTTP 401, check the Bearer key. `/v1/images/edits` requires at least one reference image.