03 - Bangumi API 文档研究笔记
日期:2026-04-28
用途:下一个项目功能开发参考
API 规范版本:2026-02-22(OAS 3.0.3)
文档地址:https://bangumi.github.io/api/
规范 JSON:https://bangumi.github.io/api/dist.json
认证方式
Authorization: Bearer <Access_Token>
- Access Token 在 https://bgm.tv/dev 生成和管理
OptionalHTTPBearer:不传 token 也能访问(只读公开数据),有频率限制HTTPBearer:强制登录,适用于写操作(收藏、进度更新等)- 注意:API Token 属于敏感凭证,不要提交到 Git,建议写入服务器环境变量
Base URL
https://api.bgm.tv
接口分组总览
条目(Subject)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| GET | /calendar | 每日放送 | 可选 |
| POST | /v0/search/subjects | 条目搜索 | 可选 |
| GET | /v0/subjects | 浏览条目 | 可选 |
| GET | /v0/subjects/{subject_id} | 获取条目详情 | 可选 |
| GET | /v0/subjects/{subject_id}/image | 获取条目图片(302重定向) | 可选 |
| GET | /v0/subjects/{subject_id}/persons | 关联人物 | 可选 |
| GET | /v0/subjects/{subject_id}/characters | 关联角色 | 可选 |
| GET | /v0/subjects/{subject_id}/subjects | 关联条目 | 可选 |
条目图片 type 枚举:small / grid / large / medium / common
章节(Episode)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| GET | /v0/episodes | 获取章节列表(需传 subject_id) | 可选 |
| GET | /v0/episodes/{episode_id} | 获取章节详情 | 可选 |
角色(Character)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| POST | /v0/search/characters | 角色搜索 | 可选 |
| GET | /v0/characters/{character_id} | 角色详情 | 可选 |
| GET | /v0/characters/{character_id}/image | 角色图片 | 可选 |
| GET | /v0/characters/{character_id}/subjects | 角色相关条目 | 可选 |
| GET | /v0/characters/{character_id}/persons | 角色相关人物(声优等) | 可选 |
| POST | /v0/characters/{character_id}/collect | 收藏角色 | 必须 |
| DELETE | /v0/characters/{character_id}/collect | 取消收藏角色 | 必须 |
人物(Person)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| POST | /v0/search/persons | 人物搜索 | 可选 |
| GET | /v0/persons/{person_id} | 人物详情(60s 缓存) | 可选 |
| GET | /v0/persons/{person_id}/image | 人物图片 | 可选 |
| GET | /v0/persons/{person_id}/subjects | 人物相关条目 | 可选 |
| GET | /v0/persons/{person_id}/characters | 人物相关角色 | 可选 |
| POST | /v0/persons/{person_id}/collect | 收藏人物 | 必须 |
| DELETE | /v0/persons/{person_id}/collect | 取消收藏人物 | 必须 |
用户(User)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| GET | /v0/me | 获取当前登录用户信息 | 必须 |
| GET | /v0/users/{username} | 按用户名获取用户信息 | 可选 |
| GET | /v0/users/{username}/avatar | 获取用户头像(302重定向) | 可选 |
收藏(Collection)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| GET | /v0/users/{username}/collections | 获取用户收藏列表 | 可选(私有收藏需登录) |
| GET | /v0/users/{username}/collections/{subject_id} | 获取用户单个条目收藏 | 可选 |
| POST | /v0/users/-/collections/{subject_id} | 新增或修改条目收藏 | 必须 |
| PATCH | /v0/users/-/collections/{subject_id} | 修改收藏(部分字段) | 必须 |
| GET | /v0/users/-/collections/{subject_id}/episodes | 章节收藏信息 | 必须 |
| PATCH | /v0/users/-/collections/{subject_id}/episodes | 批量更新章节收藏 | 必须 |
| GET | /v0/users/-/collections/-/episodes/{episode_id} | 单章节收藏信息 | 必须 |
| PUT | /v0/users/-/collections/-/episodes/{episode_id} | 更新单章节收藏 | 必须 |
| GET | /v0/users/{username}/collections/-/characters | 用户角色收藏列表 | 可选 |
目录(Index)
| 方法 | 路径 | 说明 | 需要 Token |
|---|
| GET | /v0/indices/{index_id} | 目录详情 | 可选 |
| PUT | /v0/indices/{index_id} | 编辑目录信息 | 必须 |
关键枚举值
subject_type(条目类型)
collection type(收藏状态)
| 值 | 动画/三次元 | 书籍 | 游戏 |
|---|
| 1 | 想看 | 想读 | 想玩 |
| 2 | 看过 | 读过 | 玩过 |
| 3 | 在看 | 在读 | 在玩 |
| 4 | 搁置 | 搁置 | 搁置 |
| 5 | 抛弃 | 抛弃 | 抛弃 |
episode type(章节类型)
常用请求示例
获取当前用户信息
GET https://api.bgm.tv/v0/me
Authorization: Bearer <token>
搜索动画条目
POST https://api.bgm.tv/v0/search/subjects
Authorization: Bearer <token>
Content-Type: application/json
{
"keyword": "进击的巨人",
"filter": {
"type": [2]
}
}
获取条目详情
GET https://api.bgm.tv/v0/subjects/253
Authorization: Bearer <token>
获取用户收藏列表(在看的动画)
GET https://api.bgm.tv/v0/users/{username}/collections?subject_type=2&type=3&limit=30&offset=0
Authorization: Bearer <token>
新增/更新条目收藏
POST https://api.bgm.tv/v0/users/-/collections/{subject_id}
Authorization: Bearer <token>
Content-Type: application/json
{
"type": 3,
"rate": 8,
"comment": "很好看",
"private": false
}
更新章节观看进度
PUT https://api.bgm.tv/v0/users/-/collections/-/episodes/{episode_id}
Authorization: Bearer <token>
Content-Type: application/json
{
"type": 2
}
注意事项
- User-Agent:调用 API 时建议设置自定义 User-Agent,避免被限流
- 缓存:部分接口有服务端缓存(如
/v0/persons/{id} 60s 缓存) - 路径占位符:/v0/users/-/collections/... 中的 - 表示当前登录用户,只能配合 Token 使用- 图片接口:返回 302 重定向到实际图片地址,需要跟随重定向
- 问题反馈:优先使用 GitHub Issue,不要在 bangumi 小组发帖