Grok Imagine is handy for fast rounds of images in formats other models skip, such as tall 9:20 phone wallpapers. It is xAI's image family from January 2026, priced at a flat rate per image in two quality levels. You can also hand it one photo to change.
Your prompt is used as written, so the details you leave out will not be filled in for you.
What you can make
- Phone wallpapers and stories in 9:19.5 or 9:20
- Four variations of one idea in a single request
- Simple edits of one photo, such as a new style or an added object
- Draft rounds at standard quality before a high-quality final
Settings that matter
quality:standard(default) for exploring,highfor images you publish. Both are billed at the same flat rate.aspect_ratio: 13 options plusauto, from 1:1 to 9:20 and 20:9. 9:19.5 and 9:20 suit modern phones; 19.5:9 and 20:9 suit wide banners.resolution:1kor2k. At 2k a 16:9 image is 2816x1584.num_images: 1 to 4.image_urls: exactly one photo for edits. Describe the change, not the whole image.- Prompts can be up to 10,000 characters.
Starter prompt
Phone wallpaper, 9:20, a lone lighthouse on black cliffs
under a green aurora, long exposure look, deep teal and
violet tones, empty dark area at the top for the clockChange the scene and keep the empty top area so the lock-screen clock does not cover the subject.
Questions
How is Grok Imagine priced?
At one flat rate per image, whichever quality you pick: $0.0246 per image. Failed images cost $0.
Can I mix several references?
No, edits take one source photo. For multi-reference work, try Qwen Image 2.1 or Nano Banana 2.
What does version 2.0 add?
Grok Imagine Image 2.0 focuses on following long prompts exactly, with seven ratios and no editing.
Grok Imagine in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto",
"resolution": "1k"
}
}'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": "grok-imagine",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto",
"resolution": "1k"
}
}).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": "grok-imagine",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto",
"resolution": "1k"
}
}),
})).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 | ≤ 10000 chars | |
aspect_ratio | string | auto 1:1 3:4 4:3 9:16 16:9 2:3 3:2 9:19.5 19.5:9 9:20 20:9 1:2 2:1 | auto |
resolution | string | 1k 2k | 1k |
quality | string | standard high | standard |
num_images | integer | 1-4 | 1 |
image_urls | array | max 1 |
Fetch this list as JSON with GET /v1/models/grok-imagine.
























