Grok Imagine Image 2.0 is xAI's image model from August 2026. On Jantaris it returns between 1 and 4 images per request and takes prompts of up to 10,000 characters, which it uses as written instead of rewriting them. That makes results easier to predict when you tune a prompt word by word. It accepts seven aspect ratios: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16 and 16:9. It is text-to-image only here, without reference images.
Best for
- Large batches of variations from one prompt for creative A/B tests
- Prompt engineering where the model must follow your exact wording
- Social images in portrait 9:16 or landscape 16:9
- Early concept exploration for characters and scenes
Prompting tips
- Nothing is rewritten, so include every detail you care about: style, lighting, composition, colors.
- Ask for up to 4 images in one call with
num_imagesinstead of sending 4 requests. - 1:2, 2:1, 4:5 and
autoreturn an error on this model; stick to the seven listed ratios. - Change one phrase at a time. Without rewriting, small edits show up directly in the output.
FAQ
How much does the Grok Imagine Image 2.0 API cost?
The price is $0.045 per image. The estimated_cost field shows the total for your num_images before the job starts, and failed generations are not charged.
Does Grok Imagine Image 2.0 rewrite my prompt?
No. The prompt is used as written, so what you type is exactly what the model receives.
How is it different from Grok Imagine?
Grok Imagine is xAI's earlier image family with standard and high quality tiers, 13 aspect ratios plus auto and single-image editing. Version 2.0 is text-to-image only on Jantaris and focuses on following long prompts word for word.
How to call Grok Imagine Image 2.0 via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-image-2.0",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1"
}
}'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": "grok-imagine-image-2.0",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1"
}
}).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": "grok-imagine-image-2.0",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1"
}
}),
})).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 | ≤ 10000 chars | |
aspect_ratio | string | 1:1 2:3 3:2 3:4 4:3 9:16 16:9 | 1:1 |
num_images | integer | 1-4 | 1 |
The same schema is available from GET /v1/models/grok-imagine-image-2.0.













