Skip to content

Grok's Model Deprecation and Version History on the xAI API

9 min read · updated August 11, 2026

xAI retired eight model slugs on a single afternoon in May 2026 and none of the requests to them started failing. They started answering from a different model, at a different price, with a different context window. That is a harder problem than an outage.

The published retirement

xAI publishes the notice as a migration page in its developer documentation. Effective 15 May 2026 at 12:00 PM PT, these slugs were retired:

grok-4-1-fast-reasoning
grok-4-1-fast-non-reasoning
grok-4-fast-reasoning
grok-4-fast-non-reasoning
grok-4-0709
grok-code-fast-1
grok-3
grok-imagine-image-pro

The recommended migrations, from the same page: reasoning workloads to grok-4.3; non-reasoning workloads to grok-4.3 with reasoning effort set to none; code workloads to grok-build-0.1; and the retired imaging model to grok-imagine-image-quality.

Note what that list contains. grok-4-0709 is a dated snapshot — pinning did not exempt it. grok-code-fast-1 was a specialised model whose replacement is a differently-specialised one rather than a newer version of itself. And the generation retired here is one generation back from current, not five. This is a fast retirement cadence by the standards of the industry.

The date, slug list and redirect targets above are as published on xAI’s retirement notice. Retirements are announced per event rather than on a fixed schedule, so check the developer documentation for notices after this one before assuming a slug is safe.

Retired slugs redirect, they do not fail

This is the part worth building around. xAI’s notice states that after the retirement time, requests to the retired slugs automatically redirect to grok-4.3, and that the slugs continue to resolve, so code does not need to change to avoid breakage.

The mapping is documented: reasoning models redirect to grok-4.3 with low reasoning effort, non-reasoning models redirect to grok-4.3 with no reasoning effort, and the imaging model redirects to grok-imagine-image-quality.

As an availability decision that is generous — nobody had an outage. As an operational property it is the more dangerous of the two options, because a 404 tells you immediately and in the obvious place, while a redirect tells you nothing at all. On the afternoon of 15 May, an application calling grok-4-fast-non-reasoning silently changed model, changed context window, changed price, changed tokenizer behaviour and changed output style, while every health check stayed green. The first symptom would be a prompt that had been tuned against one model quietly performing differently against another.

So do not rely on the redirect as a migration strategy. Treat it as what it is — a grace period that hides the problem — and read response.model, which reports the model that actually served the request. A one-line assertion that the served model matches the requested one turns a silent substitution into a logged event.

served = response["model"]
if served != REQUESTED_MODEL:
    log.warning("model substituted: requested=%s served=%s",
                REQUESTED_MODEL, served)

What the redirect costs

xAI states it directly: continuing to send requests to a deprecated slug after the retirement bills at grok-4.3’s pricing — $1.25 per 1M input tokens and $2.50 per 1M output tokens — rather than at the original model’s rates.

The retired models were the fast tier, priced below the flagship. So the redirect is not price-neutral for the workloads most likely to be pointed at it: high-volume, latency-sensitive, cheap-model traffic, moved onto a more expensive model without a deployment. And because grok-4.3 carries the same 200k prompt threshold that doubles the rate, a long-context workload can land on the higher tier of the more expensive model at once.

There is a second-order effect too. Reasoning-model slugs redirect with low reasoning effort, which means reasoning tokens where the retired model may have produced none, billed as output and counted against your tokens-per-minute limit. If your throughput fell and your bill rose on the same afternoon, that is the mechanism.

Aliases move too

Retirement is one of two ways the model behind your request changes. The other is routine. xAI documents that <modelname> is aliased to the latest stable version and <modelname>-latest to the latest version, and recommends both for most users precisely because they move.

Currently grok-latest resolves to grok-4.3 and grok-build-latest appears against both grok-4.5 and grok-build-0.1 — models with different context windows and, in the latter pairing, a fourfold difference. An alias is a subscription to xAI’s roadmap. That is a reasonable thing to want for exploratory work and a poor thing to have under a tuned prompt. <modelname>-<date> is the documented escape hatch, and pinning one is a five-minute change.

Surviving the next one

  • One place holds the model id. A constant or an environment variable, not a string in fourteen call sites. The cost of a retirement is proportional to how many files you have to edit.
  • Assert the served model. Compare response.model against what you asked for and log every mismatch. This is the only detector that catches a silent redirect.
  • Watch cost per request, not total spend. A substitution shows up first as a step change in unit cost. Total spend moves with traffic and hides it.
  • Keep a small evaluation set. Twenty saved prompt-and-expected-shape pairs, run on demand, will tell you within minutes whether a new model still satisfies your format contract. This is the cheapest thing on the list and the one most often skipped.
  • Know your window assumptions. If your code truncates input to fit a specific context length, that constant is wrong the moment the model changes underneath it — in both directions.