요청 제한
API 키별 슬라이딩 윈도 제한, X-RateLimit 헤더, 올바른 재시도 전략.
2026년 8월 13일 업데이트
제한은 1분 슬라이딩 윈도를 기준으로 키별로 집계됩니다. 기본값은 워크스페이스 키가 분당 600 요청, 파트너 키가 1,200 요청입니다. 요금제에 따라 다른 값이 적용될 수 있으며, 실제 제한값은 항상 응답 헤더에 담겨 있습니다.
헤더
모든 응답에는 현재 상태가 함께 담깁니다.
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을 지켜보다가 0에 닿기 전에 속도를 늦추십시오.POST /links/bulk를 사용하십시오. 요청 한 번으로 최대 100개의 링크를 생성합니다.- 폴링보다 웹훅을 사용하십시오. 이벤트가 몇 초 안에 전달되고 요청을 전혀 소비하지 않습니다.