用户信息
一次性拿到当前已鉴权用户的所有 dashboard 字段:身份、角色、所属 group、剩余配额、累计请求数、邀请状态、Sidebar 权限。返回的是经过白名单过滤的精选投影,而不是裸的数据库行。
GET
https://buzzai.cc/api/user/self
这是控制台首页的数据来源。 BUZZ Web 控制台首屏读取的全部字段都从这里来:余额、group、邀请码、UI 权限标记。它也是唯一同时返回原始
quota 整数和可读 group 名称的接口。
鉴权
本接口走 BUZZ 的标准用户鉴权链,必须同时带上以下两个 header:
| Header | 说明 |
|---|---|
Authorization: <ACCESS_TOKEN> | 裸的 Access Token,Bearer 前缀可加可不加。来自 BUZZ Web 控制台的请求也可以用 session cookie 替代。 |
Buzz-User: <user_id> | 必填。值必须等于已鉴权用户的 id,缺失或不一致都会返回 HTTP 401。 |
有个历史遗留的报错文案。 如果忘了带
Buzz-User header,网关会返回 "Unauthorized, New-Api-User header not provided"。但服务端实际读取的 header 名是 Buzz-User,New-Api-User 是上游项目残留的字符串。请发送 Buzz-User。
请求示例
curl -s 'https://buzzai.cc/api/user/self' \
-H "Authorization: Bearer $BUZZ_ACCESS_TOKEN" \
-H "Buzz-User: 1"import os, requests
resp = requests.get(
"https://buzzai.cc/api/user/self",
headers={
"Authorization": f"Bearer {os.environ['BUZZ_ACCESS_TOKEN']}",
"Buzz-User": "1",
},
timeout=10,
)
resp.raise_for_status()
profile = resp.json()["data"]
print(profile["username"], profile["group"], profile["quota"])const resp = await fetch("https://buzzai.cc/api/user/self", {
headers: {
Authorization: `Bearer ${process.env.BUZZ_ACCESS_TOKEN}`,
"Buzz-User": "1",
},
});
const { data } = await resp.json();
console.log(data.username, data.group, data.quota);实测响应(已脱敏)
{
"success": true,
"message": "",
"data": {
"id": 1,
"username": "buzz666",
"display_name": "buzz666",
"role": 100,
"status": 1,
"email": "",
"github_id": "<REDACTED_NUMERIC_ID>",
"discord_id": "",
"oidc_id": "",
"wechat_id": "",
"telegram_id": "",
"linux_do_id": "",
"group": "enterprise",
"quota": 29214128,
"used_quota": 588097249,
"request_count": 398916,
"aff_code": "tYxh",
"aff_count": 0,
"aff_quota": 0,
"aff_history_quota": 0,
"inviter_id": 0,
"setting": "{\"notify_type\":\"email\",\"quota_warning_threshold\":100000,\"gotify_priority\":0,\"record_ip_log\":true}",
"stripe_customer": "",
"sidebar_modules": "",
"permissions": {
"sidebar_modules": {},
"sidebar_settings": false
}
}
}
2026-05-26 实测于 buzzai.cc。
响应包络
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 200 时恒为 true,出错则置 false 并填充 message。 |
| message | string | 成功为空字符串,失败时为可读错误。 |
| data | object | 用户资料投影(见下)。 |
data 字段
响应是手写的字段白名单,而非数据库行的直接序列化。password、access_token、verification_code、管理员的 remark 等敏感列都会在返回前被剔除。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | integer | 用户数字 id,需与 Buzz-User 一致。 |
| username | string | 登录名。 |
| display_name | string | 控制台展示名。 |
| role | integer | 1 = 普通用户 · 10 = 管理员 · 100 = root。 |
| status | integer | 1 = 启用 · 2 = 禁用。 |
| string | 邮箱,未绑定时为空字符串。 | |
| github_id | string | GitHub 数字 id,未绑定时为空。 |
| discord_id | string | Discord id,未绑定时为空。 |
| oidc_id | string | 通用 OIDC subject,未绑定时为空。 |
| wechat_id | string | 微信 openid,未绑定时为空。 |
| telegram_id | string | Telegram 数字 id,未绑定时为空。 |
| linux_do_id | string | Linux.Do 论坛 id,未绑定时为空。 |
| group | string | 定价 / 权限 group 名(如 default、enterprise)。决定可用 channel 与价格。 |
| quota | integer | 剩余配额,以原始计费单位计。换算成货币需配合站点的展示设置(参考 Billing 接口)。 |
| used_quota | integer | 累计已消耗配额,原始单位。 |
| request_count | integer | 该用户累计的 API 请求次数。 |
| aff_code | string | 该用户专属的邀请码。 |
| aff_count | integer | 用此邀请码注册的用户数。 |
| aff_quota | integer | 当前可兑换的邀请配额。 |
| aff_history_quota | integer | 累计获得的邀请配额(已兑换 + 未兑换)。 |
| inviter_id | integer | 邀请人 user id,直接注册则为 0。 |
| setting | string | JSON 字符串形式的用户偏好。客户端自行解析,常见键:notify_type、quota_warning_threshold、record_ip_log。 |
| stripe_customer | string | Stripe Customer ID,未走过 Stripe 充值则为空。 |
| sidebar_modules | string | 从 setting.sidebar_modules 提取的个人 Sidebar 覆写,空字符串表示走站点默认。 |
| permissions | object | { sidebar_settings: bool, sidebar_modules: object },控制 Web 控制台模块的渲染。 |
已显式排除的字段
handler 用白名单方式手写返回字段,以下列即使在 root 账号上也永远不会出现在响应里:
password、original_password— 凭据access_token— 用户自己的 access token(你已经有了,不会再回显)verification_code— 注册 / 邮件验证用的临时码remark— 管理员备注,服务端在序列化前清空deleted_at、created_at、last_login_at、last_active_at— 内部生命周期时间戳
错误码
| HTTP | 响应体 | 典型场景 |
|---|---|---|
| 401 | {"success":false,"message":"Unauthorized, ..."} | Authorization 缺失或非法;Buzz-User 缺失或不匹配;账号被禁用。 |
| 429 | 限流响应包络 | 命中全局速率限制,遵守 retry-after。 |
| 500 | {"success":false,"message":"..."} | 服务端取用户记录失败,带退避重试。 |
相关链接
- Billing 接口 — 把
quota换算成货币、查 usage GET /api/token/— 管理sk-API token- 鉴权指南 — Access Token 与 User Token 的区别