## Basic model info - Model name: qwen/qwen qwen-image-2.1 - Model description: Qwen-Image-2.1 is Qwen's open-weight unified image generation and editing model. Its 7B generator renders native 2K images, produces transparent (RGBA) output straight from the prompt, and edits or composes with up to 10 reference images while keeping identity. Priced per megapixel: 1K images cost $0.02, 2K images $0.08; edits add half a megapixel per reference image, and guidance_scale above 1 doubles the price. - Endpoint name: text-to-image ## Model schema The model schema is defined in the OpenAPI schema: [OpenAPI Schema](https://oapi.sunra.ai/main/qwen/qwen-image-2.1/latest.json) ### Model input schema The model input schema is: ```json { "description": "Input schema for Qwen Image 2.1 text-to-image generation.", "properties": { "prompt": { "description": "Text prompt describing the desired image. Supports Chinese and English. Ask for a transparent background to get a real RGBA image (png or webp).", "minLength": 1, "title": "Prompt", "type": "string", "x-sr-order": 200 }, "aspect_ratio": { "default": "1:1", "description": "Aspect ratio of the output image.", "enum": [ "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3" ], "title": "Aspect Ratio", "type": "string", "x-sr-order": 401 }, "guidance_scale": { "default": 1, "description": "Classifier-free guidance strength. The model defaults to no guidance (1). Any value above 1 doubles the price of the request.", "maximum": 10, "minimum": 1, "title": "Guidance Scale", "type": "number", "x-sr-order": 404 }, "seed": { "anyOf": [ { "maximum": 2147483647, "minimum": 0, "type": "integer" }, { "type": "null" } ], "description": "Random seed for reproducibility.", "title": "Seed", "x-sr-order": 405 }, "negative_prompt": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Content to avoid in the generated image. Only used when guidance_scale is above 1.", "title": "Negative Prompt", "x-sr-order": 201 }, "enable_prompt_expansion": { "default": true, "description": "Enable LLM prompt optimization for better results.", "title": "Enable Prompt Expansion", "type": "boolean", "x-sr-order": 403 }, "output_format": { "default": "png", "description": "Output image format. png and webp keep transparency; jpeg uses a white background.", "enum": [ "png", "jpeg", "webp" ], "title": "Output Format", "type": "string", "x-sr-order": 406 }, "resolution": { "default": "1K", "description": "Output resolution: 1K (about 1 megapixel, e.g. 1024x1024) or 2K (about 4 megapixels, e.g. 2048x2048, the model's native size). 2K costs 4x 1K.", "enum": [ "1K", "2K" ], "title": "Resolution", "type": "string", "x-sr-order": 402 } }, "required": [ "prompt" ], "title": "TextToImageInput", "type": "object" } ``` ### Model output schema The model output schema is: ```json { "description": "Qwen Image 2.1 output with the final USD amount for per-megapixel billing.", "properties": { "images": { "items": { "properties": { "content_type": { "description": "The mime type of the file.", "title": "Content Type", "type": "string" }, "file_name": { "description": "The name of the file. It will be auto-generated if not provided.", "title": "File Name", "type": "string" }, "file_size": { "description": "The size of the file in bytes.", "title": "File Size", "type": "integer" }, "url": { "description": "The URL where the file can be downloaded from.", "title": "Url", "type": "string" } }, "required": [ "content_type", "file_name", "file_size", "url" ], "title": "SunraFile", "type": "object" }, "title": "Images", "type": "array" }, "units": { "description": "Final billable amount in USD (fal per-megapixel rate x billed megapixels).", "title": "Units", "type": "number" } }, "required": [ "images", "units" ], "title": "ImageGenerationOutput", "type": "object" } ``` ## Example inputs and outputs Use the following example inputs and outputs to understand the model. ### Input example ```json { "prompt": "", "aspect_ratio": "1:1", "guidance_scale": 1, "seed": null, "negative_prompt": null, "enable_prompt_expansion": true, "output_format": "png", "resolution": "1K" } ``` ### Output example ```json { } ``` ## Model code examples ### JavaScript ```javascript import { sunra } from "@sunra/client"; const result = await sunra.subscribe("qwen/qwen-image-2.1/text-to-image", { input: { prompt: '', negative_prompt: null, aspect_ratio: '1:1', resolution: '1K', enable_prompt_expansion: true, guidance_scale: 1, seed: null, output_format: 'png' }, logs: true, onQueueUpdate: (update) => { console.log(`Status Update: ${update.status}, Request ID: ${update.request_id}`); }, }); console.log(result.data); console.log(result.requestId); ``` ### Python ```python import sunra_client result = sunra_client.subscribe( "qwen/qwen-image-2.1/text-to-image", arguments={ "prompt": "", "negative_prompt": None, "aspect_ratio": "1:1", "resolution": "1K", "enable_prompt_expansion": True, "guidance_scale": 1, "seed": None, "output_format": "png" }, with_logs=True, on_enqueue=print, on_queue_update=print, ) print(result) ``` ### Java ```java import ai.sunra.client.*; import java.util.Map; import com.google.gson.JsonObject; var client = SunraClient.withEnvCredentials(); var response = client.subscribe( "qwen/qwen-image-2.1/text-to-image", SubscribeOptions.builder() .input(Map.of( "prompt", "", "negative_prompt", null, "aspect_ratio", "1:1", "resolution", "1K", "enable_prompt_expansion", true, "guidance_scale", 1, "seed", null, "output_format", "png")) .resultType(JsonObject.class) .onQueueUpdate(update -> System.out.printf( "\nStatus Update: %s, Request ID: %s%n", update.getStatus(), update.getRequestId() )) .logs(true) .build() ); System.out.println("Completed!"); System.out.println(response.getData()); ``` ### Kotlin ```kotlin import ai.sunra.client.kt.* import com.google.gson.JsonObject val client = createSunraClient() val response = client.subscribe( endpointId = "qwen/qwen-image-2.1/text-to-image", input = mapOf( "prompt" to "", "negative_prompt" to null, "aspect_ratio" to "1:1", "resolution" to "1K", "enable_prompt_expansion" to true, "guidance_scale" to 1, "seed" to null, "output_format" to "png"), options = ai.sunra.client.kt.SubscribeOptions(logs = true), onUpdate = { update -> println("\nStatus Update: ${update.status}, Request ID: ${update.requestId}") } ) println("Completed!") println(response.data) ``` ### Curl ```bash curl --request POST \ --url https://api.sunra.ai/v1/queue/qwen/qwen-image-2.1/text-to-image \ --header "Authorization: Key $SUNRA_KEY" \ --header "Content-Type: application/json" \ --data '{"prompt":"","negative_prompt":null,"aspect_ratio":"1:1","resolution":"1K","enable_prompt_expansion":true,"guidance_scale":1,"seed":null,"output_format":"png"}' ``` ## Model readme >