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,请提前充值或在客户端中处理。