Rate Limit

비즈고 API는 안정적인 서비스 제공을 위해 API 호출 횟수를 제한합니다.


기본 제한

구분제한
메시지 발송200 TPS (초당 트랜잭션)
메시지 리포트 조회5 TPS

TPS(Transactions Per Second): 초당 처리 가능한 요청 수


한도 초과 시 응답

HTTP 429 Too Many Requests

{
  "common": {
    "authCode": "A020",
    "authResult": "Rate limit exceeded"
  }
}

대응 방법

1. 발송 속도 제어

대량 발송 시 초당 200건을 넘지 않도록 발송 간격을 조절합니다.

// 초당 200건 제한을 고려한 배치 발송 예시
const BATCH_SIZE = 100;
const DELAY_MS = 500; // 0.5초마다 100건 = 초당 200건

for (let i = 0; i < destinations.length; i += BATCH_SIZE) {
  const batch = destinations.slice(i, i + BATCH_SIZE);
  await sendBatch(batch);
  if (i + BATCH_SIZE < destinations.length) {
    await new Promise(r => setTimeout(r, DELAY_MS));
  }
}

2. 429 감지 후 재시도

if (response.status === 429) {
  const retryAfter = response.headers.get('Retry-After') || 1;
  await new Promise(r => setTimeout(r, retryAfter * 1000));
  // 재시도
}

3. 한도 상향 요청

기본 TPS로 부족한 경우 담당 영업 담당자에게 상향을 요청할 수 있습니다.


Best Practice

  • 피크타임 분산: 가능하면 발송 시간을 분산해 특정 시간대에 집중되지 않도록 합니다.
  • 큐 기반 처리: 발송 요청을 큐에 넣고 TPS에 맞게 순차 처리합니다.
  • 모니터링: 429 응답 비율을 모니터링해 발송 패턴을 최적화합니다.

→ 지수 백오프 재시도 구현: 재시도 전략