创建消息(Anthropic Messages)

BigModel.io 的 POST /v1/messages 接口:供 Claude Code 和 Anthropic SDK 使用的 Anthropic Messages 协议,支持流式、工具、扩展思考和提示词缓存。

POSThttps://bigmodel.io/v1/messages
本页目录
  1. 请求
  2. 认证
  3. 请求头
  4. 请求体
  5. 响应
  6. 响应字段
  7. 示例
  8. 流式输出
  9. 提示词缓存
  10. 说明
  11. 相关文档

Anthropic Messages 接口。Anthropic SDK 和 Claude Code 的 Base URL 填 https://bigmodel.io,客户端会自己拼上 /v1/messages。Anthropic 分组原生提供;OpenAI 分组在允许 Messages 调度时会转换处理;仅对话补全分组(DeepSeek、GLM 平台)返回 404。

#请求

http
POST https://bigmodel.io/v1/messages

#认证

请求头 值
Authorization Bearer $BIGMODEL_API_KEY
x-api-key $BIGMODEL_API_KEY

任选其一。

#请求头

名称 类型 必填 说明
anthropic-version string Anthropic SDK 发送的 API 版本请求头。

#请求体

标准 Anthropic Messages 请求体。

字段 类型 必填 说明
model string 是 模型 ID,例如 glm-5.3。
max_tokens integer 是 最多生成的 token 数。
messages array<object> 是 交替的 user 和 assistant 消息。
messages[].role string 是 可选值:user, assistant
messages[].content string | array<object> 是
system string | array<object> 系统提示词,内容块可带 cache_control。
stream boolean 以 Anthropic SSE 流式返回。 默认 false
tools array<object> 工具定义(name、description、input_schema)。
tool_choice object
thinking object 扩展思考设置(仅支持的模型)。
temperature number
metadata object
metadata.user_id string

#响应

状态码 含义
200 消息结果;stream 为 true 时为 Anthropic SSE 事件流。
400 api_key_in_query_deprecated(Key 放在了查询参数里),或 invalid_request_error:请求体为空或不是合法 JSON、缺少 model、stream 不是布尔值等。
401 API_KEY_REQUIRED、INVALID_API_KEY、API_KEY_DISABLED、USER_NOT_FOUND、USER_INACTIVE。
403 INSUFFICIENT_BALANCE、API_KEY_EXPIRED、ACCESS_DENIED(IP 规则)、SUBSCRIPTION_NOT_FOUND、SUBSCRIPTION_INVALID,或 permission_error(Key 未分配分组、分组不允许该接口)。
404 not_found_error:该 Key 所在分组只提供 /v1/chat/completions。
409 malformed_session_state:对话历史中的思考块或工具 ID 无法被模型接受,请开新会话。
413 请求体过大。
429 API_KEY_QUOTA_EXHAUSTED、USAGE_LIMIT_EXCEEDED(套餐额度),或 rate_limit_exceeded / rate_limit_error(Key 的 5 小时/1 天/7 天限额、每分钟请求数、并发、上游限流)。每分钟限流会带 Retry-After。
502 upstream_error:模型服务商出错。
503 api_error 等:分组暂时没有该模型的可用容量,或分组不提供该模型(No available accounts)。

#响应字段

字段 类型 说明
id string
type any
role any
model string
content array<object> text、thinking、tool_use 内容块。
stop_reason string end_turn, max_tokens, tool_use, …
usage object
usage.input_tokens integer
usage.output_tokens integer
usage.cache_creation_input_tokens integer
usage.cache_read_input_tokens integer

stream: true 时返回 Anthropic 事件流:message_start、content_block_start、content_block_delta、content_block_stop、message_delta、message_stop。

#示例

cURL
curl https://bigmodel.io/v1/messages \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5.3",
    "max_tokens": 256,
    "system": "你是一个简洁的助手。",
    "messages": [{"role": "user", "content": "用一句话解释 HTTP 429。"}]
  }'
Python
import os
from anthropic import Anthropic

client = Anthropic(base_url="https://bigmodel.io", api_key=os.environ["BIGMODEL_API_KEY"])

msg = client.messages.create(
    model="glm-5.3",
    max_tokens=256,
    system="你是一个简洁的助手。",
    messages=[{"role": "user", "content": "用一句话解释 HTTP 429。"}],
)
print(msg.content[0].text)
Node.js
import Anthropic from '@anthropic-ai/sdk'

const client = new Anthropic({baseURL: 'https://bigmodel.io', apiKey: process.env.BIGMODEL_API_KEY})

const msg = await client.messages.create({
  model: 'glm-5.3',
  max_tokens: 256,
  system: '你是一个简洁的助手。',
  messages: [{role: 'user', content: '用一句话解释 HTTP 429。'}],
})
console.log(msg.content[0].text)

响应示例(id、文本和 token 数仅作示意):

json
{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "glm-5.3",
  "content": [
    {"type": "text", "text": "HTTP 429 表示你在一段时间内请求过多,需要稍后重试。"}
  ],
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 21, "output_tokens": 19, "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0}
}

#流式输出

Python
with client.messages.stream(
    model="glm-5.3",
    max_tokens=256,
    messages=[{"role": "user", "content": "从 1 数到 3。"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
Node.js
const stream = client.messages.stream({
  model: 'glm-5.3',
  max_tokens: 256,
  messages: [{role: 'user', content: '从 1 数到 3。'}],
})
stream.on('text', text => process.stdout.write(text))
await stream.finalMessage()

#提示词缓存

json
{
  "model": "glm-5.3",
  "max_tokens": 256,
  "system": [
    {"type": "text", "text": "<较长且稳定的指令>", "cache_control": {"type": "ephemeral"}}
  ],
  "messages": [{"role": "user", "content": "第一个问题"}]
}

#说明

  • 仅对话补全分组返回 404。 DeepSeek、GLM 平台分组的 Key 会收到 not_found_error:"… platform only supports /v1/chat/completions; /v1/messages is not available"。请改用对话补全,或换一个提供 Messages 的分组的 Key。
  • OpenAI 分组只有在分组允许时才转换 Messages 请求,否则返回 403:"This group does not allow /v1/messages dispatch"。
  • model 必填,缺少时返回 400 invalid_request_error。分组不提供或拼错的模型返回 503 api_error("No available accounts"),不是 404。
  • 提示词缓存。 cache_control 会透传。最多保留 4 个缓存断点,多余的依次从 tools、messages、system 中移除。thinking 块上的 cache_control 会被去掉。缓存写入和读取分别按模型的缓存写入价、缓存读取价计费。详见提示词缓存。
  • 思考。 thinking 和 output_config.effort 会被读取并转发。如果对话历史中的思考块或工具 ID 无法被模型接受,会返回 409 malformed_session_state,请开新会话。详见推理与思考。
  • metadata.user_id。 同一会话发送固定的值,会话中的请求会被一致地处理,有助于提示缓存命中。
  • 错误使用 Anthropic 结构 {"type":"error","error":{...}},Key 检查阶段的错误除外({"code","message"})。流式过程中的错误以 SSE error 事件返回。完整列表见错误码。

#相关文档

更新于 · 以 Markdown 查看