Grok Imagine Image 2.0 Preview

Grok Imagine Image 2.0 Preview is xAI's next-generation image generation and editing model for both text-to-image and prompt-guided image transformation. It keeps the same core workflow as the current Grok Imagine image family, including aspect-ratio control and image-based editing, while adding a dedicated quality parameter so teams can tune output fidelity within the same API shape. It is a strong fit for creative production pipelines that want one Grok image endpoint for generation, editing, and quality-sensitive iteration without switching to a separate model family.

Complete technical specification for integration
Step-by-step tutorials for advanced use cases
← All GuidesRendering accurate text with Grok Imagine Image 2.0
How to render accurate, readable text with Grok Imagine Image 2.0: quoting the exact words, directing typography and hierarchy, and holding up on small, dense layouts.
Introduction
Text rendering is where most image models fall apart. They treat letters as texture rather than language, so words come out misspelled, doubled, or melting into nonsense past a few characters. Grok Imagine Image 2.0 was built the other way: it plans typography and layout the way a designer would, so a headline lands sharp, a price list stays aligned, and dense multi-part designs hold together instead of dissolving. It is what moves the model from "nice render" to a poster, a label, or a mockup you can actually use.

A bold modern event poster, portrait orientation, clean minimalist layout on a deep navy background with one large bright coral circle. In a heavy white sans-serif the title reads "DESIGN SUMMIT", centred. Below it a line reads "October 14-16, 2026, Lisbon". Near the bottom a smaller line reads "Talks, Workshops, Networking". Crisp accurate typography, strong visual hierarchy, generous whitespace, high-resolution print quality, no other text.
This guide covers putting text in the prompt, quoting the exact words you want, directing the typography and hierarchy, and holding up on small, dense layouts. It builds on the prompting guide, and you can drop text into an existing image with the editing guide.
The request
Text is not a separate parameter. It lives in the positivePrompt alongside the rest of the scene, and the model renders the words you name. A design brief is a normal imageInference call.
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'xai:grok-imagine@image-2.0',
positivePrompt: 'A minimalist event poster on a deep navy background. In a heavy white sans-serif the title reads "DESIGN SUMMIT", with a smaller line below reading "October 14-16, 2026, Lisbon". Crisp accurate typography, generous whitespace, no other text.',
width: 1776,
height: 2368
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "xai:grok-imagine@image-2.0",
"positivePrompt": "A minimalist event poster on a deep navy background. In a heavy white sans-serif the title reads \"DESIGN SUMMIT\", with a smaller line below reading \"October 14-16, 2026, Lisbon\". Crisp accurate typography, generous whitespace, no other text.",
"width": 1776,
"height": 2368
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "imageInference",
"taskUUID": "d3b4c5e6-f7a8-4901-c234-56789abcdef0",
"model": "xai:grok-imagine@image-2.0",
"positivePrompt": "A minimalist event poster on a deep navy background. In a heavy white sans-serif the title reads \"DESIGN SUMMIT\", with a smaller line below reading \"October 14-16, 2026, Lisbon\". Crisp accurate typography, generous whitespace, no other text.",
"width": 1776,
"height": 2368
}
]'runware run xai:grok-imagine@image-2.0 \
positivePrompt="A minimalist event poster on a deep navy background. In a heavy white sans-serif the title reads \"DESIGN SUMMIT\", with a smaller line below reading \"October 14-16, 2026, Lisbon\". Crisp accurate typography, generous whitespace, no other text." \
width=1776 \
height=2368{
"taskType": "imageInference",
"taskUUID": "d3b4c5e6-f7a8-4901-c234-56789abcdef0",
"model": "xai:grok-imagine@image-2.0",
"positivePrompt": "A minimalist event poster on a deep navy background. In a heavy white sans-serif the title reads \"DESIGN SUMMIT\", with a smaller line below reading \"October 14-16, 2026, Lisbon\". Crisp accurate typography, generous whitespace, no other text.",
"width": 1776,
"height": 2368
}[
{
"taskType": "imageInference",
"taskUUID": "d3b4c5e6-f7a8-4901-c234-56789abcdef0",
"imageUUID": "9e3d4f5a-6b7c-8901-def0-123456789012",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/9e3d4f5a-6b7c-8901-def0-123456789012.jpg"
}
]Quoting the exact text
The single most important habit is to wrap the exact words in quotation marks. Quoted text tells the model these are literal characters to render, not a theme to interpret, and it is what gets spelling, spacing, and punctuation right. The granola box below carries three quoted strings, and each lands as written:

A clean product packshot of a rectangular kraft-paper granola box standing on a light wooden kitchen surface in soft morning light. The front of the box reads, in a warm bold serif, "MORNING HARVEST" across the top, then "Toasted Oat & Honey Granola" in a smaller line below, and "500g" in the lower corner. Crisp accurate legible packaging typography, realistic product photography, no other text.
Say which words go where and the model follows it: "MORNING HARVEST" across the top, the variety line below, the weight in the corner. Two rules keep it clean. Keep each string short, since a handful of words render far more reliably than a paragraph, and add "no other text" so the model doesn't invent extra labels to fill the design.
Typography, hierarchy, and layout
Where the model pulls ahead is treating text as design, not decoration. Name the roles, a header, section titles, items, prices, and it builds a real hierarchy with the sizing and spacing to match, so a text-dense layout reads at a glance. This menu holds four dishes, two sections, and their prices in order:

A photograph of a printed restaurant menu card on a dark slate table, portrait orientation, elegant editorial layout. The header reads "THE GARDEN TABLE" in a refined serif. A section headed "STARTERS" lists "Heirloom Tomato Salad" and "Grilled Halloumi" with the prices "9" and "11". A section headed "MAINS" lists "Wild Mushroom Risotto" and "Pan-Seared Salmon" with the prices "18" and "26". Clear typographic hierarchy between headings, items, and prices, generous spacing, crisp legible small text, realistic print detail, no other text.
Describe the structure the way you would brief a designer: what is the title, what are the section headings, which lines are items and which are prices. Naming the hierarchy is what keeps the header dominant and the prices aligned, instead of a flat wall of same-size text. The same approach carries a poster's headline and subhead, a label's name and fine print, or a slide's title and bullets.
Small text and dense designs
The hard test for any text model is small type at volume: a UI packed with labels, a spec sheet, fine print on packaging. This is where the "plans the layout" difference shows, because each element has to stay legible and in place. The app mockup below keeps every label sharp:

A clean modern mobile app UI mockup shown on a smartphone, a fitness tracker home screen on a soft off-white background. A large heading reads "Today". Below it a circular progress ring shows "72%" at its centre with the label "Daily goal". Two stat rows read "Steps 8,432" and "Water 6 of 8 glasses". A rounded button at the bottom reads "Log activity". Crisp legible UI typography, precise small text, flat modern design, no other text.
Two things hold small, dense text together. Render at 2K when the text is fine or crowded, since the extra pixels give small glyphs room to stay sharp, and keep each string short and specific so the model spends its budget on legibility rather than guessing at long copy. When a design has more text than one pass renders cleanly, generate the base at 2K and set the smallest copy as separate elements you composite afterward.
Tips
-
Quote the exact words. Wrap literal text in quotation marks so the model renders characters rather than interpreting a theme. It is the single biggest lever on spelling and accuracy.
-
Say which words go where. "Title reads X, subheading reads Y, footer reads Z" gives the model the layout as well as the copy, so the hierarchy comes out right.
-
Keep each string short. A few words render far more reliably than a sentence. For long copy, split it into separate short elements.
-
Add "no other text". Without it the model tends to fill a design with invented labels. The clause keeps the frame to the words you asked for.
-
Render fine or crowded text at 2K. The extra resolution keeps small glyphs sharp. Iterate a layout at 1K, then re-render the keeper at 2K.
-
Name the typographic roles. Header, section titles, items, prices, captions. Briefing the hierarchy is what separates a designed layout from a flat block of text.