Qwen Image 3.0 Pro
qwen-image-3.0-proPublisher's APIText to imageImage editing
Alibaba's flagship Qwen Image 3.0 Pro through Alibaba Cloud Model Studio: finer detail and text than Qwen Image 3.0, up to 2.25 megapixels. Model Studio's content moderation applies, so explicit requests are refused.
Inputs
Send these in the task's input object. Only required fields are needed; GET /v1/models/qwen-image-3.0-pro returns them as a JSON Schema.
| Field | Type | Default | Details |
|---|---|---|---|
promptrequired | string | — | What to draw, or how to change the reference images (up to ~4,500 tokens). Model Studio rewrites the prompt first unless up to 20,000 characters |
negative_prompt | string | — | What to keep out of the image. up to 2,000 characters |
width | integer | — | Multiple of 16; width x height must total 262,144-2,250,000 pixels, at most 8:1 either way. Set both or neither. Defaults to 1024x1024. 256 to 4,096 · multiple of 16 |
height | integer | — | Multiple of 16; width x height must total 262,144-2,250,000 pixels, at most 8:1 either way. Set both or neither. Defaults to 1024x1024. 256 to 4,096 · multiple of 16 |
seed | integer | — | 0 to 2,147,483,647 |
num_images | integer | 1 | 1 to 4 |
reference_images | array of URLs | [] | Up to three output URLs of images this account generated, to edit or combine. The prompt refers to them in order. up to 3 items |
prompt_extend | boolean | — | Let Model Studio rewrite the prompt before generating (on unless false). Turn it off for detailed prompts. |
Example
Create a task with your API key, then poll it or pass a webhook_url. user is your own id for the end user who asked for the image.
curl https://api.velvetapi.dev/v1/tasks \
-H "Authorization: Bearer $VELVET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-image-3.0-pro",
"user": "user-123",
"input": {
"prompt": "A candid photograph of a woman with auburn hair reading on a sunlit balcony, soft morning light, 35mm film grain."
}
}'import { VelvetAPI } from "@velvetapi/sdk";
const velvet = new VelvetAPI({ apiKey: process.env.VELVET_API_KEY });
const task = await velvet.tasks.create({
model: "qwen-image-3.0-pro",
user: "user-123",
input: {
prompt: "A candid photograph of a woman with auburn hair reading on a sunlit balcony, soft morning light, 35mm film grain.",
},
});
const done = await velvet.tasks.wait(task.id);
console.log(done.state, done.outputs.map((output) => output.url));import os
from velvetapi import VelvetAPI
client = VelvetAPI(api_key=os.environ["VELVET_API_KEY"])
task = client.tasks.create(
model="qwen-image-3.0-pro",
user="user-123",
input={
"prompt": "A candid photograph of a woman with auburn hair reading on a sunlit balcony, soft morning light, 35mm film grain.",
},
)
done = client.tasks.wait(task["id"])
print(done["state"], [output["url"] for output in done["outputs"]])Response 202 Accepted
{
"id": "0b9c6c2e-4d3f-4a51-9a8e-2f7d1c3b5a90",
"object": "task",
"model": "qwen-image-3.0-pro",
"state": "queued",
"user": "user-123",
"price_usd": 0.045,
"outputs": [],
"error": null,
"meta": {},
"created_at": "2026-10-20T06:31:00.000Z",
"started_at": null,
"finished_at": null
}Next: tasks and webhooks, errors and the API reference.