API レート制限とは、一定期間内に API へ送信できるリクエスト数の上限を設ける仕組みです。サービスの安定性を確保し、特定のユーザーやボットによるリソースの独占を防ぐための防御機構の一つです。
レート制限の代表的な実装方式は 3 つです。固定ウィンドウ方式 (1 分間に 100 リクエストなど固定枠) 、スライディングウィンドウ方式 (直近 1 分間のリクエスト数で判定) 、トークンバケット方式 (一定速度でトークンが補充され、リクエストごとにトークンを消費) です。トークンバケット方式はバースト的なアクセスにも柔軟に対応でき、 AWS API Gateway や Stripe などで採用されています。
レート制限に達した場合、サーバーは HTTP 429 (Too Many Requests) ステータスコードを返します。レスポンスヘッダーの Retry-After に再試行までの待機秒数が含まれる場合があるため、クライアント側ではこの値があればそれに従い、無ければ指数バックオフ (1 秒、 2 秒、 4 秒と待機時間を倍増させる方式) で再試行するのが安全です。
短縮 URL サービスの API では、 URL 短縮リクエスト (書き込み) とリダイレクト (読み取り) で異なるレート制限を設ける設計が用いられます。外部の短縮 URL サービスの無料プランでは作成本数に上限が設けられている場合があり、大量の URL を一括短縮する際は API レート制限とあわせて上限を確認しておく必要があります。