GitHub APIレート制限の解説

GitHub RESTおよびGraphQL APIのレート制限の包括的ガイド。認証済みvs未認証の制限、セカンダリレート制限、最適化戦略を学びます。

API Limits

詳細な説明

GitHub APIレート制限

GitHubはREST APIとGraphQL APIの両方にレート制限を適用しています。これらの制限を理解することは、信頼性の高いインテグレーションを構築するために不可欠です。

REST APIの制限

認証 制限 ウィンドウ 秒あたり平均
未認証 60 1時間あたり 0.017
パーソナルトークン 5,000 1時間あたり 1.39
GitHub App 5,000 1時間あたり 1.39
GitHub App (インストール) 5,000+ 1時間あたり 1.39+

GraphQL APIの制限

GraphQL APIは単純なリクエストカウントではなく、ポイントベースシステムを使用します:

  • 認証ユーザーあたり5,000ポイント/時間
  • 各クエリはリクエストされたノードに基づいて計算されたコストを持つ
  • シンプルなクエリは1ポイント、100のリポジトリオブジェクトをリクエストするクエリは101ポイントのコストがかかる場合がある

セカンダリレート制限

プライマリレート制限に加え、GitHubはセカンダリ制限を適用します:

  • 100以下の同時リクエスト
  • REST APIコンテンツ作成(POST、PATCH、PUT、DELETE)は900ポイント/分以下
  • GraphQL APIによるコンテンツ生成リクエストは80リクエスト/分以下

レート制限ステータスの確認

X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4987
X-RateLimit-Reset: 1706140800
X-RateLimit-Used: 13
X-RateLimit-Resource: core

最適化戦略

  1. If-None-Matchを使用した条件付きリクエスト(304レスポンスは制限にカウントされない)
  2. GraphQLを使用して必要なデータのみを1回のリクエストで取得
  3. ポーリングの代わりにWebhookリスナーを実装
  4. ETagヘッダーを使用してレスポンスをキャッシュ

ユースケース

200のリポジトリで新しいプルリクエストを監視するGitHubインテグレーションを構築しています。各リポジトリチェックには2回のAPIコールが必要です。5,000リクエスト/時の制限内でレイテンシを5分以下に保つポーリング戦略を設計する必要があります。

試してみる — Rate Limit Calculator

フルツールを開く