AI API 요청이 갑자기 거절될 때, rate limit과 재시도 확인법
AI API 요청이 갑자기 거절될 때, rate limit과 재시도 확인법

결론부터: AI API 요청이 429로 거절되면 같은 요청을 빠르게 계속 보내지 마세요. 응답 헤더의 Retry-After와 남은 요청 수·토큰을 확인하고, 잠시 기다린 뒤 제한된 횟수만 재시도해야 합니다. OpenAI는 일시적인 rate limit 오류에 Retry-After가 포함될 수 있으며 이 값 이상 기다리라고 안내합니다.[2]
429가 모두 같은 뜻은 아닙니다. 잠깐 요청이 몰린 경우에는 기다린 뒤 회복될 수 있지만 할당량·결제·권한 문제는 재시도만으로 해결되지 않습니다.[2]
rate limit은 무엇을 세나요?
OpenAI API 문서는 요청과 토큰을 여러 단위로 제한할 수 있다고 설명합니다.[2]
| 약어 | 뜻 | 초보자가 볼 상황 |
|---|---|---|
| RPM | 분당 요청 수 | 짧은 시간에 API를 여러 번 호출했는가 |
| RPD | 하루 요청 수 | 하루 사용량 제한에 닿았는가 |
| TPM | 분당 토큰 수 | 긴 입력·출력을 한꺼번에 보냈는가 |
| TPD | 하루 토큰 수 | 하루 누적 토큰이 많은가 |
| IPM | 분당 이미지 수 | 이미지 요청을 몰아서 보냈는가 |
제한은 조직과 프로젝트 수준에서 적용되며 모델에 따라 달라질 수 있습니다.[2] 요청 수가 적어도 입력과 출력이 긴 작업이면 토큰 제한에 먼저 닿을 수 있습니다.
429가 나왔을 때 확인하는 순서
- 응답 상태와 본문을 저장합니다. 상태 코드만 보지 말고 오류 메시지를 함께 확인합니다.
Retry-After를 읽습니다. 값이 있으면 그 시간보다 짧게 기다리지 않습니다.[2]- rate limit 헤더를 확인합니다. 최대치와 남은 요청·토큰, 리셋까지 남은 시간을 볼 수 있습니다.[2]
- 요청을 줄일 방법을 찾습니다. 반복 호출, 불필요하게 긴 대화 기록, 너무 큰 출력 길이를 점검합니다.
- 재시도 횟수와 총 대기 시간을 제한합니다. 실패 요청도 분당 제한에 영향을 줄 수 있습니다.[2]
- 할당량·결제·권한 오류라면 재시도하지 않습니다. 프로젝트 설정이나 결제 상태를 확인해야 합니다.[2]
헤더 이름은 보통 x-ratelimit-remaining-requests, x-ratelimit-remaining-tokens, x-ratelimit-reset-requests, x-ratelimit-reset-tokens처럼 표시됩니다. 실제 헤더는 API와 오류 종류에 따라 달라질 수 있으므로 받은 응답을 그대로 기록하세요.[2]
안전한 재시도는 어떻게 다를까?
OpenAI는 일시적인 제한을 만났을 때 지수 백오프와 작은 무작위 지연을 사용하는 방법을 설명합니다.[2] 첫 번째 재시도는 짧게 기다리고 또 실패하면 대기 시간을 늘리는 방식입니다.
공식 OpenAI SDK는 조건에 맞는 rate limit 오류를 자동으로 재시도하고 Retry-After를 따를 수 있습니다.[2] SDK를 쓰면서 별도 재시도 루프를 추가하면 재시도가 겹칠 수 있으니 기본 동작을 먼저 확인하세요.
해치의 확인 과정
2026-08-31, macOS 26.6.1과 arm64 환경에서 OpenAI 공식 Rate limits 문서를 curl로 요청해 HTTP 200 응답을 확인했습니다. RPM·TPM 설명, rate limit 응답 헤더 예시, Retry-After, 지수 백오프와 재시도 금지 대상 문장을 대조했습니다. 이 실행에서는 OpenAI API 키를 사용한 요청이나 실제 429 응답을 발생시키지 않았습니다. 이 글은 공식 문서 기준을 초보자용 순서로 정리한 것입니다.
이런 분께 필요합니다
- 직접 만든 AI 앱에서 가끔 429 오류가 나오는 분
- 같은 요청을 반복하다가 사용량이 더 늘어나는 문제를 막고 싶은 분
- 요청 수 제한과 토큰 제한을 구분하고 싶은 분
일반 ChatGPT 화면 사용 중 오류라면 API 코드의 재시도 로직을 고칠 수 없습니다. 이 글의 기준은 API 응답을 직접 다루는 경우에 적용됩니다.
자주 묻는 질문
429가 나오면 몇 초 뒤에 다시 보내야 하나요?
응답에 Retry-After가 있으면 그 값 이상 기다리고, 없으면 제한된 지수 백오프를 사용하세요.[2]
실패한 요청도 사용량에 포함되나요?
OpenAI 문서는 실패한 요청도 분당 제한에 영향을 줄 수 있다고 안내합니다.[2]
API 키를 새로 만들면 rate limit이 풀리나요?
그렇게 가정하면 안 됩니다. rate limit은 조직·프로젝트 수준에서 정의될 수 있고 모델별 제한도 다릅니다.[2]
초보자 체크리스트
- ☐ 상태 코드와 오류 본문을 함께 기록했습니다.
- ☐
Retry-After가 있는지 확인했습니다. - ☐ 요청 수 제한과 토큰 제한을 구분했습니다.
- ☐ 재시도 횟수와 총 대기 시간에 상한을 뒀습니다.
- ☐ 공식 SDK가 이미 재시도하는지 확인했습니다.
- ☐ 결제·할당량·권한 오류는 반복 재시도하지 않았습니다.
관련 글
- AI 답변이 중간에 끊길 때, 출력 길이 설정부터 확인하는 법
- AI API 키를 채팅창에 넣으면 안 되는 이유와 안전한 보관법
- AI가 JSON 형식을 자꾸 바꿀 때, 구조화된 출력을 쓰는 법
다음 행동
다음 429 오류가 나오면 재시도 버튼부터 누르지 말고 응답 헤더와 본문을 저장하세요. Retry-After가 있으면 기다리고, 결제·할당량 오류인지 먼저 구분하면 됩니다.