Skip to main content
POST
BaseURL: The default BaseURL is 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.
Whether thinking can be turned off varies by model: only 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.
Image input is supported only by 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

Authorization
string
header
required

##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

application/json
model
enum<string>
default:glm-5.3
required

Model to call:

Available options:
glm-5.3,
glm-5.3-flash,
glm-5.2
Example:

"glm-5.3"

messages
object[]
required

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.

Minimum array length: 1
max_tokens
integer

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 1024 is 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
Required range: 1 <= x <= 131072
Example:

1024

system

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 system field (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 messages rather than piling everything into system
Example:

"You are a helpful assistant."

temperature
number

Sampling temperature

Notes:

  • Higher values make output more varied, lower values more deterministic
  • Recommended range [0, 1]
Required range: 0 <= x <= 1
Example:

1

top_p
number

Nucleus sampling threshold

Notes:

  • Range [0, 1]
  • It is recommended not to adjust temperature and top_p at the same time
Required range: 0 <= x <= 1
Example:

0.9

top_k
integer

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
Required range: x >= 0
Example:

10

stop_sequences
string[]

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_reason as end_turn (rather than the Anthropic-standard stop_sequence), and the response does not include a stop_sequence field. If your client relies on stop_reason=="stop_sequence" to detect a hit, special handling is required
Example:
stream
boolean
default:false

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)
Example:

false

thinking
object

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 content array contains a type="thinking" reasoning block (billed as output tokens; signature may be an empty string)
  • Only the binary type switch takes effect: thinking budget or level parameters such as budget_tokens and effort have 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 noticeably
  • glm-5.3 / glm-5.3-flash: always think, cannot be turned off. Sending disabled returns 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.

tools
object[]

The list of tool definitions

Notes:

  • Follows the Anthropic tool definition spec
  • input_schema uses a JSON Schema object
  • The model returns standard tool_use blocks with stop_reason=tool_use
tool_choice
object

Tool selection strategy

metadata
object

Request metadata

Response

Message object

Anthropic-style message response

id
string

The message's unique ID (format: msg_<uuid>)

type
enum<string>

Response object type

Available options:
message
role
enum<string>
Available options:
assistant
model
string

Model actually used

Example:

"glm-5.3"

content
object[]

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 text
  • tool_use: a tool call initiated by the model
stop_reason
enum<string>

Stop reason

  • end_turn: natural completion (also returned when stop_sequences is hit)
  • max_tokens: reached the max_tokens limit
  • tool_use: the model triggered a tool call
Available options:
end_turn,
max_tokens,
tool_use
usage
object

Token usage statistics (Anthropic specification)