Anthropic API 接口
Upthos Relay 提供与 Anthropic Messages API 完全兼容的接口。任何支持自定义 base URL 的 Anthropic 客户端(官方 SDK、Claude Code、第三方应用)都可以直接接入。
基础信息
| 项 | 值 |
|---|---|
| Base URL | https://relay.upthos.com |
| 协议 | Anthropic Messages API |
anthropic-version |
2023-06-01(稳定版) |
| 内容编码 | application/json(请求/响应);text/event-stream(SSE 流式) |
鉴权
按以下优先级三选一在请求头中携带 API Key:
Authorization: Bearer sk-...
x-api-key: sk-...
x-goog-api-key: sk-...
API Key 在 控制台 → API 密钥 创建,必须分配到一个 Anthropic 协议分组才能调用本节接口。
安全提示:API Key 等同账号凭证,请勿提交到代码仓库或公开分享。
端点
POST /v1/messages
发送一次对话请求。请求体、响应体、SSE 事件流与 Anthropic 官方一致。
必填字段:model、max_tokens、messages
常用可选字段:system、temperature、top_p、stop_sequences、tools、tool_choice、stream、thinking
非流式示例:
curl https://relay.upthos.com/v1/messages \
-H "Authorization: Bearer $UPTHOS_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "你好" }
]
}'
流式示例(SSE):
curl -N https://relay.upthos.com/v1/messages \
-H "Authorization: Bearer $UPTHOS_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"stream": true,
"messages": [{ "role": "user", "content": "用一句话介绍自己" }]
}'
官方 SDK:
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
baseURL: 'https://relay.upthos.com',
apiKey: process.env.UPTHOS_API_KEY,
})
const msg = await client.messages.create({
model: 'claude-sonnet-4-5',
max_tokens: 1024,
messages: [{ role: 'user', content: '你好' }],
})
from anthropic import Anthropic
client = Anthropic(
base_url="https://relay.upthos.com",
api_key=os.environ["UPTHOS_API_KEY"],
)
msg = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
POST /v1/messages/count_tokens
输入 token 数预估。请求体格式同 /v1/messages,但不会真正调用模型,也不计费。
GET /v1/models
返回当前 API Key 所属分组可调用的模型列表。响应格式:
{
"object": "list",
"data": [
{ "id": "claude-sonnet-4-5", "type": "model", "display_name": "claude-sonnet-4-5", "created_at": "2024-01-01T00:00:00Z" }
]
}
GET /v1/usage
返回当前 API Key 的余额与累计用量,主要用于 CC Switch 等客户端的额度展示。
错误格式
错误响应遵循 Anthropic 官方格式:
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "API key is required in Authorization header (Bearer scheme), x-api-key header, or x-goog-api-key header"
}
}
常见 error.type:
| type | HTTP | 说明 |
|---|---|---|
authentication_error |
401 | API Key 缺失或无效 |
permission_error |
403 | Key 未分配分组、权限不足 |
not_found_error |
404 | 路径或资源不存在 |
rate_limit_error |
429 | 触发速率/并发限制 |
overloaded_error |
503 | 上游过载或暂无可用账户 |
api_error |
5xx | 网关或上游内部错误 |
限制与差异
- 单请求 body 上限由网关配置
Gateway.MaxBodySize控制;图片/长文本场景请关注。 - 速率与并发由分组配置叠加在 API Key 上,超限会返回
rate_limit_error。 model名走分组的 model_mapping,可能与官方 ID 不完全一致;以GET /v1/models为准。- 余额不足时
/v1/messages会返回permission_error,请提前充值或在客户端中处理。