【えーぴーあいれーとりみっと】

APIレートリミット とは?

💡 API利用の「速度制限」
📌 このページのポイント
APIレートリミットの仕組み リクエスト数 時間 → 制限 100 30 50 70 90 120 150 20 40 429 Too Many リセット 正常 警告 制限超過 カウンタリセット
時間あたりのリクエスト数と制限ラインの関係
ひよこ ひよこ

なぜレートリミットが必要なの?

ペンギン先生 ペンギン先生

サーバー保護(1ユーザーが大量リクエストを送ってサービスダウンさせるのを防ぐ)、②公平性(全ユーザーに均等にリソースを配分)、③コスト管理(無料プランのユーザーが有料級に使うのを防ぐ)、④セキュリティブルートフォース攻撃やスクレイピングの抑止)。ほぼすべてのAPIに何らかのレートリミットがあるよ

ひよこ ひよこ

制限に引っかかったらどうする?

ペンギン先生 ペンギン先生

HTTPレスポンスヘッダーを確認しよう。X-RateLimit-Remaining(残り回数)、X-RateLimit-Reset(リセット時刻)が入っていることが多い。429が返ってきたらRetry-Afterヘッダーの秒数だけ待ってリトライ。指数バックオフでリトライするのがベストプラクティスだよ

ひよこ ひよこ

サーバー側の実装方法は?

ペンギン先生 ペンギン先生

代表的なアルゴリズムは3つ。①トークンバケット:一定速度でトークンが補充され、リクエストごとにトークンを消費。バースト対応可能。②スライディングウィンドウ:直近N秒のリクエスト数をカウント。③固定ウィンドウ:時間枠ごとにカウントをリセット(境界でバースト問題あり)。Redisを使った分散レートリミットが実装しやすいよ

ひよこ ひよこ

有名なAPIレートリミットは?

ペンギン先生 ペンギン先生

GitHub APIは認証済みで5,000回/時間、Twitter API(X)はプランによって異なるけど無料で1,500投稿/月、OpenAI APIはモデルとプランごとにTPMトークン/分)制限。Stripe APIは本番100回/秒。レートリミットの設計は「寛大すぎず厳しすぎず」のバランスが大事だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
レートリミット」って出てきたら「APIの呼び出し回数制限」と思えればだいたいOK!
📖 おまけ:英語の意味
「API Rate Limit」 = API速度制限
💬 Rate(速度・頻度)をLimit(制限)する。道路の速度制限と同じ考え方だよ
← 用語集にもどる