api

Anthropic Messages API 调用指南

直接答案Messages API 使用 system、角色消息和内容块;直连 Anthropic 要求 x-api-key 与版本头,本站推荐统一 Bearer,同时兼容原生 x-api-key

更新 · 审核信息

Messages API 的基本结构

Anthropic 使用顶层 systemmessages 和类型化 content[] 表达对话、图片与工具。输入角色只有 userassistant,不要把 system prompt 伪装成一条 role=system 消息。API 默认无状态,多轮调用需要客户端重发完整且协议允许的历史。

通过本站完成最小调用

直连 Anthropic REST 必须发送 x-api-keyanthropic-version。本站推荐统一使用 Bearer,也兼容在 /v1/messages 发送本站密钥形式的 x-api-key;仍建议显式发送受支持的版本头固定语义。max_tokens 是 Messages 的必填字段,模型名来自模型广场

curl "$BASE_URL/v1/messages" \
  -H "Authorization: Bearer $API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_NAME","max_tokens":512,"messages":[{"role":"user","content":"只回复:连接成功"}]}'

成功响应的文本位于 content[] 中的 type=text 块;同时读取 stop_reasonusage.input_tokensusage.output_tokens 和请求 ID。不要只取第一个块,因为工具、思考或其他类型可能与文本并存。

正确完成工具调用

客户端工具返回 tool_use 后,应用验证名称和 JSON 输入、执行受控操作,再用相同 ID 回传 tool_result。模型只提出调用,数据库、文件、网络和副作用权限属于应用。Anthropic 也提供 Web Search 等服务端工具,由平台执行并产生不同内容块与费用;不能把两类工具一概而论。

流式事件不是 OpenAI choices

Messages 流包含 message/content-block 的 start、delta、stop,也可能出现 ping、新增未知事件和 HTTP 200 之后的流内 error。客户端应按完整 SSE 事件处理,容忍未知类型,累积工具 JSON 与 usage,并在收到 message_stop 前保持未完成状态。

错误与请求 ID

官方错误包括 400 请求、401 认证、402 账单、403 权限、404 资源、413 请求体、429 限速、500 内部错误、504 超时和 529 过载。响应错误对象包含 typemessagerequest_id。只对连接错误、临时 429 和确认属于临时故障的 5xx 做有限退避;官方 SDK 默认也可能自动重试,避免重复放大。

上下文、停止原因与长请求

输入本身超过上下文可返回 400 invalid_request_error;某些较新模型在生成中触达窗口会返回成功消息,并以 model_context_window_exceeded 停止。发送前使用 Token Counting 或等价能力预估。长请求优先流式,异步批处理用于不要求实时返回的工作,不能仅调大客户端超时。

安全、费用与兼容边界

按 workspace 和环境隔离密钥,设置有效期并放入秘密管理器;生产可评估 Workload Identity Federation。费用不仅来自可见文本,工具 schema、工具结果、思考与服务端工具也可能计入。本站渠道不保证扩展思考、提示缓存、批处理、引用和视觉全部可用,迁移前对 system、内容块、工具结果、停止原因和用量做契约测试。

适用场景

  • 长上下文分析
  • 复杂编码
  • 企业知识处理

API 协议

  • /v1/messages

FAQ

system 应该放在 messages 里吗?

不应该。Messages API 使用顶层 system 字段,输入消息角色只有 user 与 assistant;通过本站兼容调用也应保留这一语义。

anthropic-version 可以不传吗?

直连 Anthropic REST 时它是必填请求头。通过本站仍建议显式发送受支持的版本头,避免依赖渠道默认值;上线前应做契约测试。

模型返回 tool_use 后会自动执行工具吗?

客户端工具不会。应用必须验证并执行,再用相同 ID 回传 tool_result;Web Search 等服务端工具可能由 Anthropic 平台执行,两类权限边界不同。

为什么 HTTP 200 的流式响应中途仍会失败?

SSE 在连接建立后还能发送 error 事件。客户端必须处理流内错误、未知事件、ping 和未收到 message_stop 的异常结束。

上下文用满一定返回 400 吗?

不一定。输入本身过长可能返回 400;某些新模型在生成中达到窗口会返回成功消息,并以 model_context_window_exceeded 作为 stop_reason。

官方来源

  1. Anthropic API Overview Official
  2. Anthropic Get Started Official
  3. Anthropic Create a Message Official
  4. Anthropic Tool Use Official
  5. Anthropic Streaming Messages Official
  6. Claude API Errors Official
  7. Claude Context Windows Official
  8. Claude Stop Reasons Official
  9. Claude Token Counting Official
  10. Claude API Rate Limits Official
  11. Claude Authentication Official