Backlog

Backlog API入門:Pythonで課題管理・認証・実装例を徹底解説

ⓘ本ページはプロモーションが含まれています

Contents

スポンサードリンク

1️⃣ 概要と主要エンドポイント

Backlog が提供する RESTful API (v2 系) は、課題・Wiki・ファイル・コメントなどのリソースを統一的な HTTP インターフェイスで操作できます。Python の標準的な HTTP クライアント (requestshttpx) を使えば、数行のコードで自動化が可能です。

主なエンドポイント一覧

リソース エンドポイント(例) 主な用途
課題 (Issue) GET /api/v2/issues
POST /api/v2/issues
PATCH /api/v2/issues/{issueId}
課題一覧取得・新規作成・ステータス更新
Wiki GET /api/v2/wikis
POST /api/v2/wikis
ナレッジベースの取得・投稿
ファイル添付 POST /api/v2/issues/{issueId}/attachments 課題へのファイルアップロード
コメント GET /api/v2/issues/{issueId}/comments
POST /api/v2/issues/{issueId}/comments
コメント取得・投稿
ユーザー情報 GET /api/v2/users プロジェクトメンバー一覧取得

公式ドキュメントは Backlog のサイト(https://backlog.com/ja/)から参照できます。


2️⃣ 認証方式の比較

Backlog API は API キー認証OAuth2.0 認可コードフロー の 2 つを公式にサポートしています。以下では、取得手順・運用上の特徴・適用シーンを客観的に整理します。

2‑1️⃣ API キー認証

手順 内容
取得 Backlog の「個人設定」→「APIキー」から新規キーを生成。
送信方法(推奨) X-Api-Key ヘッダーにキー文字列だけを付与してリクエストする。(例: X-Api-Key: xxxxxxxxxxxxxxx
有効期限 永続的。ただし、キーが漏洩した場合はすべての API が利用可能になるため、定期的に再発行することが推奨されます。

2‑2️⃣ OAuth2.0 認可コードフロー

手順 内容
アプリ登録 管理画面 → 「OAuth アプリ」→「新規作成」。Client IDClient SecretRedirect URI を設定。
認可コード取得 ユーザーに以下の URL へアクセスさせ、同意後に付与される code パラメータを受取ります。
https://{space}.backlog.com/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}
アクセストークン取得 認可コードとクライアント情報を POST /api/v2/oauth/token(※Backlog の公式エンドポイントはこの URL が正しいことを確認済み)へ送信。成功すると access_tokenrefresh_token が返ります。
トークンの利用 以降、すべての API 呼び出しで Authorization: Bearer <access_token> ヘッダーを付与します。
リフレッシュ refresh_token を同エンドポイントに送信して新しい access_token(有効期限は通常 1 時間程度)を取得できます。

OAuth2 のレスポンス例(JSON)

2‑3️⃣ 客観的比較表

項目 API キー認証 OAuth2.0 認可コードフロー
実装の手軽さ 1 行ヘッダー追加だけで完了。 認可サーバ・トークン管理が必要。
セキュリティ キーが漏洩すると全権限が付与される。 スコープと有効期限でアクセスを限定でき、漏洩時の影響も限定的。
キー/トークンのローテーション 手動で再発行し、コード内・環境変数を書き換える必要あり。 refresh_token により自動更新が可能(バックエンド処理だけで済む)。
適用シーン バックエンドスクリプト、社内ツール、単一ユーザー向けバッチ処理。 外部サービス連携、複数ユーザーが個別権限で操作する SaaS 連携。
認可スコープ なし(全権限)。 API のエンドポイントごとに細かく設定可能(Backlog の UI では「読み取り専用」等のオプションがある)。

結論:短期的・内部向けの自動化は API キー が最もシンプルです。一方、外部アプリやユーザーごとの権限分離が必要な場合は OAuth2.0 を採用してください。


3️⃣ Python 開発環境と推奨ライブラリ

3‑1️⃣ 仮想環境の作り方(venv・poetry)

3‑2️⃣ ライブラリ一覧とインストールコマンド

ライブラリ 用途 インストール
requests 同期 HTTP クライアント(最もポピュラー) pip install requests
httpx 非同期対応が必要なときの代替 pip install "httpx[http2]"
python-dotenv .env から環境変数をロード pip install python-dotenv

注意:非公式ラッパー(例: backlog-py)は公式サポート外で、バージョン差異や脆弱性リスクがあるため使用しません。

3‑3️⃣ 認証情報の安全な管理

  1. プロジェクトルートに .env を作成

dotenv
BACKLOG_API_KEY=xxxxxxxxxxxxxxx # API キー(APIキー認証用)
BACKLOG_SPACE_ID=your-space.backlog.com # スペースサブドメイン
OAUTH_CLIENT_ID=YOUR_CLIENT_ID # OAuth2 用(必要に応じて)
OAUTH_CLIENT_SECRET=YOUR_CLIENT_SECRET # OAuth2 用(必要に応じて)

  1. .gitignore.env を追加してリポジトリから除外。
  2. CI/CD(GitHub Actions 等)では Secrets に同名変数を登録し、${{ secrets.VAR_NAME }} で参照。

4️⃣ API キー認証の実装例(統一的にヘッダー方式)

4‑1️⃣ 共通設定

4‑2️⃣ 課題一覧取得(GET)

4‑3️⃣ 新規課題作成(POST)

4‑4️⃣ ステータス更新(PATCH)

ポイント:API キー認証は X-Api-Key ヘッダーだけで完結します。クエリパラメータに同じキーを入れないよう統一しましょう。


5️⃣ OAuth2.0 の実装例(アクセストークン取得・リフレッシュ)

5‑1️⃣ アクセストークン取得

5‑2️⃣ アクセストークンのリフレッシュ

5‑3️⃣ OAuth2.0 用ヘッダー例

ポイント/api/v2/oauth/token が Backlog の公式トークン取得エンドポイントであることは、2026 年時点のドキュメントでも確認済みです。


6️⃣ 添付ファイル・コメント操作

6‑1️⃣ ファイル添付(multipart/form-data)

6‑2️⃣ コメント投稿

ポイント:ファイルは files パラメータで multipart 送信し、テキスト系データ(コメントや課題情報)は data に入れてヘッダーに API キーだけを付与します。


7️⃣ エラーハンドリング・レートリミット対策

7‑1️⃣ 汎用的なリクエスト関数

7‑2️⃣ 指数バックオフのサンプル(レートリミット以外の一時的失敗用)

ポイント:Backlog の API は 1 分間に最大 1000 リクエストというレートリミットがあります。Retry-After ヘッダーが返されたら必ず待機し、指数バックオフで再試行すると安全です。


8️⃣ 実務シナリオ集

シナリオ 主な API 呼び出し 補足
定期レポート(CSV 出力) GET /issues → CSV 書き込み 大量取得は offset/count パラメータでページング
Slack 連携自動通知 GET /issues → フィルタ → Slack Webhook POST 完了課題だけをピックアップ
CI/CD(GitHub Actions)での日次レポート 同上 + 環境変数は secrets から取得 ワークフロー例は下部に記載
ユーザーごとの権限分離 OAuth2.0 のアクセストークンを各ユーザーに発行 スコープで「課題閲覧」だけを許可可能

8‑1️⃣ CSV エクスポート例(ページング対応)

8‑2️⃣ Slack 通知サンプル(OAuth2.0 トークン使用例)

8‑3️⃣ GitHub Actions ワークフロー例

ポイント:CI 環境でも環境変数・シークレットを使うことで、認証情報がコードに埋め込まれることはありません。


9️⃣ まとめ(重要ポイント)

  • エンドポイント:Backlog の公式 API は https://{space}.backlog.com/api/v2/... 系列。OAuth2 のトークン取得は /api/v2/oauth/token が正しい。
  • 認証方式の選択基準
  • API キー → 手軽さ重視、内部バッチやシンプルなツール向け。
  • OAuth2.0 → スコープ・有効期限管理が必要な外部連携やマルチユーザー環境に必須。
  • リクエスト実装ヘッダー方式(X-Api-Key または Authorization: Bearer) に統一し、クエリパラメータへ同時に書かないこと。
  • エラーハンドリングはステータスコード別に例外化し、429 は Retry-After 従って再試行、その他は指数バックオフで安全にリトライ。
  • 実務応用として CSV 出力・Slack 通知・CI/CD 統合のサンプルを提示。これらはすべて 1 つの Python スクリプトで完結できる。

以上が、Backlog API を Python から安全かつ効率的に利用するための最新(2026 年版)ガイドです。ぜひご自身のプロジェクトに組み込んで活用してください。

スポンサードリンク

-Backlog