VibeAPIVibeAPI 开发者文档

Claude Messages

全部 18 个请求参数、内容块类型与流式事件。Claude 家族的原生入口

POST /v1/messages

Claude 系模型的原生协议。Claude 模型请优先用这个端点——它是唯一能完整拿到 thinking 块的路径。从 Chat Completions 调 Claude 也能通,但那是网关做的 协议转换,thinking 会在转换中丢失,工具调用只保核心字段。

网关上还有一批国产模型也走这个端点接入(glm、kimi、qwen、deepseek 等), 具体见模型与入口

基本调用

建议用官方 SDK 而不是自己拼 HTTP——SSE 解析、工具参数分片拼接、超时与重试都由它处理,能避开大部分常见问题。安装与环境变量配置见快速开始

curl -N -X POST "https://www.vibeapi.cn/v1/messages" \
  -H "Authorization: Bearer $API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5",
    "max_tokens": 1024,
    "system": "你是一个简洁的助手。",
    "messages": [
      {"role": "user", "content": "用一句话解释什么是幂等。"}
    ],
    "stream": true
  }'
import anthropic

client = anthropic.Anthropic(
    base_url="https://www.vibeapi.cn",
    api_key="YOUR_API_KEY",
)

with client.messages.stream(
    model="claude-opus-5",
    max_tokens=1024,
    system="你是一个简洁的助手。",
    messages=[{"role": "user", "content": "用一句话解释什么是幂等。"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://www.vibeapi.cn",
  apiKey: "YOUR_API_KEY",
});

const stream = await client.messages.create({
  model: "claude-opus-5",
  max_tokens: 1024,
  system: "你是一个简洁的助手。",
  messages: [{ role: "user", content: "用一句话解释什么是幂等。" }],
  stream: true,
});

for await (const event of stream) {
  if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
    process.stdout.write(event.delta.text);
  }
}

认证

Authorization: Bearer <API_KEY>
anthropic-version: 2023-06-01
Content-Type: application/json

base_urlhttps://www.vibeapi.cn——注意 Messages 的完整路径是 /v1/messages, Anthropic 官方 SDK 填 base URL 时通常不带 /v1

流式要求

请求超时上限 120 秒。非流式请求在生成完成前没有数据下行,单次生成超过这个时间会被 中断。短输出不受影响;推理型号要等整段思考结束才返回首字节,容易触发上限。

官方 SDK 也有同类保护:max_tokens 给得很大时会要求走流式,以避免 HTTP 超时。 建议默认开启流式,需要完整文本时在客户端拼接 text_delta

与 Chat 的差异

以下三处差异较大:

max_tokens 是必填的,不像 Chat 可以省略。忘了带直接 400。

系统提示是顶层的 system 字段,不是 messages 里的一个角色。messages 只放 userassistant,而且需要交替出现。

响应是内容块数组,不是一个字符串。 content 里每项有自己的 type——textthinkingtool_use 各是一种块。取正文要过滤 type == "text"

Chat CompletionsMessages
系统提示messages 里的 system 角色顶层 system 字段
输出上限max_completion_tokens,可省略max_tokens必填
产出位置choices[0].message.content 字符串content 内容块数组
结束原因finish_reasonstop_reason
停止序列stopstop_sequences

请求参数

参数名、类型与语义对齐 Anthropic Messages API。每个参数先给官方定义,再以「网关」标注本网关的实测行为; 标了「分组敏感」的参数在 auto 类 key 上会被静默忽略(返回 200,不报错),详见分组差异

必填

modelstring必填

为提示词补全的模型。可用模型见模型与入口

max_tokensinteger必填

停止生成前允许产出的最大 token 数。模型可能在达到上限之前就停止,该参数只规定绝对上限;不同模型的最大取值不同。 设为 0 可只预热提示缓存而不生成。 思考模型的思考预算计入这个上限。

