속도 제한
에이전트 워크플로와 HTTP 호출을 위한 워크스페이스별, 작업별 제한, 헤더, 재시도 동작.
UnifAPI는 두 계층의 속도 제한을 적용합니다: 모든 Skills와 API 호출에 걸쳐 트래픽을 평탄화하는 워크스페이스별 제한과, 각 공개 데이터 소스를 보호하는 작업별 제한입니다.
헤더
모든 응답 — 2xx 또는 429 — 은 표준 헤더를 담습니다:
| 헤더 | 의미 |
|---|---|
X-RateLimit-Limit | 현재 윈도에서 허용되는 요청 수 |
X-RateLimit-Remaining | 현재 윈도에서 남은 요청 수 |
X-RateLimit-Reset | 윈도가 초기화되는 Unix 타임스탬프(초) |
Retry-After | 재시도 전 대기할 초(429만 해당) |
워크스페이스 제한과 엔드포인트 제한이 모두 적용될 때, 헤더는 더 엄격한 쪽을 보고합니다.
기본값
| 요금제 | 워크스페이스 제한 | 엔드포인트별 제한 |
|---|---|---|
| Free | 60 req/min | 소스 인식 |
| Pay-as-you-go | 600 req/min | 소스 인식 |
| Enterprise | 맞춤형 | 맞춤형 |
429 처리하기
async function call(url: string, init: RequestInit, attempt = 0): Promise<Response> {
const res = await fetch(url, init);
if (res.status !== 429 || attempt >= 5) return res;
const retryAfter = Number(res.headers.get("Retry-After") ?? 1);
await new Promise((r) => setTimeout(r, retryAfter * 1000));
return call(url, init, attempt + 1);
}지켜야 할 두 가지 규칙:
Retry-After를 준수하세요. UnifAPI는 작업에 필요한 대기 시간을 반환합니다 — 추측하면 보통 상황이 더 나빠집니다.- 반복되는 429에서는 백오프하세요. Skill이 연속으로 여러 번 제한에 도달하면, 쿼리를 좁히거나, 동시성을 줄이거나, 워크스페이스 제한을 늘리세요.
버스트 동작
제한은 토큰 버킷 방식입니다: 1분간 유휴 상태였던 워크스페이스는 정상 상태 제한을 잠시 초과해 버스트할 수 있습니다. 프로덕션 트래픽에서 이에 의존하지 마세요 — 정상 상태 속도에 맞춰 설계하세요.
더 많은 제한 요청하기
더 높은 제한이 필요한가요? 워크스페이스 ID, 실행 중인 Skill 또는 작업, 대략적인 QPS 추정치와 함께 support@unifapi.com으로 이메일을 보내세요.