Claude Opus 5.5 已在 SeedRouter 上线

Text

GLM-5.3 API 参考

View Markdown

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 (asc or desc, 默认 desc), limit (整数 1–100,默认 20) and after (上一页的 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.3GLM 示例
messages必填非空 user/assistant 数组;字符串或原生文本/工具块GLM 文本示例;块结构使用兼容参考
max_tokens必填 整数 1–131072GLM 示例及模型输出上限
stream布尔值;默认 falseGLM 示例
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兼容参考
thinkingenabled 与 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 作为不透明历史数据保留。

格式总输入缓存输入输出
Chatprompt_tokensprompt_tokens_details.cached_tokenscompletion_tokens
Responsesinput_tokensinput_tokens_details.cached_tokensoutput_tokens
Messagesinput_tokens 加 cache_read_input_tokens 及任何 cache_creation_input_tokenscache_read_input_tokensoutput_tokens

推理属于输出的一部分,不另外计费。Chat/Responses 的缓存输入属于总输入的一部分。应用普通输入费率前,请减去单独报告的缓存部分。公开响应提供 token 用量,不提供金额费用。当前价格 来自实时计费配置;失败的请求不收费。

校验与错误

非法类型、关闭思考、不支持的强度、超额输出预算及媒体输入会校验失败。Chat 的 tool_stream 要求 stream。不支持的顶层字段会被省略,不会转发。请求需要凭证;余额不足时不能发起付费请求。错误使用公开错误结构(Messages 使用其原生错误格式)。不要将中断的流视为完整答案,也不要自动重发结果不确定的请求。

Playground 为所选格式提供相同的准入字段。空的可选值会被省略;显式 false 和零会保留。切换格式会开启新对话。用量估算需要响应报告的用量及当前费率。