网关 · 分组敏感,影响费用。 官方满血 key 精确执行(要 16 就返回 16,stop_reasonmax_tokens); auto key 不执行这个上限,要 16 实际产出 145~159,stop_reason 仍为 end_turn。用 auto 时以 usage.output_tokens 对账。

messagesarray必填

输入消息。模型按 userassistant 轮次交替工作:请求里给出此前的轮次,模型生成下一条 Message; 连续的同角色轮次会合并成一轮。每条消息是 {role, content}content 可以是字符串,也可以是内容块数组(文本、图片、文档、工具结果混排)。 若最后一条是 assistant,响应会直接从它的内容接着往下写,可用来约束回复的开头。

系统提示与输出

systemstring | array

系统提示,用于给模型提供上下文与指令,例如设定目标或角色。给数组时每项是一个 text 块,可逐块附加 cache_control

streamboolean默认 false

是否以 server-sent events 增量返回响应。

网关。 单次请求上限 120 秒,思考模型建议设为 true,见流式要求

stop_sequencesarray

自定义停止序列。模型正常结束时 stop_reasonend_turn;命中自定义序列时 stop_reasonstop_sequencestop_sequence 字段回显命中的那一条。

网关 · 分组敏感。 官方满血 key 生效;auto key 忽略它,输出照常跑完,stop_reason 仍是 end_turn

output_configobject

输出配置。effortlow / medium / high / xhigh / max,控制模型投入的算力;format{"type": "json_schema", "schema": {...}} 时约束输出为该结构,见结构化输出

