sub2api 全量 Admin API 命令行工具,覆盖全部 323 个 admin 接口,29 个资源域。
npx sub2api-cli --helpnpm install -g sub2api-cli安装后即可直接使用 s2a 命令:
s2a --helpgit clone https://github.com/your-username/sub2api-cli.git
cd sub2api-cli
npm install
npm run build
npm link # 全局链接,之后可直接用 s2a本项目内置 Agent Skill,支持 Claude Code、VS Code Copilot、Cursor、Codex 等 70+ AI Agent。安装后 Agent 可自动识别并使用 s2a CLI。
通过 npx skills 一键安装(推荐):
# 安装到当前项目
npx skills add yunhai-dev/sub2api-cli
# 全局安装(所有项目可用)
npx skills add yunhai-dev/sub2api-cli -g
# 指定 Agent 安装
npx skills add yunhai-dev/sub2api-cli -a claude-code
npx skills add yunhai-dev/sub2api-cli -a copilot -a cursor
# 查看可用的 Skills
npx skills add yunhai-dev/sub2api-cli --listClaude Code、VS Code Copilot、Cursor、OpenAI Codex、OpenCode、Roo Code、Goose、Amp、Kiro 等 70+ Agent。
安装后在 Agent 中输入 /sub2api 即可调用,或直接用自然语言描述需求(如 "列出所有用户"),Agent 会自动加载 Skill 并执行对应命令。
在 ~/.zshrc 或 ~/.bashrc 中添加:
export SUB2API_BASE_URL="https://your-sub2api-instance.com"
export SUB2API_ADMIN_KEY="admin-your-api-key-here"然后重新加载:
source ~/.zshrc也可以通过 --url 和 --key 临时指定,优先级高于环境变量:
s2a --url https://api.example.com --key admin-xxx users list获取 Admin API Key:登录 sub2api 管理后台 → 设置 → Admin API Key,或使用命令
s2a settings admin-key-get。
# 查看系统版本
s2a system version
# 列出所有用户
s2a users list
# 查看全部可用命令域
s2a domains# 列出用户(分页)
s2a users list
s2a users list --page 2 --page-size 50
s2a users list --search "test" # 搜索
s2a users list --status active # 按状态筛选
s2a users list --all # 拉取全部分页数据
# 获取用户详情
s2a users get <用户ID>
# 创建用户
s2a users create --json '{
"email": "user@example.com",
"password": "your-password",
"concurrency": 5,
"rpm_limit": 60
}'
# 更新用户
s2a users update <用户ID> --json '{"status": "inactive"}'
# 删除用户
s2a users delete <用户ID>
# 更新余额(充值/扣减)
s2a users update-balance <用户ID> --json '{
"balance": 100,
"operation": "add",
"notes": "充值"
}'
# 查看用户的 API Keys
s2a users api-keys <用户ID>
# 查看用户用量
s2a users usage <用户ID>
# 查看用户订阅
s2a users subscriptions <用户ID># 列出账号
s2a accounts list
s2a accounts list --platform claude --status active
# 创建账号
s2a accounts create --json '{
"name": "my-claude-account",
"platform": "claude",
"type": "oauth",
"credentials": {"token": "your-oauth-token"},
"concurrency": 10,
"priority": 1,
"group_ids": [1, 2]
}'
# 测试账号连通性
s2a accounts test <账号ID>
# 刷新账号
s2a accounts refresh <账号ID>
# 获取可用模型列表
s2a accounts models <账号ID>
# 批量创建
s2a accounts batch --json '{"accounts": [...]}'
# 导出账号数据
s2a accounts export
# 导入账号数据
s2a accounts import --json '...'# 列出分组
s2a groups list
s2a groups all # 全部分组(不分页)
# 创建分组
s2a groups create --json '{
"name": "pro",
"platform": "anthropic",
"rate_multiplier": 2.0,
"is_exclusive": false
}'
# 更新分组
s2a groups update <分组ID> --json '{"rate_multiplier": 3.0}'
# 删除分组
s2a groups delete <分组ID>
# 查看分组统计
s2a groups stats <分组ID>
# 获取分组的 API Keys
s2a groups api-keys <分组ID>
# 获取分组的订阅
s2a groups subscriptions <分组ID># 列出订阅
s2a subscriptions list
s2a subscriptions list --user-id 1 --group-id 2
# 分配订阅给用户
s2a subscriptions assign --json '{
"user_id": 1,
"group_id": 2,
"validity_days": 30
}'
# 批量分配
s2a subscriptions bulk-assign --json '{
"user_ids": [1, 2, 3],
"group_id": 2,
"validity_days": 30
}'
# 延长订阅
s2a subscriptions extend <订阅ID> --json '{"days": 30}'
# 撤销订阅
s2a subscriptions revoke <订阅ID># 获取全部设置
s2a settings get
# 更新设置
s2a settings update --json '{"site_name": "MyAPI"}'
# Admin API Key 管理
s2a settings admin-key-get # 查看状态
s2a settings admin-key-regenerate # 重新生成
s2a settings admin-key-delete # 删除
# 子设置项
s2a settings overload-cooldown # 过载冷却
s2a settings stream-timeout # 流超时
s2a settings beta-policy # Beta 策略
s2a settings web-search-emulation # Web Search 模拟# 列出代理
s2a proxies list
s2a proxies all # 全部(不分页)
# 创建代理
s2a proxies create --json '{
"name": "my-proxy",
"protocol": "http",
"host": "127.0.0.1",
"port": 7890
}'
# 测试代理
s2a proxies test <代理ID>
# 批量创建
s2a proxies batch --json '{"proxies": [...]}'s2a dashboard snapshot # 仪表盘快照
s2a dashboard stats # 统计数据
s2a dashboard realtime # 实时指标
s2a dashboard trend # 用量趋势
s2a dashboard models # 模型统计
s2a dashboard users-ranking # 用户消费排行# 实时状态
s2a ops concurrency # 并发统计
s2a ops realtime-traffic # 实时流量
s2a ops account-availability # 账号可用性
# 告警管理
s2a ops alert-rules # 告警规则列表
s2a ops alert-events # 告警事件列表
s2a ops create-alert-rule --json '...' # 创建告警规则
# 错误日志
s2a ops request-errors # 请求错误
s2a ops upstream-errors # 上游错误
s2a ops resolve-request-error <错误ID> # 标记已解决
# 系统日志
s2a ops system-logs # 系统日志
s2a ops dashboard-snapshot # 运维仪表盘# 兑换码
s2a redeem-codes list
s2a redeem-codes generate --json '{
"count": 10,
"type": "balance",
"value": 100
}'
s2a redeem-codes stats
# 优惠码
s2a promo-codes list
s2a promo-codes create --json '...'s2a system version # 当前版本
s2a system check-updates # 检查更新
s2a system update --json '{}' # 执行更新
s2a system restart # 重启服务对于任何未覆盖或新增的接口,使用 raw 命令直接发送请求:
# GET 请求
s2a raw GET /admin/some/new/endpoint
# POST 请求
s2a raw POST /admin/some/endpoint --json '{"key": "value"}'
# 带查询参数
s2a raw GET /admin/some/endpoint --query "page=1&page_size=10"
# 从文件读取请求体
s2a raw POST /admin/some/endpoint --json @body.json
# 从 stdin 读取
cat body.json | s2a raw POST /admin/some/endpoint --json -| 选项 | 说明 | 默认值 |
|---|---|---|
--url <url> |
API Base URL | 读取 SUB2API_BASE_URL 环境变量 |
--key <key> |
Admin API Key | 读取 SUB2API_ADMIN_KEY 环境变量 |
--output <format> |
输出格式:json 或 table |
json |
--data-only |
仅输出 data 字段,去掉 code/message 包装 | false |
--compact |
紧凑结构输出(同结构数组→cols/rows,节省 Agent token) | false |
--quiet |
静默模式,仅错误时输出 | false |
--version |
显示版本号 | |
--help |
显示帮助 |
s2a users list{
"code": 0,
"message": "success",
"data": {
"items": [...],
"total": 42,
"page": 1,
"page_size": 20,
"pages": 3
}
}s2a users list --output tableid email role status balance
-- ----- ---- ------ -------
1 admin@example.com admin active 10000
2 user@example.com user active 500
共 2 条记录,当前第 1/1 页
s2a users list --data-only{
"items": [...],
"total": 42
}# 列表数据压缩(推荐 Agent 使用)
s2a users list --compact
s2a accounts list --all --compact --data-only
# 配合其他选项组合
s2a accounts list --platform openai --status active --compact --data-only
s2a ops account-availability --compact --data-only将同结构的对象数组转为 {cols, rows} 格式,消除重复的 key 名,数据不丢失,仅优化结构:
// 普通输出(每个对象重复 key)
{"items": [{"id":1,"name":"a","status":"active"}, {"id":2,"name":"b","status":"active"}]}
// 紧凑输出(key 只出现一次)
{"items": {"cols":["id","name","status"], "rows":[[1,"a","active"], [2,"b","active"]]}}递归处理嵌套数组(如账号中的 account_groups、groups),典型节省 30-40% 字符数。推荐 AI Agent 始终使用 --compact --data-only 组合。
# 获取版本号
version=$(s2a system version --data-only --quiet | jq -r '.version')
# 获取用户数量
total=$(s2a users list --data-only --quiet | jq '.total')
# 紧凑模式 + jq 转 CSV(适合数据导出)
s2a accounts list --page-size 10 --compact --data-only --quiet | jq -r '
(.items.cols | join(",")),
(.items.rows[] | [.[0:5][] | tostring] | join(","))
'
# 输出:id,name,notes,platform,type
# 116,aatu3942@outlook.com,,openai,oauth
# 77,aigi9423@outlook.com,,openai,oauth所有 list 命令支持分页参数:
s2a users list --page 2 --page-size 50 # 第2页,每页50条
s2a users list --all # 自动拉取全部分页并合并| 域 | 命令 | 说明 |
|---|---|---|
users |
s2a users |
用户管理(19 个命令) |
groups |
s2a groups |
分组管理(18 个命令) |
accounts |
s2a accounts |
账号管理(44 个命令) |
subscriptions |
s2a subscriptions |
订阅管理(8 个命令) |
settings |
s2a settings |
系统设置(26 个命令) |
dashboard |
s2a dashboard |
仪表盘(13 个命令) |
ops |
s2a ops |
运维监控(44 个命令) |
usage |
s2a usage |
用量记录(7 个命令) |
system |
s2a system |
系统管理(5 个命令) |
proxies |
s2a proxies |
代理管理(14 个命令) |
announcements |
s2a announcements |
公告管理(6 个命令) |
redeem-codes |
s2a redeem-codes |
兑换码管理(10 个命令) |
promo-codes |
s2a promo-codes |
优惠码管理(6 个命令) |
channels |
s2a channels |
渠道管理(7 个命令) |
channel-monitors |
s2a channel-monitors |
渠道监控(7 个命令) |
channel-monitor-templates |
s2a channel-monitor-templates |
渠道监控模板(7 个命令) |
data-management |
s2a data-management |
数据管理(17 个命令) |
backup |
s2a backup |
备份管理(11 个命令) |
user-attributes |
s2a user-attributes |
用户属性(6 个命令) |
api-keys |
s2a api-keys |
API Key 管理(1 个命令) |
compliance |
s2a compliance |
合规管理(2 个命令) |
error-passthrough-rules |
s2a error-passthrough-rules |
错误透传规则(5 个命令) |
tls-fingerprint-profiles |
s2a tls-fingerprint-profiles |
TLS 指纹配置(5 个命令) |
scheduled-test-plans |
s2a scheduled-test-plans |
定时测试计划(5 个命令) |
risk-control |
s2a risk-control |
内容风控(8 个命令) |
affiliates |
s2a affiliates |
邀请返利(9 个命令) |
openai |
s2a openai |
OpenAI OAuth(7 个命令) |
gemini |
s2a gemini |
Gemini OAuth(3 个命令) |
antigravity |
s2a antigravity |
Antigravity OAuth(3 个命令) |
使用 s2a <域> --help 查看该域下所有可用命令。
| 变量 | 说明 | 示例 |
|---|---|---|
SUB2API_BASE_URL |
sub2api 实例地址 | https://api.example.com |
SUB2API_ADMIN_KEY |
Admin API Key | admin-abc123... |
如果在项目目录内运行 npx sub2api-cli 出现此错误,请切换到非项目目录再执行,或使用全局安装方式。
确保 Admin API Key 格式正确(以 admin- 开头),且该 Key 在 sub2api 后台中处于启用状态。
确认 SUB2API_BASE_URL 不含尾部斜杠,且该地址可从当前网络环境访问。
MIT