curl --request POST \
--url https://direct.evolink.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "glm-5.3",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
'{
"id": "msg_0842a705-9d0b-4eaa-b12d-09a4106326c5",
"type": "message",
"role": "assistant",
"model": "glm-5.3",
"content": [
{
"type": "thinking",
"thinking": "The user asked to greet them with one word, so answering \"Hi\" will do.",
"signature": ""
},
{
"type": "text",
"text": "Hi."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 18,
"output_tokens": 101,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"prompt_tokens_details": {
"cached_tokens": 0
}
}
}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
curl --request POST \
--url https://direct.evolink.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "glm-5.3",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
'{
"id": "msg_0842a705-9d0b-4eaa-b12d-09a4106326c5",
"type": "message",
"role": "assistant",
"model": "glm-5.3",
"content": [
{
"type": "thinking",
"thinking": "The user asked to greet them with one word, so answering \"Hi\" will do.",
"signature": ""
},
{
"type": "text",
"text": "Hi."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 18,
"output_tokens": 101,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"prompt_tokens_details": {
"cached_tokens": 0
}
}
}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.glm-5.3-flash, and sending images to the other models does not raise an error. When image content blocks go to glm-5.3 or glm-5.2, the request returns 200 as usual, but the model cannot read the image and answers from the text alone — a plausible-looking reply that has nothing to do with the image, and one that 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.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:
Authorization: Bearer YOUR_API_KEY
Note: EvoLink uses Bearer Token authentication uniformly for /v1/messages.
Body
Model to call:
| Model ID | Positioning | Thinking can be turned off | Image input |
|---|---|---|---|
glm-5.3 | Flagship model, with across-the-board gains on complex software engineering and agent tasks; 1M context | Cannot be turned off | Not supported |
glm-5.3-flash | Lightweight multimodal model, extremely low cost with native vision; 1M context | Cannot be turned off | Supported |
glm-5.2 | Previous-generation flagship, complex reasoning and very long context; 1M context | Can be turned off (thinking.type=disabled) | Not supported |
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.
1Show child attributes
Show child attributes
Upper 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
["\n\n"]
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.
Show child attributes
Show child attributes
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
Show child attributes
Show child attributes
Tool selection strategy
Show child attributes
Show child attributes
Request metadata
Show child attributes
Show child attributes
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
Show child attributes
Show child attributes
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)
Show child attributes
Show child attributes