Skip to content

项目概览 ​

Sub2API 是一个面向 AI API 额度分发与运营的网关平台。管理员把上游账号或 API Key 接入系统,创建可用渠道和分组;用户通过 Sub2API 生成的 API Key 调用统一入口,系统负责鉴权、路由、并发控制、协议转换、计费和用量记录。

如果只把它理解为“反向代理”,会低估它的职责。它同时包含数据面和管理面:

  • 数据面:接收模型请求、选择账号、访问上游并返回流式或非流式结果。
  • 管理面:维护用户、API Key、账号、渠道、分组、套餐、订单、风控和运行状态。

使用前先确认合规要求

项目 README 明确提醒:共享或分发上游订阅额度可能违反服务商条款。部署者需要自行确认账号来源、使用方式、当地法律和上游服务条款。

适合哪些场景 ​

  • 团队统一管理多个 AI 平台凭证。
  • 将不同上游包装为稳定、统一的 API 入口。
  • 按用户、API Key、分组或订阅套餐管理额度。
  • 需要账号池调度、故障切换、并发限制和用量审计。
  • 构建包含充值、套餐和管理后台的自托管 AI API 服务。

不适合哪些场景 ​

  • 只需要把一个固定 API Key 转发到一个固定上游。
  • 不愿维护 PostgreSQL、Redis、备份和安全配置。
  • 无法确认上游账号共享或转售是否合规。
  • 希望系统完全无状态,或不接受计费数据的运维责任。

支持能力 ​

上游平台 ​

当前代码中的核心平台类型包括:

平台典型接入方式主要兼容能力
AnthropicOAuth、Setup Token、API Key、上游地址Messages、Count Tokens、SSE
OpenAIOAuth、API Key、兼容上游Responses、Chat Completions、Embeddings、Images、WebSocket
GeminiOAuth、API Key、Service AccountGemini 原生 API、Claude/OpenAI 兼容转换
AntigravityOAuth、API Key、上游地址Claude/Gemini 兼容调用
GrokOAuth、API KeyResponses、图片与视频相关接口
AWS BedrockSigV4 或 API KeyAnthropic 模型调用与流式响应

具体能力仍取决于账号类型、分组配置、目标模型和当前版本。

平台功能 ​

  • 用户注册、登录、第三方 OAuth 与 TOTP。
  • API Key 创建、禁用、额度和分组限制。
  • 多账号调度、粘性会话、模型映射和故障切换。
  • 用户、API Key 和账号级并发控制。
  • Token、缓存、图片、视频和按次计费。
  • 余额、订阅套餐、兑换码、推广与支付订单。
  • 渠道监控、账号测试、错误统计、告警与运维看板。
  • 数据备份、用量清理、在线升级和历史版本回退。

技术栈 ​

层级技术
后端Go 1.26.5、Gin、Wire
数据访问Ent、SQL migrations
前端Vue 3、Vite、Pinia、Tailwind CSS
数据库PostgreSQL
缓存与协调Redis
交付单二进制、Docker 镜像、Docker Compose、systemd

发布镜像会把前端静态资源嵌入 Go 二进制,因此生产环境只需要对外提供一个应用端口。

两种运行模式 ​

模式用途行为
standard正常运营部署启用余额、订阅、计费和配额检查
simple内部可信环境隐藏部分 SaaS 功能,并跳过计费和余额检查

除非是明确的内部使用场景,否则保持 RUN_MODE=standard。

下一步 ​

它解决的核心问题 ​

直接把上游 API Key 发给每个使用者,看似简单,但很快会遇到下面的问题:

问题直接共享上游 KeySub2API 的处理方式
凭证泄漏每个客户端都拿到真实凭证用户只拿到平台生成的 API Key
多账号切换客户端手动切换服务端统一调度和故障切换
并发冲突多人争用同一个订阅账号用户、API Key、账号多级并发控制
用量统计依赖各上游后台统一记录模型、Token、费用和延迟
权限隔离一个 Key 可以访问全部能力通过分组、模型范围、IP ACL 和配额限制
计费运营需要另建用户和订单系统内置余额、套餐、兑换码与支付
运行状态失败后靠用户反馈渠道监控、账号测试、错误日志和告警

因此,Sub2API 的真正价值不是改变一个 URL,而是把“上游账号资源”变成可以控制、分配、观察和结算的服务能力。

三类使用者 ​

平台管理员 ​

管理员负责资源供给与系统安全:

  1. 添加上游账号、API Key、代理和 OAuth 凭证。
  2. 创建分组并配置账号池、模型范围和计费规则。
  3. 管理用户、订阅、余额和 API Key。
  4. 查看错误、并发、账号可用率和渠道监控。
  5. 处理升级、备份、支付对账和安全事件。

API 使用者 ​

使用者登录 Web 后台创建自己的 Sub2API Key,查看可用渠道、使用记录、余额和订阅,再把 Key 配置给 Claude Code、Codex、Gemini CLI、SDK 或自建应用。

