GLM All-Model API - Messages Reference
- Call GLM series models through the Anthropic Messages protocol, choosing the specific model with the
modelparameter - The request and response structures match the Anthropic API
- System prompt: passed through the top-level
systemfield - Thinking mode: thinking is on by default across the series and is returned in
content[type=thinking]blocks; onlyglm-5.2can turn it off withthinking.type=disabled - Streaming: SSE event stream
- Tool calling: compatible with the Anthropic
tool_use/tool_resultflow - Image input: genuinely supported only by
glm-5.3-flash; see themessagesfield for details
https://direct.evolink.ai, which has better support for text models and long-lived connections. https://api.evolink.ai is the primary endpoint for multimodal services and serves as a fallback address for text models.glm-5.2 supports thinking.type: "disabled"; glm-5.3 and glm-5.3-flash always think and return an error if disabled is sent. When migrating from glm-5.2, remove the hard-coded disabled before switching models.Authorizations
##All interfaces require authentication using a Bearer Token##
Get an API Key:
Visit the API Key management page to obtain your API Key
Add it to the request header when using:
Note: EvoLink uses Bearer Token authentication uniformly for /v1/messages.
Body
Model to call:
glm-5.3, glm-5.3-flash, glm-5.2 "glm-5.3"
The list of conversation messages, alternating between user and assistant turns
Note:
- At least one message is required
- The last message is normally
role=user - Multi-turn context is supported and the model draws on the history
Image input: only glm-5.3-flash supports it, through a {"type":"image","source":{...}} block inside the content array.
Sending image content blocks to glm-5.3 or glm-5.2 does not return an error, but the model cannot read the image. The request returns 200 as usual, and the model answers from the text alone, producing a plausible-looking reply that has nothing to do with the image — and the result is not consistent across requests.
This kind of silent failure is hard to track down in production, so choose glm-5.3-flash when you need image understanding.
1Upper limit on the length of the generated content (in tokens)
Note:
- The GLM series supports up to 131,072 tokens (128K) of output; setting at least
1024is recommended - Tokens produced by thinking also count towards this limit
- When the limit is reached the content is truncated and the response carries
stop_reason=max_tokens
1 <= x <= 1310721024
System prompt, used to set the AI's role and behavior
Notes:
- Supports a string or an array of content blocks
- Passed via the top-level
systemfield (do not place it inside messages) - The model follows the system constraints
- An overly long system may be truncated: For long context, place it in
messagesrather than piling everything intosystem
"You are a helpful assistant."
Sampling temperature
Notes:
- Higher values make output more varied, lower values more deterministic
- Recommended range
[0, 1]
0 <= x <= 11
Nucleus sampling threshold
Notes:
- Range
[0, 1] - It is recommended not to adjust temperature and top_p at the same time
0 <= x <= 10.9
Sample only from the K highest-probability tokens (an Anthropic-specific parameter)
Notes:
- Smaller values make output more deterministic, larger values make candidates more diverse
x >= 010
Custom stop sequences: generation stops when it hits any of these strings
Notes:
- Hitting one truncates output, and content before the hit is returned normally
- Note: When a stop sequence is hit, the GLM series returns
stop_reasonasend_turn(rather than the Anthropic-standardstop_sequence), and the response does not include astop_sequencefield. If your client relies onstop_reason=="stop_sequence"to detect a hit, special handling is required
Whether to return via SSE streaming
true: Server-Sent Events streaming (standard Anthropic event sequence: message_start / content_block_start / content_block_delta / message_delta / message_stop)false: Returns the complete response all at once (default)
false
Controls deep thinking
Note:
- Every model in the GLM series is a reasoning model, and thinking is on by default when this field is omitted
- When it is on, the response
contentarray contains atype="thinking"reasoning block (billed as output tokens;signaturemay be an empty string) - Only the binary
typeswitch takes effect: thinking budget or level parameters such asbudget_tokensandefforthave no effect (they are ignored)
Whether it can be turned off depends on the model:
glm-5.2: sending{"type":"disabled"}turns thinking off and cuts output tokens noticeablyglm-5.3/glm-5.3-flash: always think, cannot be turned off. Sendingdisabledreturns an error
The consequence: the glm-5.3 series cannot reduce thinking overhead on this endpoint. It cannot be turned off (disabled errors),
and it cannot be turned down either (budget_tokens and effort both have no effect, and the top-level reasoning_effort is an OpenAI-protocol field that this endpoint ignores).
Thinking content is billed as output tokens, so on this endpoint that cost is unavoidable.
To control thinking cost, switch to the Chat Completions API —
there, reasoning_effort has three levels that genuinely take effect: low / high / max. glm-5.2 is not subject to this limit; it can turn thinking off directly on this endpoint.
Migrating from glm-5.2: if your code hard-codes thinking.type=disabled, you must remove that field before switching to glm-5.3, otherwise the request fails outright.
And if you relied on turning thinking off to control cost, this endpoint offers no equivalent — plan to move to the Chat Completions API as part of the switch.
The list of tool definitions
Notes:
- Follows the Anthropic tool definition spec
input_schemauses a JSON Schema object- The model returns standard
tool_useblocks withstop_reason=tool_use
Tool selection strategy
Request metadata
Response
Message object
Anthropic-style message response
The message's unique ID (format: msg_<uuid>)
Response object type
message assistant Model actually used
"glm-5.3"
The list of response content blocks
Possible block types:
thinking: the reasoning process (when thinking is enabled, which is the default)text: the final answer texttool_use: a tool call initiated by the model
Stop reason
end_turn: natural completion (also returned when stop_sequences is hit)max_tokens: reached the max_tokens limittool_use: the model triggered a tool call
end_turn, max_tokens, tool_use Token usage statistics (Anthropic specification)