BUZZ AI Gateway
文档 · API 参考 · GET /api/user/self

用户信息

一次性拿到当前已鉴权用户的所有 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

响应包络

字段类型说明
successboolean200 时恒为 true,出错则置 false 并填充 message
messagestring成功为空字符串,失败时为可读错误。
dataobject用户资料投影(见下)。

data 字段

响应是手写的字段白名单,而非数据库行的直接序列化。passwordaccess_tokenverification_code、管理员的 remark 等敏感列都会在返回前被剔除。

字段类型说明
idinteger用户数字 id,需与 Buzz-User 一致。
usernamestring登录名。
display_namestring控制台展示名。
roleinteger1 = 普通用户 · 10 = 管理员 · 100 = root。
statusinteger1 = 启用 · 2 = 禁用。
emailstring邮箱,未绑定时为空字符串。
github_idstringGitHub 数字 id,未绑定时为空。
discord_idstringDiscord id,未绑定时为空。
oidc_idstring通用 OIDC subject,未绑定时为空。
wechat_idstring微信 openid,未绑定时为空。
telegram_idstringTelegram 数字 id,未绑定时为空。
linux_do_idstringLinux.Do 论坛 id,未绑定时为空。
groupstring定价 / 权限 group 名(如 defaultenterprise)。决定可用 channel 与价格。
quotainteger剩余配额,以原始计费单位计。换算成货币需配合站点的展示设置(参考 Billing 接口)。
used_quotainteger累计已消耗配额,原始单位。
request_countinteger该用户累计的 API 请求次数。
aff_codestring该用户专属的邀请码。
aff_countinteger用此邀请码注册的用户数。
aff_quotainteger当前可兑换的邀请配额。
aff_history_quotainteger累计获得的邀请配额(已兑换 + 未兑换)。
inviter_idinteger邀请人 user id,直接注册则为 0
settingstringJSON 字符串形式的用户偏好。客户端自行解析,常见键:notify_typequota_warning_thresholdrecord_ip_log
stripe_customerstringStripe Customer ID,未走过 Stripe 充值则为空。
sidebar_modulesstringsetting.sidebar_modules 提取的个人 Sidebar 覆写,空字符串表示走站点默认。
permissionsobject{ sidebar_settings: bool, sidebar_modules: object },控制 Web 控制台模块的渲染。

已显式排除的字段

handler 用白名单方式手写返回字段,以下列即使在 root 账号上也永远不会出现在响应里:

错误码

HTTP响应体典型场景
401{"success":false,"message":"Unauthorized, ..."}Authorization 缺失或非法;Buzz-User 缺失或不匹配;账号被禁用。
429限流响应包络命中全局速率限制,遵守 retry-after
500{"success":false,"message":"..."}服务端取用户记录失败,带退避重试。

相关链接