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. 为用户授权分组,创建用户 API Key。
  9. 使用 /v1/models 查看模型列表。
  10. 发送一次最小请求,并核对用量和费用。

如果缺少账号、分组或用户授权中的任意一环,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。使用前请确认上游服务条款与当地法律要求。