GLM-5.3 is Z.ai's flagship model released on 2026-08-14. It uses exactly the same base as GLM-5.2 and is upgraded purely through post-training. Every "verified" conclusion in this article comes from real calls made through the AIHubMix API (using the Chat Completions, Responses, and Messages protocols) on 2026-08-14.
| Item | Value |
|---|---|
| Context window | 1M tokens (the official exact value is 1,048,576) |
| Maximum output | 128K (the measured limit is 131,072; exceeding it returns 400) |
| Input modality | Text |
| Thinking | Always on and cannot be disabled; reasoning_effort has three tiers: low / high / max (max by default) |
| Relationship to 5.2 | Same base, pure post-training; major gains in coding and long-horizon tasks + emergent cybersecurity capabilities |
| Item | GLM-5.2 | GLM-5.3 |
|---|---|---|
| thinking.type | enabled / disabled (can be turned off) | enabled only (cannot be turned off) |
| reasoning_effort | Compatible with 7-value mappings | Three tiers: low / high / max (max by default) |
| Positioning | General-purpose flagship | Enhanced coding and long-horizon Agent capabilities, with emergent network capabilities |
Official migration recommendation: change applications that previously sent {"type":"disabled"} to {"type":"enabled"} and set reasoning_effort:"low".
Measured: sending disabled through AIHubMix still returns 200 and thinking still occurs (automatically converted according to the semantics of the official channel). If a client depends on "turning off thinking to save tokens," switch to reasoning_effort:"low".
Measured: an invalid enum value returns 200 and falls back to the default max; on the same arithmetic problem, thinking tokens were 27 with low versus 39 with max.
Chat Completions (thinking content is in the reasoning_content field, and in delta.reasoning_content for streaming):
from openai import OpenAI
client = OpenAI(base_url="https://aihubmix.com/v1", api_key="<KEY>")
completion = client.chat.completions.create(
model="coding-glm-5.3",
reasoning_effort="max", # low / high / max, max by default
extra_body={"thinking": {"type": "enabled"}},
messages=[{"role": "user", "content": "Compute the square root of (17*23-19*11), rounded down. Digits only."}],
)
print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content) # observed: "13"Measured: usage.completion_tokens_details.reasoning_tokens reports thinking usage—for the same problem, low used 27 and max used 39.
Responses API (thinking content is a reasoning output item; the text is in summary_text within the summary array):
response = client.responses.create(model="coding-glm-5.3", input="What is the capital of France? City name only.")
# output item types: ["reasoning", "message"]
# reasoning item: {"type": "reasoning", "summary": [{"type": "summary_text", "text": "..."}]}
# usage.output_tokens_details.reasoning_tokens: 80Measured: even without passing any reasoning parameters, a reasoning item is returned by default (no explicit opt-in is required).
Messages (Anthropic protocol) (thinking content is a native thinking content block):
client = Anthropic(api_key="<KEY>", base_url="https://aihubmix.com")
response = client.messages.create(model="coding-glm-5.3", max_tokens=4096,
messages=[{"role": "user", "content": "What is the capital of France? City name only."}])
# content block types: ["thinking", "text"]All three APIs were verified to work; the Responses API showed parallel tool calls within a single turn (the official declaration is supports_parallel_tool_calls: true).
Upstream limits: at most 128 functions in tools; the native tool_choice support is limited to auto.
In Chat Completions, tool_choice:"none" was measured to work (no further tool calls); in the Messages protocol, tool_choice:{type:"none"} was still observed to produce tool_use. To disable tools, remove the tools parameter directly, or use tool_choice:"none" with Chat Completions.
response_format supports text and json_object; the upstream service does not provide a json_schema mode. When a strict schema is required, put the JSON Schema in the prompt and validate it on the client.
Measured: response_format={"type":"json_object"} returned valid JSON containing the requested key.
Context caching / automatic caching is available (on the AIHubMix side).
This article reflects the AIHubMix aggregation channel (coding-glm-5.3 is its preview route); the model ID on the official channel is glm-5.3, so keep the two distinct.
"thinking.type no longer supports disabled — thinking cannot be turned off."
"If your client relied on 'turn off thinking to save tokens', switch to reasoning_effort: 'low'."
GLM-5.3