Skip to content

REST API リファレンス ​

AutoBangumi は /api/v1 以下で REST API を提供します。WebUI も同じ API を使います。

ベース URL: http://your-host:7892/api/v1

対話式ドキュメント: このページにはエンドポイントと用途だけを載せています。リクエストとレスポンスのフィールドは、動作中のインスタンスの http://your-host:7892/docs(FastAPI がコードから生成する Swagger UI)を参照してください。プラグインのルートは /docs に表示されません。

認証 ​

AB は 2 種類の認証情報を受け付けます。

  • ブラウザセッション: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/tokensAPI トークンの一覧 / 作成(scope は api または mcp、expires_at は任意)
DELETE/tokens/{token_id}トークンを無効化
POST/passkey/register/options、/passkey/register/verifyPasskey を登録
POST/passkey/auth/options、/passkey/auth/verifyPasskey でログイン
GET/passkey/list現在のユーザーの Passkey 一覧
POST/passkey/deletePasskey を削除

プログラム ​

メソッドパス説明
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}/installLLM プロバイダープラグインをインストール
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}1 件のルール
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/metadataTMDB メタデータを更新し、放送終了した番組を自動でアーカイブ
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提案されたオフセットを適用し、リネームを 1 回実行
POST/bangumi/dismiss-review/{bangumi_id}「要確認」の印を消す
GET / DELETE/bangumi/{bangumi_id}/torrentsその番組のトレント記録の一覧 / 削除
DELETE/bangumi/{bangumi_id}/torrents/{torrent_id}トレント記録を 1 件削除
GET / DELETE/bangumi/torrents/orphansどの番組にも属さないトレント記録の一覧 / 削除
GET/bangumi/torrents/orphans/count孤立したトレント記録の件数
DELETE/bangumi/torrents/orphans/{torrent_id}孤立したトレント記録を 1 件削除

映画 ​

メソッドパス説明
GET/movie/get/all、/movie/get/{movie_id}すべて / 1 件の映画ルール
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/analysisRSS リンクを解析し、見つかった番組を返す
POST/rss/collectシーズン全体をダウンロード(収集)
POST/rss/subscribe購読

検索 ​

メソッドパス説明
GET/search/bangumi?site=<サイト>&keywords=<キーワード>Server-Sent Events で結果を 1 件ずつ送信。複数のキーワードは空白で区切る
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競合を 1 件消し、次のリネームで再確認させる

通知センター ​

メソッドパス説明
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}1 件削除
POST/notification/test保存済みの通知チャンネルを番号で指定してテスト
POST/notification/test-config保存前の通知チャンネル設定をテスト

イベントストリーム ​

GET /events/stream は 1 本の Server-Sent Events 接続です。WebUI はポーリングの代わりにこれを使います。

event送信のタイミングdata
status3 秒ごとGET /status と同じ構造
downloader5 秒ごとすべてのインスタンスのトレント。ダウンローダーが使えないときは null
log10 秒ごとログの末尾
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/settingsallow_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-rssRSS リンクをテスト
POST/setup/test-notificationテスト通知を送信
POST/setup/completeウィザードの設定をすべて保存し、セットアップ完了とする

MCP ​

AB はルートパスの /mcp で MCP サーバー(Streamable HTTP トランスポート)を提供します。MCP クライアントにはサーバーの URL として 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)