What is retiring, and what the vendor says to use
Mistral's changelog lists Z.ai GLM 5.2 (zai-glm-5-2) as deprecated, retiring on 31 October 2026, and says to use Z.ai GLM 5.3 (zai-glm-5-3) instead, at the same price.1 GLM 5.3 became generally available on Mistral on 28 September.1 The page does not say how a request to the retired id will fail, so plan for an error and do not assume an automatic redirect.
GLM 5.3 Flash (zai-glm-5-3-flash) arrived on 22 October. Mistral describes it as a multimodal mixture-of-experts model with 320B parameters, 18B active and a 1M-token context, at $0.15 input, $0.03 cached input and $0.50 output per million tokens.1 It is not the named successor. It is a different model, and the changelog gives no rate for zai-glm-5-3, so compare the two on your own bill before choosing.
This is a different class of problem from the usual calendar entry. The model is a third party's, served under a host's id, and the host sets the date. INFRO's own tracker lists it as a Mistral shutdown, with the date four days out when it was last updated.2
Find every call, including the ones that are not in code
Hosted third-party ids are spelled differently per platform. Mistral uses zai-glm-5-2. Alibaba Model Studio's recommended list shows GLM 5.3 as both glm-5.3 and ZHIPU/GLM-5.3.3 Perplexity's Agent API uses provider/model ids such as openai/gpt-5.4.4 Search for all spellings:
rg -n -i 'zai-glm-5-2|glm[-_. ]?5[-_.]?2|zhipu/glm' \
--glob '!node_modules' --glob '!*.lock' .
# also: .env files, Helm values, feature-flag exports, prompt/config tablesCode is the easy half. The harder places are a config table, a feature-flag payload, an eval harness, a notebook and a vendor's no-code workflow that stores a model string. Then check traffic, not just source: group the last 30 days of requests by model id in your gateway or provider logs. A string that appears there but not in your repo is a caller you have not found. Perplexity's October retirement notice told users to update "direct model selections and fallback chains" before the cutoff, which is the same two places to look.4
Choose the successor and test it first
Start with zai-glm-5-3, since the vendor names it. Add zai-glm-5-3-flash only if you want the lower-rate tier and are willing to qualify it separately. Before moving traffic, replay a sample of real prompts against each candidate and check:
- Output shape: JSON validity, tool-call arguments and refusal behaviour on your own schemas.
- Length and latency: time to first token and total tokens per task, since a model that answers longer costs more at the same rate.
- Cost per task: use the list rates your provider bills, then your contract rate if you have one.
- Region and key: Model Studio regions differ in endpoints, supported models and pricing, and API keys are not interchangeable across regions.5 A model id that works in one region may not exist in another.
Put a failover rule in front
A migration done in one deploy has no way back. A rule in front of the call lets you change the model without shipping code, and keeps one working path if the new one misbehaves.
With INFRO, name a route in your application and put the model choice in the route's targets. Priority targets are tried in order, and weighted targets let you send a small share to the candidate first.6 Failover applies before the first token; a provider 5xx, timeout, 429 or even a 404 moves the request to the next target.7 If you call a model directly, a request-level fallbacks array takes up to five catalog model ids, tried in order once the primary has failed.7
from openai import OpenAI
client = OpenAI(base_url="https://api.infro.io/v1", api_key="INFRO_API_KEY")
resp = client.chat.completions.create(
model="<primary: tested GLM 5.3 id>",
messages=[{"role": "user", "content": "..."}],
# ids below are placeholders; use catalog ids from /providers
extra_body={"fallbacks": ["<second: Flash candidate>"]},
)fallbacks is ignored when model names a route, so use one mechanism per call site.7 A fallback is cross-model: your outputs will change when it fires. That is why the replay test comes first. For teams that already record retirements in INFRO, the model-lifecycle capability warns organizations still sending a retiring model and, from the shutdown date, refuses it before any provider call, naming the replacement.
After the date
Check three things on 1 November: no request still names zai-glm-5-2, the fallback is not carrying more than its expected share, and cost per task moved the way your replay predicted. The same checks apply to the next hosted-model retirement. See the deprecation calendar for dated entries and the migration playbook for the general sequence.
