Wan 2.7 Image Pro is the upper tier of Alibaba's Wan 2.7 Image family, which launched in April 2026. The request is identical to the standard model; what you get extra is size. A plain text prompt can go all the way to 4K, which is enough for print and big backgrounds, while edits from reference photos remain at 2K.
What you can make
- 4K key art and print visuals written from scratch.
- Large backgrounds for video, websites and slides.
- The final, full-size render of a prompt you tested at 1K with a fixed seed.
- Edits with fine detail where the standard tier is not quite enough.
Settings that matter
- Resolution: default 2K. Set
resolution: 4kyourself to get the largest output. - 4K rule: only for text-to-image. As soon as you add
image_urls, the ceiling is 2K. - References: up to 9 images for editing.
- Images per request: up to 4.
- Aspect ratio: 7 shapes.
- Control: optional
negative_promptandseed, prompts up to 5,000 characters. Region edits, color palettes and 12-image group series are not offered in Kadraris yet.
Starter prompt
Close-up of an old bookshop window at night, hand-painted gold lettering "RARE BOOKS" on the glass, rain droplets, warm lamp inside, visible paper texture of the books, 4kAt 4K, mention small textures you want to see (paper, fabric, wood grain); the extra pixels only pay off if there is detail to show.
Questions
What does a Wan 2.7 Image Pro picture cost?
$0.154 per image. You pay only for delivered images, and a failed one costs nothing.
Why is my edit coming back at 2K and not 4K?
Edits with reference images are capped at 2K on this model. 4K is reserved for text-only generation.
Should I draft on Pro?
It is cheaper to iterate on Wan 2.7 Image, which takes the same parameters, and move only the winning prompt and seed to Pro.
Wan 2.7 Image Pro in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan-2.7-image-pro",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "2k"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "wan-2.7-image-pro",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "2k"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "wan-2.7-image-pro",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "2k"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 5000 chars | |
negative_prompt | string | ||
aspect_ratio | string | 1:1 16:9 9:16 4:3 3:4 3:2 2:3 | 1:1 |
resolution | string | 1k 2k 4k | 2k |
num_images | integer | 1-4 | 1 |
image_urls | array | max 9 | |
seed | integer |
Fetch this list as JSON with GET /v1/models/wan-2.7-image-pro.























