Qwen Image 2.0 Pro

Alibaba Qwen Image 2.0 Pro — best quality with text rendering and realistic textures.

All model documentation
Imagealibaba/qwen-image-2.0-pro

Endpoint

text
POST https://api.zekron.tech/api/v1/tasks

Supported modes

text-to-imageimage-to-image

Input parameters

Pass the following fields inside input, alongside the top-level model field. Supported fields come from the same live catalog as the Models page.

promptrequired
aspect_ratiooptional
image_urlsoptional
negative_promptoptional
prompt_extendoptional
seedoptional

Example request

bash
curl -X POST https://api.zekron.tech/api/v1/tasks \
  -H "Authorization: Bearer sk-zekron-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "alibaba/qwen-image-2.0-pro",
  "input": {
    "prompt": "A cinematic lighthouse at golden hour"
  }
}'

Completed task response (illustrative)

json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "model": "alibaba/qwen-image-2.0-pro",
  "status": "success",
  "output": {
    "url": "https://your-app.com/generated-output.png"
  },
  "error_message": null,
  "completed_at": "2026-10-26T12:00:00Z"
}

Polling and outputs

The create request returns HTTP 202 and a top-level id with status processing. Poll GET /tasks/{id} using this local id, not an upstream identifier, until status is success or failed. Read generated files from output. Output structure depends on the model; URLs in examples are illustrative.

javascript
const headers = { Authorization: "Bearer sk-zekron-YOUR_KEY", "Content-Type": "application/json" }
const response = await fetch("https://api.zekron.tech/api/v1/tasks", { method: "POST", headers, body: JSON.stringify({
  "model": "alibaba/qwen-image-2.0-pro",
  "input": {
    "prompt": "A cinematic lighthouse at golden hour"
  }
}) })
if (!response.ok) throw new Error(await response.text())
let task = await response.json()
const id = task.id
for (let attempt = 0; ["pending", "queued", "processing"].includes(task.status); attempt++) {
  if (attempt >= 150) throw new Error("Polling timed out; keep the task id and retry later")
  await new Promise(resolve => setTimeout(resolve, 2000))
  const poll = await fetch(`https://api.zekron.tech/api/v1/tasks/${id}`, { headers })
  if (!poll.ok) throw new Error(await poll.text())
  task = await poll.json()
}
if (task.status !== "success") throw new Error(task.error_message ?? "Generation failed")
console.log(task.output)

Failed tasks release their reserved balance once. Outputs are retained for 30 days.

View current pricing on Models