LoopToken

Claude 系列

Anthropic Claude(claude-fable-5-1 / claude-opus-5-5 / claude-sonnet-5-5 / claude-haiku-5-5),原生 Anthropic Messages API(POST /v1/messages),同步或 SSE 流式,按输入/输出/缓存读取/缓存写入五项计费

POST/v1/messages

Claude 系列走 Anthropic 原生 Messages API:请求体、响应体、SSE 事件、请求头与 Anthropic 官方完全一致,平台原样透传,可直接使用 Anthropic 官方 SDK 和 Claude Code。

项值
模型见下表(实际可用以模型列表为准)
模式同步;stream: true 时为 SSE 流式
计费按 token,输入 / 输出 / 缓存读取 / 缓存写入(5m)/ 缓存写入(1h)五项分别计价,见计费
模型上下文最大输出说明
claude-fable-5-11M128K能力最强,适合最高难度推理与长时程 Agent 任务;思考常开
claude-opus-5-51M128KOpus 系列最新版,长时程编程与知识工作;思考常开
claude-sonnet-5-51M128K速度与能力兼顾,日常编程、Agent 与企业场景
claude-haiku-5-51M128K最快最经济;输入超过 100K 按长上下文价计费
Claude 只能通过 /v1/messages 调用。用 /v1/chat/completions 或 /v1/responses 请求 claude-* 模型会返回 400:协议转换会丢失 thinking 签名,缓存写入也无法按实际档位计费。

快速开始

curl https://api.vibelab.me/v1/messages \
  -H "x-api-key: $LOOPTOKEN_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "用一句话介绍量子计算"}]
  }'
响应
{
  "id": "msg_011CgY7k2HkKZaASX2XaT26Y",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5-5",
  "content": [{"type": "text", "text": "量子计算是利用量子叠加与纠缠进行信息处理的计算范式。"}],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 18,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "cache_creation": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0},
    "output_tokens": 32
  }
}

鉴权与请求头

请求头必填说明
x-api-key二选一LoopToken Key(sk-lt-...),Anthropic SDK 与 Claude Code 配 ANTHROPIC_API_KEY 时使用
Authorization二选一Bearer sk-lt-...,Claude Code 配 ANTHROPIC_AUTH_TOKEN 时使用;两者都带时以本头为准
anthropic-version否原样转发,缺省按 2023-06-01
anthropic-beta否原样转发,用于启用 Anthropic beta 特性(如 interleaved-thinking-2025-05-14)
content-type是application/json

URL 上的查询参数(如 Claude Code 发送的 ?beta=true)也原样转发。不要填 Anthropic 官方的 sk-ant- 密钥。

请求参数

请求体与 Anthropic 官方 Messages API 一致,平台不改写任何字段,只读取下列字段用于路由和预扣:

参数类型必填默认说明
modelstring是-上表中的模型名
max_tokensint是-最大输出 token;同时决定预扣金额
messagesarray是-对话消息,content 支持字符串或内容块数组(text / image / document / tool_use / tool_result / thinking 等)
streambool否falsetrue 时返回 SSE 流
systemstring/array否-系统提示词,数组形式可在块上加 cache_control
thinkingobject否见下{"type":"adaptive"};思考深度用 output_config.effort 控制
output_config.effortstring否依模型low / medium / high / xhigh / max
tools / tool_choice-否-工具调用,见工具调用
cache_controlobject否-{"type":"ephemeral"}(5 分钟)或 {"type":"ephemeral","ttl":"1h"}(1 小时),可加在块上或顶层
stop_sequences / metadata-否-与官方一致

各模型的官方限制同样生效(违反时由上游返回 400 invalid_request_error,平台原样透给你):

  • claude-fable-5-1 / claude-opus-5-5 → 思考不能关闭,thinking: {"type":"disabled"} 与 {"type":"enabled","budget_tokens":N} 均返回 400,用 output_config.effort 调节深度。
  • claude-sonnet-5-5 → {"type":"disabled"} 返回 400;要关闭思考,发送 {"type":"between_tools"}(仅在 effort 为 high 及以下时可用)。
  • claude-fable-5-1 / claude-opus-5-5 / claude-sonnet-5-5 → tool_choice 为 any 或 {"type":"tool"} 时返回 400,请用 auto 并在提示词中点名工具。
  • 全部模型 → 不支持 assistant 预填(最后一条为 assistant 消息)。

请求示例

流式

curl https://api.vibelab.me/v1/messages \
  -H "x-api-key: $LOOPTOKEN_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 4096,
    "stream": true,
    "messages": [{"role": "user", "content": "写一首关于秋天的短诗"}]
  }'

SSE 事件与官方一致,按 message_start → content_block_start / content_block_delta / content_block_stop → message_delta → message_stop 的顺序到达,中间可能有 ping。平台逐事件原样转发,thinking 签名、tool_use 增量都不做改动。

