用户账号 API

baozi 个人用户(登录后)查询自己的资料 + 管理自己的 API Token。

核心场景:登录 baozi → 拿个人 user info → 创/查/禁用个人 API Token → 用 Token 调 baozi 模型。

鉴权

所有 /api/me/* 接口都需要 baozi 用户登录(OIDC)。

鉴权方式 适用
Cookie baozi_token 浏览器调用(自动带)
Authorization: Bearer <baozi_token> 服务端调用

1. 查询当前用户

GET /api/me

返回当前登录用户的基本信息。

请求:无 body。

响应 200

{
  "success": true,
  "data": {
    "id": 42,
    "username": "zhangsan",
    "email": "zhangsan@example.com",
    "display_name": "张三",
    "avatar_url": "https://...",
    "created_at": 1730000000000,
    "tier": "free"
  }
}

错误码

HTTP code 含义
401 AUTH_REQUIRED 未登录或 token 无效

2. 创个人 API Token

POST /api/me/token

为当前用户创建一个 baozi 平台 API Token,可用于调 baozi 模型(OpenAI 兼容协议)。

请求 body

字段 类型 必填 说明
name string Token 名称,仅作标识
model_limits string[] 限制可调模型,逗号分隔;空=不限
expired_time number Unix 毫秒;-1=永不过期;默认 -1

示例

curl -X POST https://baozi.ohoooho.com/api/me/token \
  -H "Authorization: Bearer $BAOZI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-app-key", "expired_time": -1}'

响应 200

{
  "success": true,
  "data": {
    "id": 123,
    "key": "sk-baozi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "my-app-key",
    "expired_time": -1,
    "created_at": 1730000000000
  }
}

⚠️ key 字段仅在创建时返回一次,请妥善保存。

错误码

HTTP code 含义
400 MISSING_NAME 未传 name
401 AUTH_REQUIRED 未登录
429 RATE_LIMITED Token 创建过快

3. 查询个人 Token 列表

GET /api/me/tokens

请求:无 body。

查询参数

参数 类型 默认 说明
limit number 20 最多返回条数
offset number 0 跳过条数

响应 200

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 123,
        "name": "my-app-key",
        "key_preview": "sk-baozi-xxxxxx...xxxx",
        "expired_time": -1,
        "created_at": 1730000000000,
        "status": 1
      }
    ],
    "total": 1
  }
}

Token 完整 key 不会再次返回,只会返回 key_preview(首 6 + 尾 4 字符)。

status 含义

含义
1 启用
2 禁用
4 已过期

完整示例:浏览器登录 → 创 Token → 调模型

// 1. 浏览器走 OIDC 登录(baozi 内部会自动处理)
// 登录成功后,浏览器自动带 baozi_token cookie

// 2. 创个人 Token
const r = await fetch("/api/me/token", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  credentials: "include",  // 带 baozi_token cookie
  body: JSON.stringify({ name: "my-app" }),
});
const { data: { key } } = await r.json();

// 3. 用 Token 调 baozi 模型(OpenAI 兼容协议)
const chat = await fetch("https://llm.ohoooho.com/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${key}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-4o-mini",
    messages: [{ role: "user", content: "你好" }],
  }),
});

联系 baozi

文档不全?发邮件到 support@ohoooho.com 或在飞书群里 @ 闲云。

文档问题反馈:飞书群 @ 闲云 · 用户账号 API