Anthropic 兼容 API

TokenCode 兼容 Anthropic Messages API 协议,你可以直接使用 Anthropic SDK 或任何兼容 Claude 协议的客户端连接。

Base URL

text
https://tokencode.dev

认证

所有端点需要认证:

  • Bearer TokenAuthorization: Bearer <your-api-key>
  • x-api-key 头x-api-key: <your-api-key>

Messages

Anthropic Claude 兼容的 Messages 端点。支持 Claude 模型,也支持通过协议转换调用其他模型。

bash
curl https://tokencode.dev/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "解释一下量子计算"}
    ]
  }'

请求参数:

参数 类型 必填 说明
model string 模型 ID(如 claude-sonnet-4-6
messages array 消息对象数组
max_tokens integer 最大生成 Token 数
stream boolean 是否启用流式响应
temperature number 采样温度(0-1)
top_p number 核采样概率
top_k integer Top-K 采样
stop_sequences array 停止序列
system string/array 系统提示词
tools array 工具定义
tool_choice object 工具调用策略

响应示例:

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "量子计算是一种利用量子力学原理..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

流式响应

设置 "stream": true 时,响应使用 SSE 格式,事件类型与 Anthropic 原生协议一致:

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"量子"}}

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

协议自动转换

通过 Anthropic 协议端点调用非 Claude 模型时,TokenCode 会自动完成协议转换:

  • 请求转换:将 Anthropic Messages 格式转换为目标模型的原生格式(如 OpenAI Chat Completions)
  • 响应转换:将目标模型的响应转换为 Anthropic Messages 格式返回
  • 流式适配:流式事件类型自动适配为 Anthropic 的 SSE 事件格式

这意味着你可以在 Claude Code 等 Anthropic 原生客户端中,通过本端点调用 OpenAI、Gemini 等其他模型,无需做任何适配工作。

使用 Anthropic SDK

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://tokencode.dev"
)

# 调用 Claude 模型
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}]
)

# 调用 OpenAI 模型 — 协议自动转换
message = client.messages.create(
    model="gpt-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://tokencode.dev",
});

// 调用 Claude 模型
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "你好" }],
});

多模态输入

支持图片输入(Vision):

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "描述这张图片"
                }
            ]
        }
    ]
)

错误响应

错误响应遵循 Anthropic 错误格式:

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
HTTP 状态码 含义
400 请求参数无效
401 认证失败 — API Key 无效
403 权限不足
404 模型不存在
429 速率限制或余额不足
500 服务器内部错误
529 上游服务过载