APIレート制限計算機
1分あたり100回までの制限で350回呼び出すには、100回ずつ3回と50回を1回の計4つの時間窓が必要で、間隔は60秒、合計で最短180秒かかります。取り込みや同期を制限内で計画できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- レート制限
- 100
- 希望リクエスト数
- 350
- ウィンドウの秒数
- 60
- 必要なウィンドウ数
- 4
- 1回分の量
- 100
- 最後のバッチのサイズ
- 50
- 完全なバッチ数
- 3
算術は純粋で決定的です。
利用制限をまとまりに分ける考え方
1分間の時間窓で100回までという制限は、どの60秒間でも受け付けられる呼び出しが最大100回という意味です。それより多く送りたいときは、一度に全部を送ることはできません。安全なのは、満杯のまとまりを1つ送り、時間窓が丸ごと過ぎるのを待って次を送る、という繰り返しです。必要な時間窓の数は、全体の回数を制限で割って切り上げた値です。350回を100回ずつ送るなら4つの時間窓が必要で、100回のまとまりが3つと、最後に50回のまとまりが1つになります。まとまりの開始の間隔は時間窓の長さと同じで、この例では60秒です。
全体の時間を見積もり、思わぬ失敗を防ぐ
最初のまとまりはすぐに送れるため、最短の所要時間は時間窓の数から1を引いて時間窓の長さを掛けた値になり、例では3回分の60秒で180秒です。時間窓の長さを空欄にすると60秒として計算します。この計画は固定の時間窓に対してはあえて慎重で、トークンバケット方式でも最初の目安として使えます。このツールはサービスに接続せず、スケジュールを決めるだけなので、待ち時間はご自身のプログラムで入れてください。0回を指定すると、時間窓0、待ち時間なしという結果になり、試しの計画に便利です。
時間窓・バッチ・遅延で制限内に収める仕組み
安全な計画は、最初の時間窓で最大R件送り、1つの時間窓が経過するまで待ち、次のR件を送り、残りがなくなるまで繰り返すことです。必要な時間窓数はDをRで割った天井です。Dが350でRが100なら、4つの時間窓が必要です。
100件の完全バッチが3つと、50件の最終バッチです。複数の時間窓が必要なとき、バッチ開始間の遅延はWに等しく、1つの時間窓で足りるときは0です。最小経過時間は(時間窓数−1)×Wです。
最初のバッチは時刻0に開始でき、最後のバッチはそれまでの待機の後に開始するからです。このモデルは、クライアントライブラリで使われる固定時間窓とトークンバケットの一般的な計画ヒューリスティックに一致します。固定時間窓には意図的に保守的で、バースト途中で補充しない場合のトークンバケットの第一予算としても堅実です。
自前クライアントがバッチ間でスリープできるよう、スケジュールの寸法だけを決めます。
よくある質問
レート制限が0または負の場合はどうなりますか?
正でないレート制限は有効な予算ではなく、呼び出しは課金されません。
制限が100回なら350回の呼び出しに時間窓はいくつ必要ですか?
4つです。350を100で割って切り上げるので、100回ずつのまとまりが3回と、最後の50回になります。最後のまとまりは小さいので、制限を超えることはありません。
全体の所要時間は最短でどれくらいですか?
時間窓の数から1を引き、時間窓の長さを掛けた時間です。60秒の時間窓が4つなら180秒です。最初のまとまりはすぐに送れるので、待ち時間だけが加わります。
このツールが代わりに呼び出しを送りますか?
送りません。サービスには一切接続せず、計画を立てるだけです。各まとまりの送信と、次までの待ち時間は、ご自身のプログラムで行ってください。
トークンバケット方式の制限にも使えますか?
使えます。途中で補充されない前提での、控えめな最初の見積もりになります。固定の時間窓に対してはあえて慎重な計画なので、制限を確実に下回ります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/api-rate-limit-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"rate_limit":100,"desired_requests":350}'const res = await fetch("https://api.kit.forhosting.com/dev/api-rate-limit-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"rate_limit": 100,
"desired_requests": 350
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/api-rate-limit-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"rate_limit": 100,
"desired_requests": 350
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/api-rate-limit-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"rate_limit":100,"desired_requests":350}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"rate_limit":100,"desired_requests":350}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/api-rate-limit-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"rate_limit": 100,
"desired_requests": 350
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.api_rate_limit_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
公開・非公開を問わず、APIはほぼ必ずレート制限を公開します。たとえば1分あたり100リクエスト、1時間あたり1000リクエストなどです。1つの時間窓が許す量を超えるトラフィックを送る必要がある技術者は、作業をバッチに分割し、その間で待機しなければ、プロバイダからHTTP 429が返ったり資格情報が失効したりします。このAPIレート制限予算計算機は、1時間窓あたりの最大リクエスト数、送信予定の総リクエスト数、任意の時間窓秒数を受け取ります。必要な時間窓数、制限を超えない最大バッチサイズ、最後の部分バッチのサイズ、バッチ開始間に入れる遅延、最初のバッチを即時開始した場合の最小経過時間、および毎秒の最大リクエスト相当値を返します。正でないレート制限はinvalid_inputで失敗し、課金されません。
時間窓・バッチ・遅延で制限内に収める仕組み
長さW秒の時間窓あたりRリクエストというレート制限は、長さW秒の任意のスライディングまたは固定時間窓において、プロバイダが成功する呼び出しを最大R件まで受け入れることを意味します。合計D件のリクエストが必要でDがRより大きい場合、一度にすべてを送ることはできません。計算機は遠隔APIを呼び出しません。
入力契約、応答フィールド、検証ルール
POSTでJSON本体を送ります。rate_limitは時間窓あたり許可される正の整数リクエスト数、desired_requestsは実施予定の非負整数の呼び出し数、任意のwindow_secondsはその時間窓の正の有限秒数で、省略時は60です。各フィールドはJSON数値でも数値文字列でも構いません。欠落フィールド、非有限値、小数のdesired_requests、小数のrate_limit、厳密に正でないrate_limitはinvalid_inputとなり、フィールド名を含むメッセージを返します。成功時はrate_limit、desired_requests、window_secondsをエコーし、windows_needed、batch_size(完全バッチあたりの最大リクエスト数。作業が残るときはrate_limitに等しい)、last_batch_size(末尾の部分バッチ、またはDが割り切れるときの完全バッチ)、full_batches(余り前に最大サイズを使うバッチ数)、delay_between_batches_seconds、min_elapsed_seconds、rate_limitをwindow_secondsで割ったmax_requests_per_second、および天井規則を述べる短いformula文字列を返します。例:rate_limitが100、desired_requestsが350、window_secondsが60なら、時間窓4、バッチサイズ100、最終バッチ50、遅延60秒、最小経過180秒です。desired_requestsが0なら、エラーなく時間窓0・遅延0を返し、ドライラン計画に便利です。
APIレート制限予算計算機が役立つ場面
その件数とベンダーのレート制限をこの計算機に渡すと、試行錯誤の429嵐なしでワーカーループに入れられるスリープ予定が得られます。一括エクスポートの所要時間を見積もるプロダクト担当は、顧客に当日完了を約束する前に、文書件数を壁時計時間へ変換できます。検証失敗は残高を消費しません。Webhookの埋め戻し、検索ドキュメントの再インデックス、テナント移行などを行う統合スクリプトは、開始前に総件数を知っていることが多いです。可観測性やカオスツールは、公開制限から導いたmax_requests_per_secondを合成負荷ジェネレータが超えないことを検証できます。スケジュール論理はクライアント側に置き、このendpointを算術の唯一の正として使い、モバイル・エッジワーカー・CIジョブが同じ計画になるようにしてください。
連携の活用例
一括移行とバックフィルジョブ
既知のリクエスト件数をレート制限に安全なバッチへ分割し、各バッチ開始の間にdelay_between_batches_secondsだけスリープします。
SLAとランブックの見積もり
ベンダーのレート制限をmin_elapsed_secondsに変換し、オンコール計画と顧客向けETAが実際の絞り込みと一致するようにします。
負荷試験と合成トラフィックの上限
本番ガードを踏ませてはならないジェネレータを設定する前に、rate_limitとwindow_secondsからmax_requests_per_secondを導きます。
技術的な質問
APIレート制限で必要な時間窓数はどう計算しますか?
rate_limit(時間窓あたりの正の整数リクエスト)、desired_requests(総呼び出し数)、任意のwindow_seconds(既定60)を送ってください。windows_neededはceil(desired_requests / rate_limit)です。
バッチ間でどれだけ待つべきですか?
複数の時間窓が必要なとき、delay_between_batches_secondsはwindow_secondsに等しくなります。1つの時間窓で足りるとき、遅延は0です。
計算機は自分のAPIを呼び出したり代わりにスリープしますか?
いいえ。スケジュール数値だけを返します。バッチ送信と遅延の適用はご利用のクライアント側です。
APIレート制限計算機の料金は?
ブラウザツールは無料です。APIリクエストは成功1回あたり$0.002の前払いKIT残高を使い、無効な入力は課金されません。