Anthropic Messages 兼容
Anthropic Messages API (/v1/messages) 兼容,可直接作为 Claude Code / Anthropic SDK 后端,支持流式 SSE 与 tool use。
完全兼容 Anthropic Messages API。请求与响应字段按 Anthropic 规范处理,可直接用 Anthropic 官方 SDK 或 Claude Code 指向本网关。
平台内部会把 Anthropic Messages 请求翻译成统一管线,因此 model 不局限于 Claude——任何 文本模型(含 GPT / Grok / Gemini 系列)都能通过此端点调用。
鉴权
支持两种鉴权头,任选其一:
Authorization: Bearer sk-xxxxxxxx(OpenAI 风格)x-api-key: sk-xxxxxxxx(Anthropic 原生 SDK 默认)
用于 Claude Code
把 cc switch / 环境变量指向本网关即可。注意 ANTHROPIC_BASE_URL 已含 /v1,Claude Code 会自动拼 /messages:
export ANTHROPIC_BASE_URL="https://cokeapi.com/v1"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxx"
export ANTHROPIC_MODEL="sonnet-4.6" # 用 /v1/models 里存在的模型 ID
ANTHROPIC_MODEL是 Claude Code 实际发请求用的主模型 ID,会覆盖其它默认项。务必填 模型一览 里真实存在的 ID,否则报 "model may not exist or you may not have access"。
调用示例
Anthropic 官方 SDK 会自己拼
/v1/messages,所以base_url填到域名根https://cokeapi.com(不带/v1)。
请求参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | — | 模型 ID,见 /docs/text/models |
| max_tokens | int | 是 | — | 最大生成 token 数(Anthropic 规范要求必填) |
| messages | array | 是 | — | 对话历史,content 支持字符串或 block 数组 |
| system | string | array | 否 | — | 系统提示,字符串或 text block 数组 |
| stream | bool | 否 | false | true 时返回 Anthropic 风格 SSE 事件流 |
| temperature | number | 否 | — | 采样温度 |
| top_p | number | 否 | — | 核采样 |
| stop_sequences | array | 否 | — | 自定义停止序列 |
| tools | array | 否 | — | 工具定义 [{ name, description, input_schema }] |
| tool_choice | object | 否 | — | {type: auto|any|tool|none} |
响应示例
非流式
{
"id": "msg_01HX...",
"type": "message",
"role": "assistant",
"model": "sonnet-4.6",
"content": [
{ "type": "text", "text": "CokeAPI 是 OpenAI/Anthropic 兼容的 AIGC 网关。" }
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": { "input_tokens": 28, "output_tokens": 20 }
}流式 (SSE)
事件序列遵循 Anthropic 规范:
event: message_start
data: {"type":"message_start","message":{"id":"msg_...","type":"message","role":"assistant","model":"sonnet-4.6","content":[],"usage":{"input_tokens":28,"output_tokens":0}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Coke"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":20}}
event: message_stop
data: {"type":"message_stop"}Tool use
tools 与 tool_use / tool_result block 完全按 Anthropic 规范处理:
- 助手返回的工具调用以
content里的tool_useblock 给出,流式时通过input_json_delta增量传input。 - 你把工具结果作为 user 消息里的
tool_resultblock 回传(tool_use_id对应)。
计费
按 input_tokens 与 output_tokens 分别计算,与 Chat Completions 同一套单价。完整单价见 模型列表。
错误码
错误响应为 Anthropic 风格 { "type": "error", "error": { "type, message } }:
| error.type | 含义 | HTTP |
|---|---|---|
invalid_request_error | 参数错误 | 400 |
authentication_error | API Key 无效 | 401 |
permission_error | Key 无 chat 权限 | 403 |
rate_limit_error | 限流 | 429 |
api_error | 上游不可用 | 502 |
注意事项
max_tokens在 Anthropic 规范下必填,缺失会被上游或网关拒绝。- 用非 Claude 模型(GPT/Grok/Gemini)走此端点时,平台做协议翻译,
tool_use行为以对应上游能力为准。 - 还提供
POST /v1/messages/count_tokens做输入 token 粗估(供客户端预算上下文用)。