SSE 片段
event: message_start
data: {"type":"message_start","message":{"id":"msg_011C...","model":"claude-opus-5-5","usage":{"input_tokens":21,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"枫叶"}}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":86}}

event: message_stop
data: {"type":"message_stop"}

Prompt 缓存

长系统提示词、工具定义、长文档放在前面并打上 cache_control,后续请求命中缓存后按缓存读取价计费:

{
  "model": "claude-sonnet-5-5",
  "max_tokens": 1024,
  "system": [
    {"type": "text", "text": "<很长的系统提示词或文档>", "cache_control": {"type": "ephemeral"}}
  ],
  "messages": [{"role": "user", "content": "根据文档回答:……"}]
}

第一次请求:usage.cache_creation_input_tokens 记录写入量;5 分钟内(ttl: "1h" 时为 1 小时)的后续请求:usage.cache_read_input_tokens 记录命中量。前缀里任何一个字节变化都会导致缓存失效。

工具调用

{
  "model": "claude-sonnet-5-5",
  "max_tokens": 2048,
  "tools": [{
    "name": "get_weather",
    "description": "查询城市天气",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role": "user", "content": "巴黎今天天气怎么样?"}]
}

响应 stop_reason 为 tool_use 时,执行工具后把整个 assistant content(包括 thinking 块)原样追加到历史,再追加一条 user 消息,在其中放入 tool_result 块。thinking 块被改动或删掉会导致后续请求报错。

统计 token

curl https://api.vibelab.me/v1/messages/count_tokens \
  -H "x-api-key: $LOOPTOKEN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-5-5", "messages": [{"role": "user", "content": "hello"}]}'
响应
{"input_tokens": 2}

count_tokens 由平台本地估算,不调用上游、不计费,数值是近似值(不计入图片等 base64 媒体);实际计费以 /v1/messages 返回的 usage 为准。

响应

与 Anthropic 官方 Message 对象一致。计费相关的 usage 字段:

字段类型说明
usage.input_tokensint普通输入 token,不含缓存部分
usage.cache_read_input_tokensint命中缓存的输入 token
usage.cache_creation_input_tokensint写入缓存的输入 token(5m + 1h 之和)
usage.cache_creation.ephemeral_5m_input_tokensint其中按 5 分钟 TTL 写入的部分
usage.cache_creation.ephemeral_1h_input_tokensint其中按 1 小时 TTL 写入的部分
usage.output_tokensint输出 token,含思考 token

总输入 = input_tokens + cache_read_input_tokens + cache_creation_input_tokens。控制台用量记录里的"输入 token"按总输入显示。

计费

按上游返回的 usage 五项分别计价:

费用 = input_tokens × 输入价
     + cache_read_input_tokens × 缓存读取价
     + ephemeral_5m_input_tokens × 缓存写入(5m)价
     + ephemeral_1h_input_tokens × 缓存写入(1h)价
     + output_tokens × 输出价

单价(美元 / 百万 token,与 Anthropic 官方价一致;10 积分 = 1 美元):

模型档位输入输出缓存读取缓存写入(5m)缓存写入(1h)
claude-fable-5-1全部$10$50$0.25$12.5$20
claude-opus-5-5全部$4$20$0.20$5$8
claude-sonnet-5-5全部$2$10$0.20$2.5$4
claude-haiku-5-5总输入 ≤ 100K$0.10$0.50$0.01$0.125$0.20
claude-haiku-5-5总输入 > 100K$0.50$2.50$0.05$0.625$1.00

价格以定价页为准。

  • 预扣 → 请求进入时按估算输入 + max_tokens(不超过模型最大输出)的输出价冻结积分,余额不足返回 402。max_tokens 越大冻结越多,结算后多退少补。
  • 结算 → 按上游 usage 实扣;上游没有返回 usage 时按输入、输出文本估算。
  • 长上下文(claude-haiku-5-5) → 按实际总输入(含缓存读写)判断,超过 100K 时整个请求的五项都按长上下文价计费。
  • 失败 → 上游报错或未产生输出时全额退还预扣。流式已开始输出后中断,按已产生的用量结算。
  • count_tokens → 不计费。

错误

本接口的错误体使用 Anthropic 格式,Anthropic SDK 能直接识别:

{
  "type": "error",
  "error": {"type": "invalid_request_error", "message": "prompt is too long: 1000001 tokens > 1000000 maximum"},
  "request_id": "01a18c01-59e8-77df-83a6-cc66e28b5272"
}
HTTPerror.type触发场景处理
400invalid_request_error请求体不合法、违反模型限制、上下文超长(prompt is too long),或通过 /v1/chat/completions 调用 Claude按 message 修改请求;超长时压缩上下文
401authentication_error缺少 Key、Key 无效或已禁用检查 x-api-key / Authorization
402billing_error余额不足以支付预扣充值或调小 max_tokens
403permission_errorKey 的模型白名单、IP 白名单或配额不允许调整 Key 设置
404not_found_error模型不存在或未上架使用模型列表中的模型名
429rate_limit_error触发 Key 或账户的 RPM 限制退避后重试
502 / 503api_error上游全部失败或暂无可用渠道退避后重试
504timeout_error非流式请求等待上游超时改用 stream: true

通用说明见错误码。

注意事项

  • Base URL → Anthropic SDK 与 Claude Code 填 https://api.vibelab.me(不带 /v1)。
  • Claude Code → 配置方法见 Claude Code 接入。
  • 长输出 → max_tokens 较大或开启思考时用 stream: true,避免非流式超时。
  • 多轮对话 → 历史中的 thinking 块必须原样回传,不要删改。
  • 缓存 → 缓存按模型隔离;切换模型、改动系统提示词或工具定义都会导致缓存失效,重新写入。

本页内容