网关 · 分组敏感。 官方满血 key 返回纯 JSON;auto key 退化成普通文本,返回带 ``` 包裹的代码块,直接 json.loads 会失败。 schema 里 type: object 须显式带 additionalProperties,否则 400——该校验只在官方满血 key 上执行。

思考

thinkingobject

扩展思考配置。开启后响应里包含 thinking 内容块,展示模型给出最终答案前的思考过程。 三种写法:{"type": "adaptive"} 由模型自行决定思考深度;{"type": "enabled", "budget_tokens": N} 指定思考预算,须 ≥ 1024 且小于 max_tokens{"type": "disabled"} 关闭。 display 可设 omitted,思考内容不返回但保留签名以维持多轮连续性。

不同代次的模型接受的写法不同:Claude 4.7 及以后只接受 adaptive,显式 enabled + budget_tokens 会被拒绝;旧型号相反。 跨型号的代码不要写死一种。

网关。 对新型号传 enabled 会被改写为 adaptive 并删掉 budget_tokens,请求成功但预算不生效,见参数改写规则auto key 上 claude-sonnet-5 不返回 thinking 块,见分组差异

工具调用

toolsarray

模型可以使用的工具定义。每个工具包含 namedescription 和描述参数的 input_schema;模型决定调用时返回 tool_use 内容块, 你执行后以 tool_result 内容块回传。也可以放服务端执行的内置工具(如 web_search_20250305)。

网关 · 分组敏感。 自定义工具在两类 key 上都完整;服务端内置工具在 auto key 上不保证,见分组差异

tool_choiceobject

模型如何使用提供的工具:{"type": "auto"} 自行决定;{"type": "any"} 必须用某个工具;{"type": "tool", "name": "..."} 指定工具;{"type": "none"} 不用。 auto / any 可加 disable_parallel_tool_use: true,让模型最多只发起一次工具调用。 注意与 Chat Completions 不同,这里是对象不是字符串。

缓存

cache_controlobject

提示缓存标记。顶层 cache_control 自动作用于请求里最后一个可缓存块;也可以在 systemmessagestools 的内容块上逐个设置 {"type": "ephemeral"}。 把稳定不变的前缀(长系统提示、工具定义、文档)标为可缓存,后续命中时 usage 里出现 cache_read_input_tokens

网关 · 分组敏感。 auto key 上不生效,usage 里不会出现缓存字段;官方满血 key 正常。

采样

三个采样参数官方已标记为弃用:晚于 Claude Opus 4.6 发布的模型只接受 temperature: 1.0top_p ≥ 0.99,不接受 top_k,其他取值返回 400。

temperaturenumber默认 1.0

注入响应的随机程度,0.01.0。分析类、选择题类任务取值靠近 0.0,创作类靠近 1.0;即使为 0.0 结果也不完全确定。

网关。 新型号上不等于 1.0 的值会被删除,见参数改写规则

top_pnumber

核采样:按概率降序累计,达到 top_p 即截断。仅建议高级用法使用,与 temperature 通常只调其一。

网关。 新型号上小于 0.99 的值会被删除。

top_kinteger

每个 token 只从概率最高的 K 个候选里采样,用于去掉低概率的长尾。仅建议高级用法使用;Chat Completions 没有这个参数。

网关。 claude-fable-5 上会被删除。

标识与其他

metadataobject

请求元数据。user_id 为终端用户的外部标识,应是 uuid、哈希等不透明值,不要放姓名、邮箱、电话。

service_tierstring

auto / standard_only,选择优先容量还是标准容量。

网关。 由网关自行路由,该字段无意义。

containerobject

代码执行容器的复用标识。

网关。 不提供代码执行工具,无效。

inference_geostring

推理处理的地理区域。

网关。 不保证生效。

响应字段

{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "claude-opus-5",
  "content": [
    { "type": "text", "text": "同一个操作执行多次和执行一次效果相同。" }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": { "input_tokens": 24, "output_tokens": 17 }
}
contentarray

内容块数组,类型是混排的。开了思考的模型会在前面多出 {"type":"thinking"} 块, 用工具时会有 {"type":"tool_use"} 块。直接取 content[0] 在这些情况下会拿到思考内容 或工具调用,不是正文——务必按 type 过滤。

stop_reasonstring

end_turn 自然结束 · max_tokens 撞到输出上限 · stop_sequence 命中停止序列 · tool_use 等待工具结果。

stop_sequencestring

命中的是哪一条停止序列,未命中为 null

usageobject

input_tokens / output_tokens。用了提示缓存时还会有缓存读写的 token 统计, 对账时要一并看。

流式事件

整体以 message_start 开始、message_stop 结束;中间每个内容块有自己的 content_block_start → 若干 content_block_deltacontent_block_stop, 块之间用 index 区分。

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"同一个"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"先确认定义…"}}

增量在 delta 里,delta.type 决定它属于哪种块:

text_deltadelta 类型

正文增量。绝大多数情况只需要认这一种。

thinking_deltadelta 类型

思考增量。

input_json_deltadelta 类型

工具调用参数的增量 JSON 片段,需自己累积拼接成完整 JSON 再解析。

message_delta事件类型

顶层字段的变更,stop_reason 和最终的 usage 从这里来。

用工具时事件之间可能出现明显停顿,因为参数是攒够一组键值才发出来的,这是正常现象。

参数改写规则

这几个型号只接受自适应思考,显式思考预算在官方那里会直接 400。与其把这个错误丢给你, 网关在转发前将这类参数改写为等价的合法形式,请求因此成功,但原始取值不生效。 下表列出改写发生的条件。

触发条件网关的动作
thinking.typeenabled改写为 adaptive,并删除 thinking.budget_tokens
temperature 不等于 1.0删除该字段(1.0 保留)
top_p 小于 0.99删除该字段(≥ 0.99 保留)
claude-fable-5:总是删除 top_k
claude-fable-5thinking.typedisabled删除整个 thinking
claude-opus-5thinking.typedisabledoutput_config.effortxhigh / max改写 thinking.typeadaptive

适用型号:claude-opus-5claude-sonnet-5claude-opus-4-8claude-opus-4-7claude-fable-5

最要紧的一条是 thinking 你传 {"type": "enabled", "budget_tokens": 4096} 会拿到 200,但 budget_tokens 已经被丢掉了,思考长度由模型自己决定。要控制思考成本, 用 max_tokens 留出的空间去间接约束,别依赖 budget_tokens

这几个型号只接受 temperature = 1.0top_p >= 0.99(Anthropic 对晚于 Opus 4.6 发布的模型的兼容边界),其他取值上游会直接 400。网关把不合规的值删掉,请求因此成功—— 但你设置的自定义 temperature / top_p 在这些型号上不会生效claude-opus-4-6claude-sonnet-4-6claude-haiku-4-5 等旧型号不套用此规则,采样参数原样透传。

分组差异

key 分两类:auto(可以调用全部模型)和 Claude 官方满血版。Claude 系模型 在这两类上有实测差异,全部返回 200,没有任何报错或警告

能力autoClaude 官方满血版
提示缓存 cache_control不可用usage 里不返回缓存字段返回 cache_creation_input_tokens / cache_read_input_tokens
服务端执行的内置工具不保证,响应形状可能不符合官方约定正常
thinkingclaude-sonnet-5不返回 thinking 块,显式要求也不返回返回
thinkingclaude-opus-5返回,但输出(含思考)明显更短完整
max_tokens 上限不执行,要求 16 实际产出 145~159精确执行,stop_reasonmax_tokens
stop_sequences被忽略,输出照常跑完生效,stop_reasonstop_sequence
output_config 结构化输出退化成 markdown 代码块返回纯 JSON
可用模型不含 claude-fable-5 / claude-fable-5-1

以上差异在 auto 上均表现为静默忽略:请求返回 200,响应内容正常,设置的约束不生效。

常规对话与代码生成用 auto 即可。只要你的代码依赖参数被真正执行——限制输出长度、 停止序列、结构化输出、提示缓存、服务端工具、claude-sonnet-5 的 thinking——就必须换 官方满血 key,改参数没有用。

如何验证生效

不要用 HTTP 状态码判断,上面两类情况都返回 200。看响应体:

  • 思考是否生效 —— content 数组里有没有 {"type": "thinking"} 块。
  • 缓存是否生效 —— usage 里有没有 cache_creation_input_tokens / cache_read_input_tokens。没有这两个字段就是没生效,不管你怎么标 cache_control
  • 参数有没有被改写 —— 把可疑参数换一个明显不同的值再发一次,看输出是否真的变化。 两次没差异,多半是它没被送到模型那里。

国产模型兼容度

网关上的国产模型(glm / kimi / qwen / deepseek / MiniMax)两套协议都能调通, 工具调用也都可用,但对 max_tokens、停止序列、结构化输出的遵循程度逐个模型不同, 同一模型在 Messages 协议和另一套协议上还可能表现不同。逐项实测结果见 模型与入口

其中 deepseek-v4-prokimi-k3 不执行 max_tokens,且仍将结束原因报为已截断。 使用这两个模型时,以 usage 中的实际 token 数对账。

真实响应示例

下面是从生产网关真实抓取、脱敏后的响应。注意 content 是内容块数组:

请求 POST /v1/messages

{  "model": "claude-opus-5",  "max_tokens": 900,  "messages": [    {      "role": "user",      "content": "9.11 和 9.9 哪个大?简答"    }  ]}

响应

{  "model": "claude-opus-5",  "id": "msg_XXXXXXXX",  "type": "message",  "role": "assistant",  "content": [    {      "type": "thinking",      "thinking": "",      "signature": "…(签名已省略)"    },    {      "type": "text",      "text": "**9.9 更大。**\n\n9.11 的小数部分是 0.11,9.9 的小数部分是 0.90,0.90 > 0.11,所以 9.9 > 9.11。"    }  ],  "stop_reason": "end_turn",  "stop_sequence": null,  "stop_details": null,  "usage": {    "input_tokens": 47,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 0,    "cache_creation": {      "ephemeral_5m_input_tokens": 0,      "ephemeral_1h_input_tokens": 0    },    "iterations": [      {        "input_tokens": 47,        "output_tokens": 114,        "cache_read_input_tokens": 0,        "cache_creation_input_tokens": 0,        "cache_creation": {          "ephemeral_5m_input_tokens": 0,          "ephemeral_1h_input_tokens": 0        },        "type": "message"      }    ],    "output_tokens": 114,    "output_tokens_details": {      "thinking_tokens": 49    }  },  "context_management": {    "applied_edits": []  }}

真实调用抓取并脱敏 · 2026-09-09

模型决定调用工具时,会多出一个 tool_use 块:

请求 POST /v1/messages

{  "model": "claude-opus-5",  "max_tokens": 300,  "messages": [    {      "role": "user",      "content": "北京天气怎么样?用工具查"    }  ],  "tools": [    {      "name": "get_weather",      "description": "查询天气",      "input_schema": {        "type": "object",        "properties": {          "city": {            "type": "string"          }        },        "required": [          "city"        ]      }    }  ]}

响应

{  "model": "claude-opus-5",  "id": "msg_XXXXXXXX",  "type": "message",  "role": "assistant",  "content": [    {      "type": "tool_use",      "id": "toolu_XXXXXXXX",      "name": "get_weather",      "input": {        "city": "北京"      },      "caller": {        "type": "direct"      }    }  ],  "stop_reason": "tool_use",  "stop_sequence": null,  "stop_details": null,  "usage": {    "input_tokens": 395,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 0,    "cache_creation": {      "ephemeral_5m_input_tokens": 0,      "ephemeral_1h_input_tokens": 0    },    "iterations": [      {        "input_tokens": 395,        "output_tokens": 49,        "cache_read_input_tokens": 0,        "cache_creation_input_tokens": 0,        "cache_creation": {          "ephemeral_5m_input_tokens": 0,          "ephemeral_1h_input_tokens": 0        },        "type": "message"      }    ],    "output_tokens": 49,    "output_tokens_details": {      "thinking_tokens": 0    }  },  "context_management": {    "applied_edits": []  }}

真实调用抓取并脱敏 · 2026-09-09

流式的事件序列(中间事件已省略):

请求 POST /v1/messages

{  "model": "claude-opus-5",  "max_tokens": 200,  "stream": true,  "messages": [    {      "role": "user",      "content": "用一句话解释幂等"    }  ]}

响应

event: message_startdata: {"type": "message_start", "message": {"model": "claude-opus-5", "id": "msg_XXXXXXXX", "type": "message", "role": "assistant", "content": [], "stop_reason": null, "stop_sequence": null, "stop_details": null, "usage": {"input_tokens": 39, "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0, "cache_creation": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0}, "output_tokens": 8}}}event: content_block_startdata: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}event: pingdata: {"type": "ping"}event: content_block_deltadata: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "", "estimated_tokens": 50}}event: content_block_deltadata: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "", "estimated_tokens": null}}… 中间的增量事件省略 …event: message_deltadata: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null, "stop_details": null}, "usage": {"input_tokens": 39, "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0, "cache_creation": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0}, "output_tokens": 151, "output_tokens_details": {"thinking_tokens": 89}, "iterations": [{"input_tokens": 39, "output_tokens": 15 … }event: message_stopdata: {"type": "message_stop"}

真实调用抓取并脱敏 · 2026-09-09

国产模型的真实响应

以下为各国产模型在 Messages 协议上的真实调用与响应。注意 kimi-k3 会返回 thinking 块,usage.output_tokens_details.thinking_tokens 是其消耗。

glm-5.3

请求 POST /v1/messages

{  "model": "glm-5.3",  "max_tokens": 200,  "messages": [    {      "role": "user",      "content": "用一句话解释幂等"    }  ]}

响应

{  "id": "11322f14f6b8472b9c568bc1b5abc48a",  "type": "message",  "role": "assistant",  "content": [    {      "type": "text",      "text": "幂等性指同一操作执行一次和多次的效果完全相同,例如 n=1 和 n>1 时 f^n(x)=f(x)。"    }  ],  "stop_reason": "end_turn",  "model": "glm-5.3",  "usage": {    "input_tokens": 8,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 64,    "output_tokens": 32,    "claude_cache_creation_5_m_tokens": 0,    "claude_cache_creation_1_h_tokens": 0,    "billing_usage": {      "source": "oai_chat",      "semantic": "openai",      "openai_usage": {        "prompt_tokens": 8,        "completion_tokens": 32,        "total_tokens": 99,        "prompt_tokens_details": {          "cached_tokens": 64,          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0        },        "completion_tokens_details": {          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0,          "reasoning_tokens": 0        },        "input_tokens": 0,        "output_tokens": 0,        "input_tokens_details": null,        "claude_cache_creation_5_m_tokens": 0,        "claude_cache_creation_1_h_tokens": 0,        "cost": 1e-05      }    }  }}
kimi-k3

请求 POST /v1/messages

{  "model": "kimi-k3",  "max_tokens": 200,  "messages": [    {      "role": "user",      "content": "用一句话解释幂等"    }  ]}

响应

{  "id": "msg_XXXXXXXX",  "type": "message",  "role": "assistant",  "content": [    {      "type": "thinking",      "thinking": "Explain idempotency in one sentence, in Chinese.",      "signature": "…(签名已省略)"    },    {      "type": "text",      "text": "幂等是指同一个操作无论执行一次还是重复执行多次,产生的结果(副作用)都完全相同,例如把账户余额\"设为100元\"执行多次效果一样,而\"余额加100元\"则不具备幂等性。"    }  ],  "model": "kimi-k3",  "stop_reason": "end_turn",  "stop_sequence": null,  "usage": {    "input_tokens": 0,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 91,    "output_tokens": 74,    "output_tokens_details": {      "thinking_tokens": 11    }  }}
qwen3.8-max

请求 POST /v1/messages

{  "model": "qwen3.8-max",  "max_tokens": 200,  "messages": [    {      "role": "user",      "content": "用一句话解释幂等"    }  ]}

响应

{  "id": "chatcmpl-XXXXXXXX",  "type": "message",  "role": "assistant",  "content": [    {      "type": "text",      "text": "\n\n幂等是指对同一对象重复执行同一操作,结果与执行一次相同。"    }  ],  "stop_reason": "end_turn",  "model": "qwen3.8",  "usage": {    "input_tokens": 57,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 0,    "output_tokens": 43,    "claude_cache_creation_5_m_tokens": 0,    "claude_cache_creation_1_h_tokens": 0,    "billing_usage": {      "source": "oai_chat",      "semantic": "openai",      "openai_usage": {        "prompt_tokens": 57,        "completion_tokens": 43,        "total_tokens": 100,        "prompt_tokens_details": {          "cached_tokens": 0,          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0        },        "completion_tokens_details": {          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0,          "reasoning_tokens": 0        },        "input_tokens": 0,        "output_tokens": 0,        "input_tokens_details": null,        "claude_cache_creation_5_m_tokens": 0,        "claude_cache_creation_1_h_tokens": 0      }    }  }}
deepseek-v4-pro

请求 POST /v1/messages

{  "model": "deepseek-v4-pro",  "max_tokens": 200,  "messages": [    {      "role": "user",      "content": "用一句话解释幂等"    }  ]}

响应

{  "id": "02178898172708996188f7c040816dd3fe5310871d7143ab32d04",  "type": "message",  "role": "assistant",  "content": [    {      "type": "text",      "text": "幂等是指同一个操作执行多次与执行一次产生的效果完全相同。"    }  ],  "stop_reason": "end_turn",  "model": "deepseek-v4-pro-ga-260813",  "usage": {    "input_tokens": 88,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 0,    "output_tokens": 93,    "claude_cache_creation_5_m_tokens": 0,    "claude_cache_creation_1_h_tokens": 0,    "billing_usage": {      "source": "oai_chat",      "semantic": "openai",      "openai_usage": {        "prompt_tokens": 88,        "completion_tokens": 93,        "total_tokens": 181,        "prompt_tokens_details": {          "cached_tokens": 0,          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0        },        "completion_tokens_details": {          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0,          "reasoning_tokens": 78        },        "input_tokens": 0,        "output_tokens": 0,        "input_tokens_details": null,        "claude_cache_creation_5_m_tokens": 0,        "claude_cache_creation_1_h_tokens": 0      }    }  }}
glm-5.3 · 工具调用

请求 POST /v1/messages

{  "model": "glm-5.3",  "max_tokens": 300,  "messages": [    {      "role": "user",      "content": "北京天气怎么样?用工具查"    }  ],  "tools": [    {      "name": "get_weather",      "description": "查询天气",      "input_schema": {        "type": "object",        "properties": {          "city": {            "type": "string"          }        },        "required": [          "city"        ]      }    }  ]}

响应

{  "id": "f9b09a80ba7f4d64b3ddb2ece4a3465d",  "type": "message",  "role": "assistant",  "content": [    {      "type": "tool_use",      "id": "call_XXXXXXXX",      "name": "get_weather",      "input": {        "city": "北京"      }    }  ],  "stop_reason": "tool_use",  "model": "glm-5.3",  "usage": {    "input_tokens": 148,    "cache_creation_input_tokens": 0,    "cache_read_input_tokens": 192,    "output_tokens": 12,    "claude_cache_creation_5_m_tokens": 0,    "claude_cache_creation_1_h_tokens": 0,    "billing_usage": {      "source": "oai_chat",      "semantic": "openai",      "openai_usage": {        "prompt_tokens": 148,        "completion_tokens": 12,        "total_tokens": 219,        "prompt_tokens_details": {          "cached_tokens": 192,          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0        },        "completion_tokens_details": {          "text_tokens": 0,          "audio_tokens": 0,          "image_tokens": 0,          "reasoning_tokens": 0        },        "input_tokens": 0,        "output_tokens": 0,        "input_tokens_details": null,        "claude_cache_creation_5_m_tokens": 0,        "claude_cache_creation_1_h_tokens": 0,        "cost": 1e-05      }    }  }}

以上为真实调用抓取并脱敏 · 2026-09-09

能力边界

  • 只保证核心能力:消息、流式、thinking、基本的工具调用。批处理、文件上传、 代码执行容器这些端点不在提供范围内。
  • thinking 的写法不能跨代次通用,写死一种会在另一代次上 400。
  • container / inference_geo / service_tier 无效,见参数表。
  • 非流式不适合推理型号。

在线调试

填入你自己的 API Key 即可直接发起请求,参数表与响应结构由接口定义生成。

POST
/v1/messages

Authorization

BearerAuth

AuthorizationBearer <token>

使用 Bearer Token 认证。 格式: Authorization: Bearer sk-xxxxxx

In: header

Header Parameters

anthropic-version*string

Anthropic API 版本

x-api-key?string

Anthropic API Key (可选,也可使用 Bearer Token)

Request Body

application/json

model*string
messages*
system?string|
max_tokens*integer
Range1 <= value
temperature?number
Range0 <= value <= 1
top_p?number
top_k?integer
stream?boolean
stop_sequences?array<string>
tools?
tool_choice?
thinking?
metadata?

Response Body

application/json

curl -X POST "https://www.vibeapi.cn/v1/messages" \  -H "anthropic-version: 2023-06-01" \  -H "Content-Type: application/json" \  -d '{    "model": "claude-3-opus-20240229",    "messages": [      {        "role": "user",        "content": "string"      }    ],    "max_tokens": 1  }'
{
  "id": "string",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "string",
      "text": "string"
    }
  ],
  "model": "string",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0
  }
}

官方文档

本页只写与本网关有关的部分,参数语义的权威定义以官方为准: