SpyBara
Go Premium

Documentation 2026-09-02 22:03 UTC to 2026-09-03 16:59 UTC

4 files changed +107 −4. View all changes and history on the product overview
2026
Wed 30 23:57 Tue 29 23:59 Mon 28 23:57 Sun 27 22:59 Sat 26 23:59 Fri 25 23:01 Thu 24 23:59 Wed 23 23:59 Tue 22 23:58 Mon 21 23:00 Sun 20 23:01 Sat 19 23:59 Fri 18 23:59 Thu 17 10:04 Wed 16 19:01 Tue 15 17:00 Mon 14 06:00 Sun 13 05:00 Fri 11 21:00 Tue 8 21:00 Mon 7 22:57 Thu 3 16:59 Wed 2 22:03
Details

1#### Migration Guides

2 

3# grok-imagine-image-quality Retirement on November 2, 2026

4 

5`grok-imagine-image-2.0` now covers everything `grok-imagine-image-quality` was used for, at a lower price. **Effective November 2, 2026**, the `grok-imagine-image-quality` model slug is retired from the xAI API. Its 60-day notice period began on September 2, 2026.

6 

7> [!CAUTION]

8>

9> After **November 2, 2026**, requests to `grok-imagine-image-quality` are served by `grok-imagine-image-2.0` with `quality` set to `low`. The slug continues to resolve, so you do not need to change your code to avoid breakage. `grok-imagine-image-2.0` is [priced differently](#pricing-impact) than the model it replaces.

10 

11`grok-imagine-image` (1.0) is not affected by this change.

12 

13### How the redirect works

14 

15Starting **November 2, 2026**:

16 

17* Requests to `grok-imagine-image-quality` on `/v1/images/generations` and `/v1/images/edits` are served by **`grok-imagine-image-2.0` with `quality: "low"`**.

18* The request and response shapes are unchanged. Every parameter accepted today is accepted after the switch, and `grok-imagine-image-2.0` additionally accepts `quality`, up to five source images for editing, and the `21:9` and `5:2` aspect ratios.

19* The `model` field on responses reports the model that served the request, so you can confirm the switch from your logs.

20* Requests to `grok-imagine-image-pro`, which [already redirect](/developers/migration/may-15-retirement) to `grok-imagine-image-quality`, follow it to `grok-imagine-image-2.0` at `low`.

21 

22## Pricing impact

23 

24`grok-imagine-image-2.0` at `low` quality is $0.01 per image cheaper than `grok-imagine-image-quality` at every resolution. If you keep sending requests to the retired slug after November 2, you are billed at the `grok-imagine-image-2.0` `low` rate. See [Pricing](/developers/pricing) for current per-image rates.

25 

26## Recommended replacement

27 

28We recommend switching to `grok-imagine-image-2.0` explicitly before November 2. Doing so lets you choose the quality you pay for, rather than accepting the `low` default applied by the redirect.

29 

30| Model being retired | Redirect target after November 2 |

31|---|---|

32| `grok-imagine-image-quality` | `grok-imagine-image-2.0` with `quality: "low"` |

33 

34Migrating is a one-line change to the `model` field. `grok-imagine-image-2.0` also accepts an optional [`quality`](/developers/model-capabilities/images/generation#quality) parameter:

35 

36* `low` is what the redirect uses. It ranks #2 on the [Arena](https://arena.ai) Image Edit leaderboard and #3 on Text-to-Image, and is the closest match in cost to `grok-imagine-image-quality`.

37* `medium` spends more compute on each image for finer detail; choose it where output quality matters more than cost.

38* `auto` (the default when `quality` is omitted) currently serves `low` for generation and `medium` for editing, and you are billed at the quality served.

39 

40```python customLanguage="pythonXAI"

41import xai_sdk

42 

43client = xai_sdk.Client()

44 

45response = client.image.sample(

46 prompt="A watercolor painting of a lighthouse at dawn",

47 model="grok-imagine-image-2.0",

48 quality="low",

49)

50 

51print(response.url)

52```

53 

54```python customLanguage="pythonOpenAISDK"

55from openai import OpenAI

56 

57client = OpenAI(

58 base_url="https://api.x.ai/v1",

59 api_key="YOUR_API_KEY",

60)

61 

62response = client.images.generate(

63 model="grok-imagine-image-2.0",

64 prompt="A watercolor painting of a lighthouse at dawn",

65 extra_body={"quality": "low"},

66)

67 

68print(response.data[0].url)

69```

70 

71```javascript customLanguage="javascriptOpenAISDK"

72import OpenAI from "openai";

73 

74const client = new OpenAI({

75 apiKey: process.env.XAI_API_KEY,

76 baseURL: "https://api.x.ai/v1",

77});

78 

79const response = await client.images.generate({

80 model: "grok-imagine-image-2.0",

81 prompt: "A watercolor painting of a lighthouse at dawn",

82 quality: "low",

83});

84 

85console.log(response.data[0].url);

86```

87 

88```bash

89curl -X POST https://api.x.ai/v1/images/generations \

90 -H "Content-Type: application/json" \

91 -H "Authorization: Bearer $XAI_API_KEY" \

92 -d '{

93 "model": "grok-imagine-image-2.0",

94 "prompt": "A watercolor painting of a lighthouse at dawn",

95 "quality": "low"

96 }'

97```

98 

99The same `model` change applies to [image editing](/developers/model-capabilities/images/editing) requests on `/v1/images/edits`.

100 

101## Need help?

102 

103If you have questions or need assistance with this migration, reach out to [support@x.ai](mailto:support@x.ai).

Details

23 23 

24* Requests to any **reasoning** model in the list above will be served by **`grok-4.3` with `low` reasoning effort**.24* Requests to any **reasoning** model in the list above will be served by **`grok-4.3` with `low` reasoning effort**.

25* Requests to any **non-reasoning** model in the list above will be served by **`grok-4.3` with `none` reasoning effort**.25* Requests to any **non-reasoning** model in the list above will be served by **`grok-4.3` with `none` reasoning effort**.

26* `grok-imagine-image-pro` will be redirected to `grok-imagine-image-quality`.26* `grok-imagine-image-pro` will be redirected to `grok-imagine-image-quality`. On November 2, 2026, `grok-imagine-image-quality` is itself retired in favor of `grok-imagine-image-2.0`; see the [November 2 migration guide](/developers/migration/imagine-image-quality-nov-2).

27 27 

28## Pricing impact28## Pricing impact

29 29 

rate-limits.md +2 −2

Details

40| grok-4.20-0309-non-reasoning | T0: 37, T1: 50, T2: 75, T3: 125, T4: 208 | T0: 10M, T1: 15M, T2: 25M, T3: 45M, T4: 85M |40| grok-4.20-0309-non-reasoning | T0: 37, T1: 50, T2: 75, T3: 125, T4: 208 | T0: 10M, T1: 15M, T2: 25M, T3: 45M, T4: 85M |

41| grok-build-0.1 | T0: 37, T1: 50, T2: 75, T3: 125, T4: 208 | T0: 10M, T1: 15M, T2: 25M, T3: 45M, T4: 85M |41| grok-build-0.1 | T0: 37, T1: 50, T2: 75, T3: 125, T4: 208 | T0: 10M, T1: 15M, T2: 25M, T3: 45M, T4: 85M |

42| grok-4.20-multi-agent-0309 | T0: 9, T1: 12, T2: 18, T3: 31, T4: 56 | T0: 2.5M, T1: 3.7M, T2: 6.2M, T3: 11M, T4: 21M |42| grok-4.20-multi-agent-0309 | T0: 9, T1: 12, T2: 18, T3: 31, T4: 56 | T0: 2.5M, T1: 3.7M, T2: 6.2M, T3: 11M, T4: 21M |

43| grok-imagine-image | T0: 6, T1: 12, T2: 25, T3: 50, T4: 100 | — |

44| grok-imagine-image-quality | T0: 6, T1: 12, T2: 25, T3: 50, T4: 100 | — |43| grok-imagine-image-quality | T0: 6, T1: 12, T2: 25, T3: 50, T4: 100 | — |

45| grok-imagine-image-2.0 | T0: 6, T1: 12, T2: 25, T3: 50, T4: 100 | — |44| grok-imagine-image-2.0 | T0: 6, T1: 12, T2: 25, T3: 50, T4: 100 | — |

46| grok-imagine-video-1.5 | T0: 10, T1: 20, T2: 39, T3: 79, T4: 158 | — |45| grok-imagine-image | T0: 6, T1: 12, T2: 25, T3: 50, T4: 100 | — |

47| grok-imagine-video | T0: 10, T1: 20, T2: 39, T3: 79, T4: 158 | — |46| grok-imagine-video | T0: 10, T1: 20, T2: 39, T3: 79, T4: 158 | — |

47| grok-imagine-video-1.5 | T0: 10, T1: 20, T2: 39, T3: 79, T4: 158 | — |

48 48 

49### What counts toward TPM49### What counts toward TPM

50 50 

Details

210 210 

211 * `cache_read_input_tokens` (integer, required) — Number of tokens retrieved from the cache for this request.211 * `cache_read_input_tokens` (integer, required) — Number of tokens retrieved from the cache for this request.

212 212 

213 * `input_tokens` (integer, required) — Number of input tokens used213 * `input_tokens` (integer, required) — Number of input tokens not served from cache (Anthropic semantics).

214 214 

215 * `output_tokens` (integer, required) — Number of output tokens used215 * `output_tokens` (integer, required) — Number of output tokens used

216 216