Wan 2.7 Image is Alibaba's April 2026 image model, and this page covers the standard tier. One endpoint handles text-to-image and editing with up to 9 reference images, returning up to 4 images per request. Output is 1K or 2K (default 2K) across 7 aspect ratios, with negative_prompt, seed and prompts up to 5,000 characters. Alibaba also offers box-targeted region edits, color palettes, a thinking mode and 12-image group series, but Jantaris does not expose those options yet.
Best for
- Repeatable product images where a fixed seed keeps the style
- Swapping a product, background or lighting using reference photos
- Up to 4 cover variants in one call for a client to choose from
- Multi-reference composites for catalogs
Prompting tips
- Use
negative_promptto exclude recurring artifacts such as watermarks or stray text. - In edit mode the output ratio follows the last input image, so order references with that in mind.
- Set
num_images(1-4) to get several takes on one prompt in a single call. - Set a
seedto reproduce a result while you adjust only the wording.
FAQ
How much does Wan 2.7 Image cost?
The standard tier costs $0.0611 per image. Jantaris shows the estimate before submission and does not charge failed generations.
Does Wan 2.7 Image support 4K?
Not on this tier; it stops at 2K. Wan 2.7 Image Pro offers 4K for text-to-image.
Can I use the color palette or box-targeted edits?
Not yet. Alibaba's API has both, but Jantaris currently exposes prompt, negative prompt, ratio, resolution, num_images, image_urls and seed. Describe brand colors and the area to change in the prompt instead.
How to call Wan 2.7 Image via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan-2.7-image",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1",
"resolution": "2k"
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "wan-2.7-image",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"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://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "wan-2.7-image",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"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));
Parameters
| 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 | 2k |
num_images | integer | 1-4 | 1 |
image_urls | array | max 9 | |
seed | integer |
The same schema is available from GET /v1/models/wan-2.7-image.










