将 tenbin.ai (天秤AI by GMO) 的 Web API 转换为标准 Anthropic Messages API 格式的代理服务器,并附带账号池、API Key 管理、二级中转商(reseller)、在线支付与代理池等运营功能。
一句话:Tenbin web2api / Claude 逆向代理——把 tenbin.ai 网页版能力封装成 Anthropic 兼容接口,支持 Claude Opus 4.8 / 4.7 / 4.6 / 4.5、Claude Sonnet 4.6 / 4.5、Claude Haiku 4.5,可直接接入 Claude Code、Cursor、Cline 等客户端。
关键词 / Keywords:Tenbin、天秤AI、web2api、web2api 代理、Claude Opus 4.8、Claude Sonnet 4.6、Claude Haiku 4.5、Anthropic Messages API、Anthropic API 代理、Claude API proxy、Claude 逆向 / reverse proxy、Claude Code、Cursor、Cline、Turnstile、Capsolver、Redis、Docker 部署。
Client (Anthropic API format)
│
▼
┌──────────────────────┐
│ tenbin-api-proxy │
│ localhost:8282 │
├──────────────────────┤
│ 1. Solve Turnstile │ ← Capsolver / Manual
│ 2. Issue exec token │ ← GraphQL
│ 3. Start conversation│ ← GraphQL mutation
│ 4. Poll for response │ ← GraphQL query (polling)
│ 5. Format response │ → Anthropic API format
└──────────────────────┘
│
▼
tenbin.ai GraphQL API
数据层为 Redis 优先(lib/db.js / lib/redis-client.js):配置了 Redis 时所有账号、API Key、订单等持久化在 Redis;未配置 Redis 时首次启动会自动从本地 db.json 迁移并回退到本地文件。账号池与 API Key 不再写在 config.json 里,而是在 dashboard 管理。
cd tenbin-api-proxy
npm install生产部署建议走 Docker(
node:20-slim,glibc 2.36)。cycletls依赖 glibc 2.32+,CentOS 7/8、RHEL 8 等老系统裸跑会报GLIBC_2.34 not found。详见deploy/部署指南.md。
复制模板 config.example.json 为 config.json 并填入真实密钥(config.json 已在 .gitignore,不会上传):
账号(sessionId)与对外 API Key 在启动后通过 dashboard 添加,不写进 config.json。
- 浏览器登录 https://biz.tenbin.ai
- F12 → Application → Cookies →
sessionId - 在 dashboard 的账号池里粘贴该 sessionId(或用账号登录功能自动获取)
npm start # node index.js
# 或开发模式:npm run dev (node --watch)启动后:
完全兼容 Anthropic Messages API 格式(同时提供别名 POST /messages):
curl http://localhost:8282/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxx" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 4096,
"messages": [
{"role": "user", "content": "你好,请介绍一下自己"}
]
}'不传
model时使用默认模型claude-sonnet-4-6;传入不受支持的模型会返回400 invalid_request_error,并附上受支持模型列表。
curl http://localhost:8282/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxx" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 4096,
"stream": true,
"messages": [
{"role": "user", "content": "写一首诗"}
]
}'curl http://localhost:8282/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxx" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 4096,
"system": "你是一个专业的翻译助手",
"messages": [
{"role": "user", "content": "翻译:Hello World"}
]
}'curl http://localhost:8282/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxx" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 4096,
"messages": [
{"role": "user", "content": "1+1等于多少?"},
{"role": "assistant", "content": "1+1等于2。"},
{"role": "user", "content": "那再加3呢?"}
]
}'对外通过 dashboard 创建的 API Key(sk- 前缀) 鉴权,支持两种 header(任选其一):
# 1. Authorization: Bearer
curl -H "Authorization: Bearer sk-xxxxxxxx" ...
# 2. x-api-key
curl -H "x-api-key: sk-xxxxxxxx" ...每个 API Key 可在 dashboard 设置:绑定账号、有效期、启用/禁用、并发上限、每日 Capsolver 上限等。 若系统中尚未创建任何 API Key,则鉴权中间件会跳过校验(向下兼容,便于本地自用)。
获取受支持的模型列表(只暴露 id 与 display_name):
curl http://localhost:8282/v1/models查询当前账号池的积分余额。
健康检查:
curl http://localhost:8282/health经 Tenbin GraphQL 验证、当前实际支持的模型(见 lib/models.js)。对外使用语义化短名,不接受带日期的旧式 id;Claude 3.x / 3.5 / 3.7 已不支持(Tenbin 会返回 "Old model using" 错误),因此不再映射。
| 对外 id(短名) | 显示名 | Tenbin 内部名 |
|---|---|---|
claude-opus-4-8 |
Claude Opus 4.8 | AnthropicClaude48Opus |
claude-opus-4-7 |
Claude Opus 4.7 | AnthropicClaude47Opus |
claude-opus-4-6 |
Claude Opus 4.6 | AnthropicClaude46Opus |
claude-opus-4-5 |
Claude Opus 4.5 | AnthropicClaude45Opus |
claude-sonnet-4-6 |
Claude Sonnet 4.6 | AnthropicClaude46Sonnet |
claude-sonnet-4-5 |
Claude Sonnet 4.5 | AnthropicClaude45Sonnet |
claude-haiku-4-5 |
Claude Haiku 4.5 | AnthropicClaude45Haiku |
- 默认模型(不传
model时):claude-sonnet-4-6 - 也接受形如
claude-4-8-opus的别名;同样接受直接传 Tenbin 内部名(如AnthropicClaude48Opus)。 - 响应里的
model字段始终回写为对外短名,不会泄露 Tenbin 内部代号。
管理后台 /dashboard 提供整套运营能力:
- 账号池管理:添加 / 批量补号(bulk-login)/ 健康探测 sessionId 是否仍可用。
- API Key 管理:签发
sk-Key、绑定账号、有效期 / 并发 / 每日 Capsolver 上限、用量统计。 - 二级中转商 reseller:管理员创建 reseller,reseller 用自己的 loginKey 登录,仅可见自己的 API Keys 与设置(含各自的
capsolverKey)。详见lib/reseller-manager.js。 - 代理 / 经办人(agent)标签与分润:给每个 Key 打上经办人标签,聚合统计 Key 数 / Capsolver 消耗 / token 总量,并支持优惠码与分润。详见
lib/agent-manager.js、lib/payment-manager.js。 - 在线支付:EasyPay 聚合支付(支付宝 / 微信)与 epusdt(USDT)收款,回调后自动签发并绑定 API Key。用户购买页为
/user。详见lib/payment-manager.js。 - 代理池:支持山辰代理(
lib/shanchendaili.js)与手动代理录入,可按 IP 维度限制每 IP 账号数。
将 Base URL 设为 http://localhost:8282,API Key 填 dashboard 签发的 sk- Key。
import anthropic
client = anthropic.Anthropic(
base_url="http://localhost:8282",
api_key="sk-xxxxxxxx"
)
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
)
print(message.content[0].text)- 每次请求需要解决 Turnstile 验证,Capsolver 约需 5–15 秒。
- sessionId 有效期有限,过期后需要在 dashboard 重新获取 / 补号。
- 多轮对话通过 context 注入实现,非原生多轮。
- 建议配置多个账号实现负载均衡,并按需配置代理池。
- 生产环境推荐 Docker 部署 + Redis 持久化,详见
deploy/部署指南.md。
- QQ 群:1078971512
如果这个项目对你有帮助,欢迎请作者喝杯咖啡 ☕
| 支付宝 | 微信支付 |
|---|---|
![]() |
![]() |


{ "port": 8282, "turnstile": { "siteKey": "0x4AAAAAABGR2exxRproizri", "websiteUrl": "https://tenbin.ai", "solver": "capsolver", // "capsolver" 或 "manual" "capsolverKey": "CAP-xxx...", // Capsolver API Key "manualToken": "" // solver=manual 时填入 }, "polling": { "interval": 500, // 轮询间隔 (ms) "timeout": 300000 // 超时时间 (ms) }, "defaultModel": "AnthropicClaude46Opus", "proxy": { // 代理池,全部留空表示未配置,需在 dashboard 配置 "enabled": false, "apiUrl": "", "apiKey": "", "defaultTime": null, "defaultCount": null, "maxAccountsPerIp": null } }