使用者不需要知道请求最终落到哪个真实账号,也不应该接触上游凭证。

二次开发者 ​

开发者通常会扩展:

  • 新的上游账号类型或 OAuth 流程。
  • 新的协议转换和模型能力。
  • 自定义支付、用户属性或外部系统嵌入。
  • 调度、计费、监控和内容审核策略。

在动手前建议先读代码目录与模块边界和请求处理链路,因为网关热路径横跨 Handler、Service、Repository 和多个协议包。

产品界面地图 ​

用户侧 ​

页面用户可以做什么
仪表盘查看余额、今日用量、趋势和订阅摘要
API Keys创建、修改、删除 Key,选择分组和查看使用方式
使用记录按时间、模型、端点和状态查询请求
可用渠道查看平台、模型、价格和渠道状态
订阅与购买查看套餐、发起支付、查询订单
兑换使用兑换码获得余额或订阅
个人资料修改登录信息、通知邮箱和 TOTP

管理员侧 ​

模块管理对象
用户状态、角色、余额、并发、分组权限和平台配额
账号上游凭证、代理、模型、并发、优先级和调度状态
分组平台、账号池、倍率、配额、模型路由和功能开关
渠道关联一个或多个分组,对外展示模型、价格和状态,并提供共享模型映射、限制和基础定价
订阅/支付套餐、订单、支付实例、促销和兑换码
风控内容审核配置、触发日志和封禁状态
运维请求指标、错误、账号健康、任务心跳和告警
系统注册、OAuth、邮件、更新、备份和运行参数

完整功能拆解见功能地图。

从安装到完成第一次请求 ​

一套最小可用配置通常按以下顺序建立:

  1. 部署应用、PostgreSQL 和 Redis。
  2. 创建管理员并完成基础安全设置。
  3. 添加代理(如果上游访问需要固定出口)。
  4. 添加至少一个上游账号并通过账号测试。
  5. 创建与账号平台一致的分组。
  6. 把账号加入分组,设置模型范围和倍率。
  7. 如需统一模型名、基础定价或用户侧展示,再创建渠道并关联分组。
  8. 创建普通用户或开放注册。
  9. 为用户授权分组,创建用户 API Key。
  10. 使用 /v1/models 查看模型列表。
  11. 发送一次最小请求,并核对用量和费用。

如果缺少账号、分组或用户授权中的任意一环,API Key 即使鉴权成功,也可能返回“无可用账号”或“未分配分组”。

网关入口速览 ​

客户端协议主要入口说明
Anthropic MessagesPOST /v1/messages根据分组平台原生转发或转换
Anthropic Count TokensPOST /v1/messages/count_tokens部分平台不支持
OpenAI ResponsesPOST /v1/responses支持流式与子路径
OpenAI Responses WSGET /v1/responsesWebSocket 入口
Chat CompletionsPOST /v1/chat/completions根据平台选择原生或桥接
EmbeddingsPOST /v1/embeddings当前要求 OpenAI 分组
Images/v1/images/generations、/v1/images/editsOpenAI/Grok 能力
Gemini 原生/v1beta/models/*Gemini SDK/CLI 兼容
Codex 直连/backend-api/codex/*模型清单、Responses、WS
Antigravity 专用/antigravity/v1/*、/antigravity/v1beta/*强制只调度 Antigravity

更完整的端点和能力差异见支持平台与接口。

需要提前知道的边界 ​

Redis 是运行依赖 ​

Redis 不只是加速页面。并发槽位、限流、粘性会话、刷新锁和后台任务选主都依赖它。Redis 长时间不可用时,系统不能被视为完全健康。

计费是一条跨组件链路 ​

请求前检查余额与订阅,请求后根据 usage 计算费用,最后更新缓存和 PostgreSQL。生产环境必须监控异步用量队列、数据库写入错误和计费去重状态。

账号凭证属于最高敏感数据 ​

数据库中会保存上游 API Key、OAuth token 和 refresh token。数据库、备份、日志、管理后台和运维人员权限都必须按凭证系统的级别保护。

回退程序不等于回退数据库 ​

数据库迁移是向前执行的。升级前备份,比“后台有版本回退按钮”更重要。

推荐阅读路线 ​

我准备部署 ​

  1. 项目概览
  2. 核心概念
  3. 系统架构
  4. 选择部署方式
  5. 配置参考
  6. 生产安全加固

我需要排查请求失败 ​

  1. 请求处理链路
  2. 鉴权与前置检查
  3. 调度、粘性与故障切换
  4. 错误分类与排查

我准备二次开发 ​

  1. 代码目录与模块边界
  2. 数据、缓存与一致性
  3. 协议转换与流式传输
  4. 用量、计费与结算

本文档用于帮助你理解、部署和运维 Sub2API。使用前请确认上游服务条款与当地法律要求。