Skip to content

REST API 参考 ​

AutoBangumi 在 /api/v1 下提供 REST API。WebUI 使用的也是这套接口。

基础 URL: http://your-host:7892/api/v1

交互式文档: 本页只列出端点和用途。请求与响应的字段以运行中实例的 http://your-host:7892/docs(Swagger UI,由 FastAPI 根据代码生成)为准。插件路由不出现在 /docs 中。

认证 ​

AB 接受两种凭据:

  • 浏览器会话:POST /auth/login 以表单字段 username、password 登录,成功后 AB 设置 HttpOnly Cookie token。WebUI 使用这种方式。
  • API 令牌:在 设置 → 用户与访问控制 → API 令牌 中创建 scope=api 的令牌(或调用 POST /tokens),明文只显示一次。请求时带上 Authorization: Bearer <令牌>。
bash
curl -H "Authorization: Bearer $AB_TOKEN" http://your-host:7892/api/v1/status
  • 请求带 Authorization 头时,AB 只校验该令牌,不再看 Cookie。
  • 未认证或凭据无效返回 401。
  • 账户管理端点(/auth/update、/users、/tokens、Passkey 的注册与管理)只接受浏览器会话,用 API 令牌访问返回 403。
  • 以下端点不需要认证:/auth/login、/passkey/auth/*、设置向导 /setup/*(GET /setup/status 始终可用,其它端点在设置完成后返回 403)和根路径的 /health。
  • /auth/refresh_token 与 /auth/logout 不看 Authorization 头,只使用会话 Cookie。refresh_token 没有有效 Cookie 时返回 401。登录与 Passkey 登录受 security.login_whitelist 限制。
  • 本地开发时,设置环境变量 AB_DEV_NO_AUTH=1 可跳过全部认证。不要在生产环境中设置它。

认证与账户 ​

方法路径说明
POST/auth/login用户名和密码登录,设置会话 Cookie
POST/auth/refresh_token延长当前会话
POST/auth/logout注销当前会话并清除 Cookie
GET/auth/me当前用户
POST/auth/update修改当前账户,并轮换它的全部会话
GET / POST/users列出 / 创建用户
PATCH / DELETE/users/{user_id}修改 / 删除用户
GET / POST/tokens列出 / 创建 API 令牌(scope 为 api 或 mcp,可设 expires_at)
DELETE/tokens/{token_id}吊销令牌
POST/passkey/register/options、/passkey/register/verify注册 Passkey
POST/passkey/auth/options、/passkey/auth/verify用 Passkey 登录
GET/passkey/list列出当前用户的 Passkey
POST/passkey/delete删除 Passkey

程序 ​

方法路径说明
GET/status版本、运行状态、是否首次运行
POST/start、/stop、/restart启动 / 停止 / 重启后台任务
POST/shutdown关闭程序
GET/check/downloader检查默认下载器是否可用
GET/log读取日志
POST/log/clear清空日志
GET/update/check查询最新版本与在线更新状态
POST/update/apply下载并应用最新更新,成功后重启
POST/update/rollback回滚到上一个更新版本,没有备份时回到镜像自带版本
GET/health(根路径,不在 /api/v1 下)存活探针,总是返回 200:{"status", "version", "db_ok"}

配置 ​

方法路径说明
GET/config/get当前配置,秘密字段已掩码
PATCH/config/update保存并重新加载配置;收到掩码的秘密字段保留原值
POST/config/llm/models列出所选 LLM 提供商的可用模型
GET/config/llm/providersLLM 提供商列表
POST/config/llm/providers/{provider_id}/install安装 LLM 提供商插件
DELETE/config/llm/providers/{provider_id}卸载 LLM 提供商插件
POST/config/llm/providers/{provider_id}/auth/begin、/auth/complete订阅类提供商的授权流程
GET/config/llm/providers/{provider_id}/auth/status授权状态
DELETE/config/llm/providers/{provider_id}/auth断开授权

番剧 ​

方法路径说明
GET/bangumi/get/all全部番剧规则
GET/bangumi/get/{bangumi_id}单个规则
PATCH/bangumi/update/{bangumi_id}修改规则
DELETE/bangumi/delete/{bangumi_id}删除规则
POST/bangumi/delete/many批量删除
POST/bangumi/disable/{bangumi_id}、/bangumi/enable/{bangumi_id}停用 / 启用规则
POST/bangumi/disable/many批量停用
PATCH/bangumi/archive/{bangumi_id}、/bangumi/unarchive/{bangumi_id}归档 / 取消归档
PATCH/bangumi/{bangumi_id}/weekday手动设置放送星期
GET/bangumi/refresh/poster/all、/bangumi/refresh/poster/{bangumi_id}刷新海报
GET/bangumi/refresh/calendar刷新放送日历
GET/bangumi/refresh/metadata刷新 TMDB 元数据,并自动归档已完结的番剧
POST/bangumi/reset/all删除全部规则
GET/bangumi/needs-review需要确认集数偏移的番剧
GET/bangumi/suggest-offset/{bangumi_id}根据 TMDB 集数建议偏移
POST/bangumi/detect-offset检测季度 / 集数与 TMDB 不一致
POST/bangumi/apply-offset/{bangumi_id}、/bangumi/apply-offset/many应用建议的偏移并触发一次重命名
POST/bangumi/dismiss-review/{bangumi_id}清除「待确认」标记
GET / DELETE/bangumi/{bangumi_id}/torrents列出 / 删除该番剧的种子记录
DELETE/bangumi/{bangumi_id}/torrents/{torrent_id}删除一条种子记录
GET / DELETE/bangumi/torrents/orphans列出 / 删除不属于任何番剧的种子记录
GET/bangumi/torrents/orphans/count孤立种子记录的数量
DELETE/bangumi/torrents/orphans/{torrent_id}删除一条孤立种子记录

电影 ​

方法路径说明
GET/movie/get/all、/movie/get/{movie_id}全部 / 单个电影规则
PATCH/movie/update/{movie_id}修改
DELETE/movie/delete/{movie_id}删除
DELETE/movie/disable/{movie_id}停用
GET/movie/enable/{movie_id}启用

RSS 订阅 ​

方法路径说明
GET/rss全部订阅
POST/rss/add添加订阅
PATCH/rss/update/{rss_id}修改订阅
DELETE/rss/delete/{rss_id}删除订阅
POST/rss/delete/many批量删除
PATCH/rss/disable/{rss_id}停用
POST/rss/disable/many、/rss/enable/many批量停用 / 启用
POST/rss/refresh/all、/rss/refresh/{rss_id}立即刷新
GET/rss/torrent/{rss_id}该订阅的种子
POST/rss/analysis解析一个 RSS 链接,返回识别出的番剧
POST/rss/collect下载整季(收集)
POST/rss/subscribe订阅

搜索 ​

方法路径说明
GET/search/bangumi?site=<站点>&keywords=<关键词>Server-Sent Events,逐条推送搜索结果;多个关键词以空格分隔
GET/search/provider可用的搜索站点(含插件提供的站点)
GET / PUT/search/provider/config读取 / 保存用户配置的搜索站点

下载器 ​

AB 4.0 可以配置多个下载器实例(plugins.instances)。种子列表合并所有实例,每条带 downloader_id。

方法路径说明
GET/downloader/instances下载器实例:{"default": <默认实例 id>, "instances": [{"id", "provider"}]}
GET/downloader/torrents所有实例的种子;不可用的实例跳过
POST/downloader/torrents/pause、/resume、/delete暂停 / 恢复 / 删除种子
POST/downloader/torrents/tag给种子打番剧 id 标签
POST/downloader/torrents/tag/auto按名称与路径为未打标签的种子自动打标签
GET/downloader/rename-conflicts等待用户处理的重命名冲突
POST/downloader/rename-conflicts/{operation_id}/retry清除一条冲突,下一轮重命名时重新检查

通知中心 ​

方法路径说明
GET / DELETE/notification/messages列出 / 清空站内通知
GET/notification/messages/unread-count未读数量
POST/notification/messages/read-all全部标为已读
POST/notification/messages/{message_id}/read标为已读
DELETE/notification/messages/{message_id}删除一条
POST/notification/test按序号测试已保存的通知渠道
POST/notification/test-config测试未保存的通知渠道配置

事件流 ​

GET /events/stream 是一条 Server-Sent Events 连接,WebUI 用它代替轮询。

event何时推送data
status每 3 秒与 GET /status 相同的结构
downloader每 5 秒所有实例的种子;下载器不可用时为 null
log每 10 秒日志尾部
update在线更新进行中且进度变化时更新进度
notification连接建立时,以及通知中心变化时通知中心状态,含未读数 unread_count
bus事件总线上有事件时{"kind": <事件名>, "payload": {...}},包括宿主事件和插件事件
bash
curl -N -H "Authorization: Bearer $AB_TOKEN" http://your-host:7892/api/v1/events/stream

bus 帧中的事件名与字段见 插件开发 → 事件。前端插件组件用 host.events.on(kind, callback) 订阅同样的帧。

插件 ​

方法路径说明
GET/plugins已发现的插件、状态、配置表单 schema 与当前配置(已掩码)
PUT/plugins/settings修改 allow_unsigned(允许未签名插件)
PUT/plugins/{plugin_id}启用 / 停用插件或修改配置,保存后立即生效;配置不合法返回 422
GET/plugins/providers插件提供的 Provider id,按扩展点分组
GET/plugins/ui已启用插件声明的前端挂载点
GET/plugins/catalog签名目录中可安装的插件;目录不可达返回 502
POST/plugins/{plugin_id}/install从签名目录安装或升级插件,并启用
DELETE/plugins/{plugin_id}卸载经签名目录安装的插件
GET/plugins/{plugin_id}/web/{path}插件 web/ 目录下的前端静态文件
任意/plugins/{plugin_id}/{path}插件自己的路由,见 REST 路由

设置向导 ​

这些端点不需要认证。GET /setup/status 始终可用,返回 need_setup(设置完成后为 false)。其它端点只在首次设置完成前可用,完成后返回 403。/setup/complete 还要求浏览器会话,或 admin 账户仍为出厂密码 adminadmin;否则返回 403。

方法路径说明
GET/setup/status是否需要设置向导
POST/setup/test-downloader测试下载器连接
POST/setup/test-rss测试 RSS 链接
POST/setup/test-notification发送测试通知
POST/setup/complete保存向导中的全部配置,并标记设置完成

MCP ​

AB 在根路径的 /mcp 提供 MCP 服务(Streamable HTTP 传输):在 MCP 客户端中把服务地址设为 http://<AB 地址>:7892/mcp。3.x 与 4.0.0-beta.2 及更早版本的 SSE 端点 /mcp/sse 已删除。

  • 访问控制与 REST API 分开:客户端 IP 在 security.mcp_whitelist 内,或请求带 scope=mcp 的令牌(Authorization: Bearer <令牌>)。mcp_whitelist 为空时拒绝所有基于 IP 的访问,令牌仍然有效。
  • 内置工具:list_anime、get_anime、search_anime、subscribe_anime、unsubscribe_anime、list_downloads、list_rss_feeds、get_program_status、refresh_feeds、update_anime。
  • 内置资源:autobangumi://anime/list、autobangumi://anime/{id}、autobangumi://status、autobangumi://rss/feeds。
  • 已启用插件提供的工具名为 <插件 id>__<id>,资源 URI 为 autobangumi://plugins/<插件 id>/<id>,见 MCP 工具与资源。

响应与错误 ​

  • 许多操作类端点返回 {"status": true, "msg_en": "...", "msg_zh": "..."}。查询类端点直接返回数据。具体结构见 /docs。
  • 错误使用标准 HTTP 状态码:401 未认证,403 无权限,404 不存在,422 参数校验失败,500 服务器错误。

AutoBangumi 基于 MIT 许可证发布。(最新版本: v4.0.0)