
OpenAI API 429 rate limit 떴을 때 대처의 핵심은 무작정 재요청을 반복하지 말고, 429의 종류를 먼저 나누는 것입니다. 같은 429라도 분당 요청 초과, 토큰 초과, 월 사용 한도, 결제 문제는 해결 순서가 완전히 다릅니다.
에러 메시지 원문을 기준으로 quota 문제인지, RPM/TPM 초과인지 먼저 분류한 뒤 재시도 로직을 적용하세요.
제가 AI 코딩 에이전트나 n8n 자동화 워크플로를 붙일 때 가장 먼저 보는 순서는 이렇습니다. 에러 메시지 원문 → OpenAI 대시보드 Usage → 모델별 rate limit → 클라이언트 재시도 로직입니다. 대부분은 이 네 군데 중 하나에서 바로 잡힙니다.
에러 로그의
type, code, message를 복사해두고 아래 순서대로 점검해 보세요.429가 떴을 때 먼저 읽어야 하는 부분
OpenAI API의 429는 보통 “너무 많이 호출했다”로 이해하지만, 실제 운영에서는 더 세분화해서 봐야 합니다. 특히 Claude Code, Cursor, 자체 SaaS 백엔드, Zapier/Make 자동화처럼 여러 사용자가 동시에 호출하는 구조에서는 단순 sleep 1초로 해결되지 않는 경우가 많습니다.
1) insufficient_quota: 사용 한도나 결제 문제
메시지에 insufficient_quota가 보이면 코드보다 계정 상태를 먼저 봐야 합니다. OpenAI Platform의 Billing, Usage, Limits 화면에서 크레딧 소진, 결제 실패, 월 한도 제한이 있는지 확인하세요.
이 경우에는 백오프 코드를 넣어도 해결되지 않습니다. 호출을 줄이는 임시 조치는 가능하지만, 실제 해결은 결제 수단 확인이나 한도 조정입니다.
2) requests_per_minute / tokens_per_minute 초과
RPM은 요청 횟수, TPM은 토큰 사용량 제한입니다. 짧은 프롬프트를 많이 보내면 RPM에 걸리고, 긴 문서 요약이나 코드 리팩터링처럼 입력·출력이 길면 TPM에 걸릴 수 있습니다.
Cursor나 자체 에이전트에서 파일 여러 개를 한 번에 분석하게 만들면 요청 수보다 토큰량이 먼저 터지는 경우가 흔합니다. 이때는 모델 변경보다 입력 자르기, 요약 캐시, 큐 처리가 더 효과적입니다.
원인별로 다른 해결책
| 상황 | 바로 확인할 곳 | 실전 대응 | 주의점 |
|---|---|---|---|
| 월 한도 초과 | Billing / Usage | 한도 상향, 결제 확인, 호출 중단 | 재시도해도 계속 실패 |
| RPM 초과 | Rate limits | 큐 도입, 동시 실행 수 제한, 지수 백오프 | 짧은 sleep만으로 부족할 수 있음 |
| TPM 초과 | 요청 토큰 길이 | 프롬프트 압축, 문서 분할, 캐시 사용 | 긴 컨텍스트 모델도 제한은 있음 |
| 자동화 폭주 | n8n, Zapier, Make 실행 로그 | 배치 크기 축소, 재시도 횟수 제한 | 실패 재시도가 다시 트래픽을 만듦 |
제가 권하는 기본 재시도 패턴
코드에서는 exponential backoff + jitter를 기본으로 둡니다. 예를 들어 1초, 2초, 4초처럼 늘리되 요청마다 약간의 랜덤 지연을 섞어 동시에 다시 몰리지 않게 합니다.
Node.js로 만든 Slack 요약 봇을 예로 들면, 사용자가 여러 채널 요약을 동시에 요청할 때 API를 바로 병렬 호출하지 않습니다. 먼저 BullMQ나 간단한 작업 큐에 넣고, 워커가 초당 처리량을 조절합니다. 실패한 요청은 최대 3회만 재시도하고, 그 이상은 Slack에 “잠시 후 다시 시도” 메시지를 남기는 편이 사용자 경험도 좋습니다.
try {
// OpenAI API call
} catch (err) {
if (err.status === 429) {
// retry with exponential backoff and jitter
// also log err.code and err.message
}
}
여기서 중요한 점은 429를 숨기지 않는 것입니다. 로그에 모델명, 입력 토큰 추정치, 사용자 ID 또는 워크플로 ID를 남겨야 어디서 과호출이 생겼는지 찾을 수 있습니다.
도구별로 어디를 봐야 하나
개발자가 직접 붙인 백엔드
Express, FastAPI, Next.js API Route에서 직접 OpenAI SDK를 쓴다면 서버 레벨에서 제한을 거는 게 좋습니다. 사용자별 일일 호출 수, 분당 호출 수, 긴 요청 차단 규칙을 넣어야 특정 사용자의 반복 클릭이 전체 서비스를 막지 않습니다.
n8n·Zapier·Make 자동화
자동화 도구는 실패 시 재실행 옵션이 편하지만, 잘못 설정하면 429를 더 키웁니다. n8n에서는 Split In Batches와 Wait 노드를 섞고, Zapier나 Make에서는 동시 실행과 재시도 정책을 확인하세요.
Cursor·Claude Code 같은 코딩 워크플로
AI 코딩 에이전트는 한 번의 작업처럼 보여도 내부적으로 파일 읽기, 수정안 생성, 검증 요청을 여러 번 보냅니다. 큰 저장소를 한꺼번에 분석시키기보다 폴더 단위로 나누고, 불필요한 로그나 빌드 산출물은 컨텍스트에서 빼는 것이 낫습니다.
누구에게 어떤 대응을 추천하나
개인 개발자라면 먼저 Usage와 모델별 limit을 확인하고, 재시도 로직을 최소한으로 추가하세요. 아직 트래픽이 작다면 큐 시스템까지 크게 만들 필요는 없습니다.
SaaS나 팀 내부 도구를 운영한다면 Redis 기반 큐, 사용자별 quota, 관리자 알림을 넣는 쪽이 안전합니다. OpenAI API만 바꾸는 문제가 아니라 서비스 안정성 문제로 보는 편이 맞습니다.
노코드 자동화 사용자라면 배치 크기를 줄이고 Wait 단계를 넣는 것이 첫 조치입니다. 특히 Airtable 행 수백 개를 한 번에 요약하거나 Notion 페이지를 대량 변환하는 워크플로는 천천히 처리되도록 설계해야 합니다.
자주 막히는 질문
Q. 모델을 바꾸면 바로 해결되나요?
가끔 도움이 되지만 항상 답은 아닙니다. 계정·조직·모델별 제한이 다르기 때문에 Rate limits 페이지에서 실제 한도를 확인해야 합니다.
Q. 429가 나도 과금되나요?
실패한 요청의 과금 여부는 요청 처리 단계와 정책에 따라 달라질 수 있습니다. 정확한 내용은 OpenAI 공식 문서를 확인하는 것이 가장 안전합니다.
Q. 프론트엔드에서 직접 호출해도 되나요?
권장하지 않습니다. API 키 노출 위험이 있고, 사용자가 버튼을 반복 클릭하면 제한에 더 빨리 걸립니다. 서버에서 호출하고 사용자별 제한을 두세요.
오늘 바로 할 일
지금은 코드를 크게 갈아엎기보다 에러 원인을 분리하는 것이 먼저입니다. 에러 원문을 저장하고, OpenAI 대시보드에서 Usage와 Limits를 확인한 뒤, 재시도는 지수 백오프 방식으로 제한하세요.
그다음 n8n, Zapier, Cursor, 자체 서버 중 어디에서 호출이 몰리는지 로그로 확인하면 같은 문제가 반복되는 시간을 줄일 수 있습니다.
관련 링크
- ai api 비용 비교: 사이드프로젝트 챗봇 만들 때 실제로 갈리는 지점
- ai 자동화 수익화 사례: 작은 리서치 봇을 팔 수 있는 워크플로로 바꿔본 기록
- ai 툴 교육, 팀이 바로 써먹게 만들려면 ChatGPT보다 워크플로부터 잡아야 합니다
- 관련 태그 더 보기
- 카테고리 더 보기
- 검색 결과 더 보기
- 참고 링크
