Claude Messages
Claude 原生接口使用 POST /v1/messages、x-api-key 和 anthropic-version。请求正文与 OpenAI Chat Completions 不同。
curl 示例
bash
# Claude 原生端点使用 x-api-key,不使用 Authorization: Bearer。
curl https://sprelaytoken.com/v1/messages \
-H "x-api-key: $SPRELAY_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 512,
"messages": [
{"role": "user", "content": "解释 API 中转服务的作用。"}
]
}'anthropic-version 是协议版本请求头;max_tokens 限制最多生成的 Token;messages 中第一条 user 内容是本次问题。JSON 内不能写注释,修改时不要删除必需的逗号和引号。
Python SDK
python
# Anthropic 是官方 Claude SDK 的客户端类,os 用来读取环境变量。
import os
from anthropic import Anthropic
# Claude SDK 的 base_url 使用根域名,SDK 会追加 /v1/messages。
client = Anthropic(
api_key=os.environ["SPRELAY_API_KEY"],
base_url="https://sprelaytoken.com",
)
# max_tokens 是 Claude Messages 的必填参数之一。
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=512,
messages=[
{"role": "user", "content": "解释 API 中转服务的作用。"}
],
)
# content 是内容块数组;纯文本示例读取第一个块的 text。
print(message.content[0].text)JavaScript SDK
javascript
// 安装 @anthropic-ai/sdk 后,从包中导入客户端。
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
apiKey: process.env.SPRELAY_API_KEY,
baseURL: 'https://sprelaytoken.com',
})
// baseURL 不带 /v1,SDK 负责补全 Claude 原生路径。
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 512,
messages: [{ role: 'user', content: '解释 API 中转服务的作用。' }],
})
// content 是内容块数组;生产代码应按块类型分别处理。
console.log(message.content)关键差异
max_tokens是 Messages 请求中的必需字段之一。- 系统提示通常使用顶层
system,不是messages中的system角色。 - 返回正文位于
content数组,不是 OpenAI 的choices。 - Base URL 使用
https://sprelaytoken.com,SDK会添加/v1/messages。
常见错误
同时发送 Bearer 和错误的 x-api-key
保持鉴权来源唯一,推荐 Claude 原生请求只使用 x-api-key。多个值不一致会导致排查困难。
忘记 anthropic-version
原生请求应发送受支持的版本头。示例使用 2023-06-01。
把 OpenAI 消息字段直接复制过来
工具调用、多模态内容和系统提示的结构存在差异。先使用上面的纯文本最小请求,再按 Anthropic 协议增加内容块。
