Claude API 就是 Messages API。一个端点、一把 key、一种请求结构,所有客户端库都只是对这一次 POST 的封装。
第一个小时真正卡人的是两件事:model id 会随新模型发布而变化,而开发者最先问的那些数字——免费额度、速率限制——官方并没有公布。
Claude API 能做什么
一次请求能做的远不止返回文本。Messages API 承载对话、调用你定义的工具、把 token 边生成边流出,也可以排成批量任务。prompt caching 让一段又长又稳定的前缀被反复复用,而不是每次都按完整的输入价格重新计费。
Claude Fable 5.1 是当前在售的前沿模型,2026-09-01 发布,在 Claude API 上的 id 是 claude-fable-5-1。如果你连 Claude 这个产品本身都还没用过,先读怎么用 Claude。写提示词的习惯可以原样搬过来。
拿 key 与选模型
key 放在哪里
key 在 Claude Console 里签发。拿到之后放进环境变量,不要写进代码——提交进仓库的 key,就是一把迟早要轮换的 key。API key 安全这件事,值得在第一次上线前花十分钟看完。
model id 该传哪个
Anthropic 官方的 Fable 5.1 产品页给出的 id 是 claude-fable-5-1,同一页也公布了价格:每一百万输入 token $10、每一百万输出 token $50,缓存读取每一百万 token $0.25。Claude Mythos 5.1 是同一个底层模型,只是安全策略不同,面向经过审核的机构开放。
在售的其他模型也值得记住:Claude Opus 5 是 $5 与 $25,Claude Sonnet 5 是 $2 与 $10,Claude Haiku 4.5 是 $1 与 $5,单位都是每百万 token。把 id 当配置而不是常量,这样改名只是改环境变量,而不是发一次版本。
第一次请求:curl

先用最小的一条请求把链路跑通。记得先在 shell 里导出 ANTHROPIC_API_KEY 和 ANTHROPIC_MODEL。
curl -s https://api.anthropic.com/v1/messages \
-H "x-api-key: ${ANTHROPIC_API_KEY}" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d "{
\"model\": \"${ANTHROPIC_MODEL}\",
\"max_tokens\": 512,
\"messages\": [
{ \"role\": \"user\", \"content\": \"Explain what a message block is in two sentences.\" }
]
}"
有三处容易漏。key 走请求头而不是 URL,所以它不会留在 shell 历史和代理日志里。max_tokens 是必填项,它限制的是输出上限。而 messages 是一组 role 与 content 的配对,这也正是多轮对话的结构:追加一条 user 消息再发一次,就是聊天。
返回体是 JSON。请读 content 数组,里面是带类型的 block,你要的文本挂在 type 为 text 的那个 block 上。stop_reason 字段会说明这次生成为什么结束。
官方 SDK(Python)
先 pip install anthropic,再让客户端自己从环境变量里读 key。
import os
from anthropic import Anthropic
client = Anthropic() # reads ANTHROPIC_API_KEY from the environment
message = client.messages.create(
model=os.environ.get("ANTHROPIC_MODEL", "claude-fable-5-1"),
max_tokens=512,
messages=[
{"role": "user", "content": "Summarise this changelog in three bullets."}
],
)
for block in message.content:
if block.type == "text":
print(block.text)
SDK 换的是手感,不是契约。model id、token 上限和消息列表,还是你用 curl 发过的那三个必填字段。官方 SDK 有 Python 和 TypeScript 两套。
流式输出与 tool use
stream=True 返回的是一个事件迭代器,而不是一份已经写好的响应,文本以 delta 的形式陆续到达。
stream = client.messages.create(
model=os.environ.get("ANTHROPIC_MODEL", "claude-fable-5-1"),
max_tokens=1024,
messages=[{"role": "user", "content": "Write a short release note."}],
stream=True,
)
for event in stream:
if event.type == "content_block_delta":
print(event.delta.text, end="", flush=True)
tool use 沿用同一套请求结构,只是多了一个 tools 数组,每一项带 name、description 和 input schema。模型可以直接回一个 tool-use block 而不是文本,你的代码把工具跑完,再把结果作为新一轮发回去。
有一点要说明:核对当天 API 参考页没能打开,所以本文不对某个模型支持哪些 tool_choice 取值下结论。
计费:哪些公布了,哪些没有
官方定价页上公布的是:Fable 5.1 每百万 token $10 输入、$50 输出,缓存读取 $0.25,缓存写入 $12.50,批量处理打五折,仅美国境内推理按 1.1 倍计价。
我们核对过的页面上没有公布的是:免费额度、速率限制,以及 Fable 5.1 的上下文窗口。这几项恰好是做预算最想知道的,所以本文一个数字都不给。
选完模型之后,最大的成本杠杆是 prompt caching:一段稳定的 system prompt 只写一次,之后按输入价格的一小部分读回。上下文缓存讲的是另一家 API 上的同一套机制。
常见错误与排查顺序
401 说明 key 缺失、写错或已被吊销。先看请求头名字:肌肉记忆容易写成 Authorization,而 Anthropic 用的是 x-api-key。
400 通常是 model id 或少了必填字段。最常漏的是 max_tokens,其次是从教程里抄来的过期 id。
429 说明你发得比配额允许的更快。公开的限制我们这里拿不到,那就靠测量:把每条响应记下来,停在跑通过的那条速率线下面。
529 是服务端过载,不是你写错了,用指数退避重试,别拿紧循环硬撞。
不要把 key 放进前端代码:浏览器能看到的 key,就是一把公开的 key。
常见问题
API 和 Claude 订阅要用两个账号吗? key 在 Claude Console 签发。你现有的订阅是否覆盖 API 用量属于计费问题,所以在确认之前,把 API 和订阅当成两笔预算。
有免费试用额度吗? 我们核对过的页面上,Anthropic 没有公布固定金额;别处引用的数字属于那个站点自己的说法。
用了 SDK 就不用调 HTTP 了吗? 不是。SDK 封装的是同一个端点,必填字段完全一样。
怎么让 model id 保持最新? 放进配置,升级时对照Claude 使用指南或官方模型页。
能在同一个请求里既要流式又要用工具吗? 两者都是请求级选项;上面的示例分开写只是为了说清楚,不是互相冲突。
把一条请求接上,把整个返回体记下来,把 model id 留在配置里。做到这三件事,就足以判断 Claude API 适不适合你的流水线。