API
门户上能做的大部分操作都有对应的 HTTP 接口,可以用 API 令牌在脚本里调用。
认证
- 在「团队」→「API 令牌」创建令牌,选角色(只读 / 成员 / 管理员)和有效期,只显示一次,复制保存。
- 请求时带上请求头:
Authorization: Bearer mlk_xxxxxxxx
令牌属于一个组织,权限等同它的角色;用它做的写操作会记进操作日志,操作者显示为 token:<令牌名>。令牌不能用于个人设置、两步验证等和「人」有关的接口;订单支付只有所有者的登录会话能做。
约定
- 地址以面板的域名为前缀,例如
https://panel.example.com/api/machines; - 请求和响应都是 JSON;时间是 UTC;
- 列表接口分页:
?page=1&size=20(size 最大 100),响应{"items": [...], "total": N, "page": 1, "size": 20},大多数支持?q=模糊搜索; - 出错时 HTTP 状态码非 2xx,响应
{"detail": "原因"}。常见:401 未登录或令牌无效,402 超出套餐限额,403 权限不够,404 不存在,409 状态冲突,429 请求太频繁。
常用接口
| 方法 | 路径 | 说明 | 最低角色 |
|---|---|---|---|
| GET | /api/overview |
概览:实例、机器、线路数量和问题 | 只读 |
| GET | /api/machines |
机器列表(含当前 CPU / 内存 / 磁盘) | 只读 |
| POST | /api/machines |
添加机器,返回接入命令 | 管理员 |
| GET | /api/machines/{id}/metrics?range=1h |
机器监控曲线(1h / 6h / 24h / 7d) | 只读 |
| GET | /api/lines |
线路列表 | 只读 |
| POST | /api/lines |
添加线路 | 管理员 |
| POST | /api/lines/{id}/check |
触发一次出口检测 | 成员 |
| GET | /api/lines/{id}/history |
检测历史 | 只读 |
| GET | /api/templates |
可用模板 | 只读 |
| GET | /api/instances |
实例列表 | 只读 |
| POST | /api/instances |
安装实例 | 管理员 |
| POST | /api/instances/{id}/run |
启动或停止:{"run": "running"} / {"run": "stopped"} |
成员 |
| POST | /api/instances/{id}/update |
更新到最新模板版本 | 管理员 |
| GET | /api/instances/{id}/logs?tail=200 |
实例日志 | 成员 |
| POST | /api/instances/{id}/backups |
立即备份 | 管理员 |
| GET | /api/backups |
备份和还原记录 | 只读 |
| GET | /api/alerts?state=open |
进行中的告警 | 只读 |
示例
添加一条线路并检测:
curl -sS -X POST https://panel.example.com/api/lines \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name": "美国住宅", "kind": "socks5", "host": "proxy.example.com", "port": 1080, "user": "u", "password": "p"}'
curl -sS -X POST https://panel.example.com/api/lines/<线路id>/check \
-H "Authorization: Bearer $TOKEN"
安装一个实例:
curl -sS -X POST https://panel.example.com/api/instances \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"template_id": "<模板id>", "machine_id": "<机器id>", "line_id": "<线路id>", "name": "运营一号"}'
查询进行中的告警:
curl -sS "https://panel.example.com/api/alerts?state=open" -H "Authorization: Bearer $TOKEN"
接口会随版本增加字段,调用方请忽略不认识的字段。