Text
GLM-5.3 API 参考
GLM-5.3 请求字段、推理、工具、流式输出、用量,以及完整的 Chat、Responses 和 Messages 示例。
GLM-5.3 接受文本,返回文本或工具调用。它始终推理,支持 low、high 和 max 强度,输出上限为 131,072 个 token。Default 档使用 glm-5.3。默认分组为 glm;glm-5.3:glm 仍表示显式选择同一分组。其他分组使用各自的模型后缀。
基础 URL:https://api.seedrouter.ai。使用 Authorization: Bearer $SEEDROUTER_API_KEY 认证。凭证请保存在服务端。Messages 也接受兼容的 x-api-key 请求头。
本参考遵循 Z.ai Chat 契约、厂商的 Responses schema 及 Messages 兼容指南。模型专属限制来自 GLM-5.3 指南。文档一致不代表所有线上行为均已验证。 2026 年 10 月 29 日的检查完成了三种格式的文本与流式请求、Chat 函数调用、JSON 对象输出及已保存响应的续接。缓存命中、显式缓存有效期和每项兼容控制尚未确立。下文区分 Messages 参考字段与厂商明确记录的 GLM 字段。
OpenAPI 规范 · Markdown 参考 · 模型与 Playground · 价格指南
快速开始
每个示例发送一次 Chat Completions 请求。max_tokens: 2048 是示例预算,并非默认值。推理与可见答案共享该预算;将答案视为完整结果前,请检查 finish_reason。
curl https://api.seedrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}'import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["SEEDROUTER_API_KEY"], base_url="https://api.seedrouter.ai/v1")
response = client.chat.completions.create(
model="glm-5.3",
messages=[{"role": "user", "content": "Explain an idempotency key with one concrete example."}],
max_tokens=2048,
extra_body={"reasoning_effort": "low"},
)
print(response.choices[0].message.content)
print(response.usage)import OpenAI from 'openai';
const client = new OpenAI({apiKey: process.env.SEEDROUTER_API_KEY, baseURL: 'https://api.seedrouter.ai/v1'});
const response = await client.chat.completions.create({
model: 'glm-5.3',
messages: [{role: 'user', content: 'Explain an idempotency key with one concrete example.'}],
reasoning_effort: 'low',
max_tokens: 2048,
});
console.log(response.choices[0].message.content);
console.log(response.usage);package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
body := []byte(`{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}`)
req, err := http.NewRequest("POST", "https://api.seedrouter.ai/v1/chat/completions", bytes.NewReader(body))
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + os.Getenv("SEEDROUTER_API_KEY"))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 3 * time.Minute}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
data, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
if res.StatusCode != http.StatusOK { panic(fmt.Sprintf("HTTP %d: %s", res.StatusCode, data)) }
fmt.Println(string(data))
}Chat Completions
POST /v1/chat/completions 接受 16 个顶层字段。除非明确说明,字段均不可为 null。可选字段可省略;不要用 null 代替省略。
| 字段 | 类型 | 必填 | 默认值与约束 |
|---|---|---|---|
model | 字符串 | 是 | glm-5.3 (Default) |
messages | 数组 | 是 | 至少一条消息;必须包含 user 或 tool 消息 |
do_sample | 布尔值 | 否 | true;false 时 temperature 和 top_p 不生效 |
stream | 布尔值 | 否 | false |
thinking | 对象 | 否 | type: enabled; clear_thinking: true |
reasoning_effort | 字符串 | 否 | low, high, max; 默认 max |
temperature | 数值 | 否 | 0–1 含边界; 默认 1 |
top_p | 数值 | 否 | 0.01–1 含边界; 默认 0.95 |
max_tokens | 整数 | 否 | 1–131072; Chat 未公布默认值 |
tool_stream | 布尔值 | 否 | false; true 要求 stream: true |
tools | 数组 | 否 | function、retrieval 或 web_search;最多 128 项 |
tool_choice | 字符串 | 否 | auto 仅 |
stop | 字符串数组 | 否 | 官方 schema 最多四个字符串;实测接受了四个,但未测试停止匹配 |
response_format | 对象 | 否 | 必需的 type: text 或 json_object; 默认 text |
request_id | 字符串 | 否 | 6–64 个字符;唯一的调用方请求标识符 |
user_id | 字符串 | 否 | 6–128 个字符;避免个人信息 |
system 和 user 消息要求字符串 content。assistant 消息可包含字符串 content、reasoning_content 和 tool_calls。tool 消息要求 content 和 tool_call_id。使用 thinking.clear_thinking: false 时,请原样保留历史推理,包括助手调用和工具结果的顺序。思考不可关闭。
函数工具使用 {type:"function", function:{name, description, parameters}}。名称由 1–64 个 ASCII 字母、数字、下划线或连字符组成。机器 schema 要求 description 和 parameters;文字说明提到无参数函数可省略。在这一冲突解决前,请使用完整结构。parameters 是函数的 JSON Schema,不会被解释为消息内容。
检索工具使用 {type:"retrieval", retrieval:{knowledge_id, prompt_template?}}。知识库 ID 属于提供请求服务的账号;声明工具不会创建知识库。
网页搜索工具使用 {type:"web_search", web_search:{search_engine:"search_pro_jina"}}。可选字段包括 enable、search_query、count(1–50)、search_domain_filter、search_recency_filter(oneDay、oneWeek、oneMonth、oneYear、noLimit)、content_size(medium、high)、result_sequence(before、after)、search_result、require_search 和 search_prompt。确切类型见 OpenAPI。特定账号的搜索与检索可用性需实测验证。
JSON 对象模式生成 JSON,不会强制执行所提供的 JSON Schema。请在提示词中说明期望字段,并在应用中验证结果。
Responses
POST /v1/responses 接受 15 个顶层创建字段。这遵循厂商的 Responses schema,并针对 GLM-5.3 限定;不同服务上的确切行为仍需验证。
curl https://api.seedrouter.ai/v1/responses \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model":"glm-5.3","input":[{"type":"message","role":"user","content":"Give a concise example of a safe retry."}],"reasoning":{"effort":"low"},"max_output_tokens":2048,"store":false}'| 字段 | 类型 | 必填 | 默认值与约束 |
|---|---|---|---|
model | 字符串 | 是 | glm-5.3 |
input | 字符串或数组 | 是 | 原生输入项,见下文 |
instructions | 字符串 | 否 | 系统指令 |
stream | 布尔值 | 否 | false |
temperature | 数值 | 否 | 0–1, 最多两位小数; 默认 1 |
top_p | 数值 | 否 | 0.01–1, 最多两位小数; 默认 0.95 |
max_output_tokens | 整数 | 否 | 1–131072; 默认 65536, 包含推理 |
stop | 字符串数组 | 否 | 本协议未声明数量限制 |
tools | 数组 | 否 | function、namespace、custom 或 web_search |
tool_choice | 字符串 | 否 | none 或 auto |
reasoning | 对象 | 否 | effort: low, high, max; 默认 max |
text | 对象 | 否 | format.type: text 或 json_object |
prompt_cache_key | 字符串 | 否 | 缓存路由键;文档无长度限制 |
previous_response_id | 字符串 | 否 | 引用此前保存的响应 |
store | 布尔值 | 否 | false; 是否保存本次响应 |
消息输入项要求 type: "message"、角色(user、system、assistant、developer)及内容。内容可为字符串、单个文本块或文本块数组。使用 input_text 或助手的 output_text,并提供字符串 text。通用图片/文件 schema 不赋予此纯文本模型视觉能力。
函数调用输入项要求 type: "function_call"、name、call_id 和 JSON 字符串 arguments;namespace 可选。结果要求 type: "function_call_output"、call_id 和字符串 output。推理项使用 type: "reasoning" 和单个 content: {type:"reasoning_text", text:"..."} 对象。请原样保留,不要转换为数组。
函数工具要求 type: "function" 和 name,description 和 parameters 可选。命名空间工具要求 type: "namespace" 和 name,可包含函数 tools。自定义工具要求 type: "custom" 和 name。网页搜索工具要求 type: "web_search"。不要将 Chat 的函数必填字段照搬到此格式。
引用的上一响应必须已经保存。保存当前响应是独立选择;previous_response_id 不会强制当前 store: true。厂商保留期限为七天。一次实测成功保存响应,并在当前 store: false 时通过其 ID 续接;这不代表所有已保存响应操作均已验证。
已保存响应的操作
store: true 成功后,请原样保存返回的响应 ID。以下认证操作使用创建响应时的同一账号:
GET /v1/responses/{response_id}读取已保存的响应。GET /v1/responses/{response_id}/input_items列出输入项。可选查询字段:order(ascordesc, 默认desc),limit(整数 1–100,默认 20) andafter(上一页的 last_id)。DELETE /v1/responses/{response_id}删除已保存的响应。
后续创建请求可将已保存 ID 用作 previous_response_id。访问要求原用户当前仍有模型访问权限。最多保留七天;已过期或已删除的响应无法续接。读取、删除和续接均保留原账号绑定。文档未提供取消端点。这些操作有本地契约测试覆盖。10 月 29 日实测确认了保存与续接;读取和输入项列表返回 404,删除未测试。确认可用性前,不要依赖读取、列表或删除操作。
Messages 兼容性
POST /v1/messages 使用兼容 Anthropic 的请求结构。请包含 anthropic-version: 2023-06-01。厂商直接展示了 model、messages、max_tokens 和 stream,但未发布完整 GLM Messages schema,并提醒其与 Claude 存在差异。其余控制属于兼容参考字段,不是逐项实测验证的 GLM 能力。
curl https://api.seedrouter.ai/v1/messages \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-H 'anthropic-version: 2023-06-01' \
-d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain a safe retry in two sentences."}],"max_tokens":2048}'| 字段 | 结构与校验 | 依据 |
|---|---|---|
model | 必填 字符串 glm-5.3 | GLM 示例 |
messages | 必填非空 user/assistant 数组;字符串或原生文本/工具块 | GLM 文本示例;块结构使用兼容参考 |
max_tokens | 必填 整数 1–131072 | GLM 示例及模型输出上限 |
stream | 布尔值;默认 false | GLM 示例 |
system | 字符串或文本块数组 | 兼容参考 |
temperature | 数值 0–1 | 兼容参考;映射未验证 |
top_p | 数值 0.01–1 | 兼容参考;映射未验证 |
top_k | 非负整数 | 兼容参考;映射未验证 |
stop_sequences | 字符串数组 | 兼容参考 |
tools | 客户端工具:name、input_schema,description 可选 | 兼容参考 |
tool_choice | 对象 type 为 auto、none、any 或 tool;指定工具要求 name | 兼容参考 |
thinking | enabled 与 budget_tokens,或 adaptive;不能关闭思考 | 兼容参考与 GLM 始终开启规则 |
output_config | 包含 effort low、high 或 max 的对象 | 兼容字段名;映射未验证 |
metadata | 含可选 user_id 的对象 | 兼容参考 |
cache_control | 临时标记,可选 ttl 5m 或 1h | 仅协议参考;GLM 显式 TTL 行为未验证 |
enabled 思考的兼容预算至少为 1024,且小于 max_tokens。文本块要求 text;思考历史要求 thinking 和 signature;隐藏思考要求 data。工具使用块要求 id、name 和 input;工具结果块要求 tool_use_id。不接受图片、音频或视频块。显式缓存标记不能证明缓存命中、有效期或独立费率。该模型文档描述的上下文缓存是自动的。
输出、流式传输与用量
Chat 返回 id、created、model、choices 和 usage,可选 request_id 和 web_search。读取 choices[].message.content、reasoning_content 和 tool_calls。工具调用响应可能没有答案文本。SSE 发送推理、文本及工具参数增量,最后为 [DONE]。按调用索引拼接参数片段。官方 GLM Chat 请求不包含 stream_options 字段。
Responses 返回原生 output 联合类型:消息、推理和工具调用。SSE 包含 response.created、response.in_progress、输出项和内容部分事件、文本/推理/函数参数增量、搜索进度,以及终态 response.completed、response.incomplete 或 response.failed。不要求 [DONE] 标记。请保留索引和序号。
Messages 返回原生消息结构,包含内容块、stop_reason 和 usage。事件名包括 message_start、content_block_start/delta/stop、message_delta 和 message_stop。请将思考签名和工具 ID 作为不透明历史数据保留。
| 格式 | 总输入 | 缓存输入 | 输出 |
|---|---|---|---|
| Chat | prompt_tokens | prompt_tokens_details.cached_tokens | completion_tokens |
| Responses | input_tokens | input_tokens_details.cached_tokens | output_tokens |
| Messages | input_tokens 加 cache_read_input_tokens 及任何 cache_creation_input_tokens | cache_read_input_tokens | output_tokens |
推理属于输出的一部分,不另外计费。Chat/Responses 的缓存输入属于总输入的一部分。应用普通输入费率前,请减去单独报告的缓存部分。公开响应提供 token 用量,不提供金额费用。当前价格 来自实时计费配置;失败的请求不收费。
校验与错误
非法类型、关闭思考、不支持的强度、超额输出预算及媒体输入会校验失败。Chat 的 tool_stream 要求 stream。不支持的顶层字段会被省略,不会转发。请求需要凭证;余额不足时不能发起付费请求。错误使用公开错误结构(Messages 使用其原生错误格式)。不要将中断的流视为完整答案,也不要自动重发结果不确定的请求。
Playground 为所选格式提供相同的准入字段。空的可选值会被省略;显式 false 和零会保留。切换格式会开启新对话。用量估算需要响应报告的用量及当前费率。
