レート制限
APIキーごとのスライディングウィンドウによる上限、X-RateLimitヘッダー、そして正しい再試行の方針を説明します。
2026年8月13日更新
上限はキーごとに、1分間のスライディングウィンドウで数えられます。既定値は、ワークスペース キーが毎分600リクエスト、パートナーキーが1200リクエストです。プランによって異なる値が設定 されることもあり、実際の上限は常にレスポンスヘッダーに入っています。
ヘッダー
すべてのレスポンスが現在の状態を伝えます。
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 273
X-RateLimit-Reset: 1755081600
X-RateLimit-Limit— このキーのウィンドウあたりの容量です。X-RateLimit-Remaining— 現在のウィンドウで残っているリクエスト数です。X-RateLimit-Reset— ウィンドウが空くUnix時刻(秒)です。
上限を超えると、APIはRetry-Afterを添えて429を返します。
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded, retry later",
"doc_url": "https://linkprofit.com/docs/api/errors"
}
}
Retry-After: 12
ウィンドウはスライドする
カウンターは毎分の切り替わりでリセットされるわけではありません。10:00:55のバーストは、 10:01:05のウィンドウにも数えられます。分の境界に合わせたバーストではなく、一定のレートを 前提に設計してください。
拒否されたリクエストも数に入ります。429に対して間隔の詰まった再試行ループを回しても、 キーがロックアウトされたままになるだけです。
行儀のよい再試行
async function withRateLimit(request) {
for (let attempt = 0; attempt < 5; attempt += 1) {
const response = await request();
if (response.status !== 429) return response;
const wait = Number(response.headers.get("retry-after") ?? "1");
await new Promise((resolve) => setTimeout(resolve, wait * 1000 + attempt * 250));
}
throw new Error("Rate limit retries exhausted");
}
推測ではなくRetry-Afterに従い、並列のワーカーが足並みをそろえて再試行しないようジッター
を加え、試行回数にも上限を設けてください。
上限に収めるために
X-RateLimit-Remainingを見て、ゼロになる前にペースを落としてください。POST /links/bulkを使ってください。1回のリクエストで最大 100本のリンクを作成できます。- ポーリングよりWebhookを選んでください。イベントは数秒以内に届き、 リクエストを一切消費しません。