hljs json{"error":{"code":429,"message":"Resource has been exhausted (e.g. check quota).","status":"RESOURCE_EXHAUSTED"}}
Gemini API가 위 응답을 돌려줬다면, Google 프로젝트에 걸린 한도 중 하나(RPM, TPM, RPD, 이미지 모델의 IPM, 또는 유료 등급의 10분 지출 한도)를 넘었다는 뜻입니다. 해법은 어느 한도인지에 따라 갈립니다. 분당 한도라면 잠시 기다렸다가 지수 백오프로 재시도하면 되고, 하루 한도(RPD)라면 한국 시간 오후 4시(11월 1일 서머타임 종료 후에는 오후 5시) 초기화를 기다리거나 모델을 바꿔야 하며, 메시지에 limit: 0이 보이면 그 모델은 현재 프로젝트에서 무료로 쓸 수 없습니다.
RESOURCE_EXHAUSTED는 Gemini API가 HTTP 429와 함께 보내는 상태값으로, 요청 형식이 틀린 것이 아니라 할당량이 바닥났다는 신호입니다. 같은 오류가 일부 라이브러리에서는 error: RetriableError: [RESOURCE_EXHAUSTED], Gemini CLI에서는 [API Error: Resource has been exhausted (e.g. check quota).]처럼 모양만 바뀌어 나타납니다. 아래 한도 구조와 등급 조건은 2026년 9월 30일 기준 Google 비율 제한 문서(2026년 9월 2일 갱신)와 API 오류 문서(2026년 9월 20일 갱신)에 따른 것입니다.
429 RESOURCE_EXHAUSTED를 일으키는 한도 6가지
Gemini API 비율 제한은 API 키가 아니라 프로젝트 단위로 적용되고, 여러 한도 중 하나만 넘어도 429가 납니다. 공식 문서도 "Rate limits are applied per project, not per API key."라고 적고 있어서, 같은 프로젝트에서 키를 몇 개 더 만들어도 한도는 늘어나지 않습니다.
| 한도 (2026년 9월 30일 기준) | 세는 대상 | 풀리는 시점 | 걸렸을 때 할 일 |
|---|---|---|---|
| RPM (Requests per minute) | 분당 요청 수 | 분 단위라 잠시 뒤 | 지수 백오프로 재시도, 동시 요청 수 줄이기 |
| TPM (Tokens per minute) | 분당 입력 토큰 수 | 분 단위라 잠시 뒤 | 긴 프롬프트·첨부 파일 줄이기, 큰 요청을 시간차로 나누기 |
| RPD (Requests per day) | 하루 요청 수 | 미국 태평양 시간 자정(한국 시간 오후 4시, 11월 1일 이후 오후 5시) | 같은 모델로 재시도하지 말고 초기화 대기, 다른 모델, 등급 상향 |
| IPM (Images per minute) | 이미지 생성 모델의 분당 이미지 수 | 분 단위라 잠시 뒤 | 백오프, 한 번에 생성하는 이미지 수 줄이기 |
| TPD (Tokens per day) | 일부 모델의 하루 토큰 수 | 하루 단위(초기화 시각은 문서에 RPD만 명시) | RPD와 같은 방식으로 대응 |
| 10분 지출 한도 | 유료 등급의 최근 10분 사용 금액: Tier 1 $10, Tier 2 $50, Tier 3 $200 | 10분 이동 창이라 최대 10분 안에 여유가 생김 | 몇 분 기다리기, 비용이 큰 요청 분산, 등급 상향 |
TPM은 입력 토큰만 셉니다. 긴 문서나 이미지를 매번 통째로 첨부하는 앱은 요청 수가 적어도 TPM에서 먼저 막힐 수 있습니다. 반대로 짧은 요청을 빠르게 여러 번 보내는 앱은 RPM이 먼저 찹니다.
모델별 구체 수치는 문서 본문에 없습니다. 문서는 "Limits vary depending on the specific model being used"라고만 하고, 현재 프로젝트의 모델별 한도는 AI Studio 비율 제한 페이지에서 보여 줍니다. 오래된 블로그의 무료 한도 숫자보다 이 화면이 기준입니다.
한국 시간 환산은 이렇게 계산합니다. 미국 태평양 시간이 서머타임(PDT, UTC-7)일 때 자정은 UTC 07시, 곧 한국 시간 오후 4시입니다. 2026년에는 11월 1일에 서머타임이 끝나고 표준시(PST, UTC-8)로 돌아가므로, 그 뒤로는 UTC 08시인 한국 시간 오후 5시에 RPD가 초기화됩니다.
어느 한도에 걸렸는지 판단하는 순서
- AI Studio 비율 제한 페이지를 열고, 오류가 난 API 키가 속한 프로젝트를 고릅니다. 호출한 모델의 RPM·TPM·RPD 한도와 현재 사용량을 나란히 보고, 한도선에 닿은 항목을 찾습니다.
- 오류 본문 전체를 읽습니다. 위 JSON은 요약이고, 응답의 세부 정보에 어떤 할당량인지와
limit값이 함께 붙어 오기도 합니다. 2024년 3월 18일 Google 개발자 포럼에 올라온 사례에는GenerateContent request limit per …형태의 줄이 들어 있었습니다. - 확인한 한도에 맞춰 아래 규칙대로 대응합니다.
- 분당 한도(RPM·TPM·IPM)라면 지수 백오프로 재시도합니다. Google 문제 해결 문서의 예시대로 1초, 2초, 4초, 8초처럼 대기 시간을 늘리고, 여러 작업이 동시에 재시도하지 않도록 무작위 지연(jitter)을 더합니다.
- 하루 한도(RPD·TPD)라면 같은 모델로 재시도하지 않습니다. 한국 시간 오후 4시(11월 1일 이후 오후 5시)까지 기다리거나, 한도가 남은 다른 모델로 바꾸거나, 결제를 연결해 등급을 올립니다.
- 메시지에
limit: 0이 있다면 그 모델에 대한 이 프로젝트의 할당량이 0이라는 뜻이고, 기다려도 풀리지 않습니다. 2026년 9월 30일 기준 Nano Banana 2, Nano Banana Pro, Veo 3.1, Gemini 3.1 Pro Preview처럼 무료 등급이 없는 모델을 무료 프로젝트에서 호출할 때가 대표적입니다. 결제 계정을 연결하거나 무료 등급이 있는 모델로 바꿉니다. 모델별 무료 여부는 Gemini API 무료 한도: 무료 모델, 등급 조건, 429 대처에 정리돼 있습니다. - 유료 등급인데 대시보드의 RPM·RPD에는 여유가 있다면 10분 지출 한도를 의심합니다. 최대 10분 기다리면 풀리고, 같은 일이 반복되면 비싼 요청을 시간에 걸쳐 나누거나 다음 등급으로 올라갈 조건을 채웁니다.
429와 비슷해 보여도 재시도로 풀리지 않는 오류가 있습니다. HTTP 402는 선불 크레딧 잔액이 $0이 됐다는 뜻이라 충전하거나 자동 충전(auto-reload)을 켜야 하고, 400 FAILED_PRECONDITION은 결제가 비활성화된 경우처럼 사전 조건이 빠진 상태, 403 PERMISSION_DENIED는 API 키에 해당 리소스 권한이 없는 상태입니다. Google 문서는 400, 402, 403을 다시 보내지 말라고 안내합니다.
재시도 코드 예시: 분당 한도만 백오프
Python SDK(google-genai)는 이미 429와 5xx 같은 일시 오류를 기본으로 최대 4번, 약 1초에서 시작해 최대 60초 간격으로 재시도합니다(Google 문제 해결 문서, 2026년 9월 20일 갱신). 그래서 대화형 호출은 SDK 기본값으로 충분합니다. 아래 코드는 SDK 재시도가 끝난 뒤에도 429가 남는 일괄 처리 작업에 씌우는 바깥쪽 재시도 예시입니다.
hljs python# 예시 코드: 429(분당 한도)와 503(일시 과부하)만 재시도합니다.
# API 키는 코드에 쓰지 말고 환경 변수 GEMINI_API_KEY로 넘깁니다.
from random import uniform
from time import sleep
from google import genai
from google.genai import errors
client = genai.Client() # GEMINI_API_KEY 환경 변수를 읽음
def generate_with_backoff(model: str, prompt: str, max_attempts: int = 5):
for attempt in range(max_attempts):
try:
return client.models.generate_content(model=model, contents=prompt)
except errors.APIError as e:
retryable = e.code in (429, 503) and "limit: 0" not in str(e)
if not retryable or attempt == max_attempts - 1:
raise # limit: 0, 400·402·403, 또는 재시도 소진
sleep(min(2 ** attempt, 60) + uniform(0, 1))
limit: 0과 400·402·403은 몇 번을 다시 보내도 결과가 같으므로 바로 예외를 올립니다.- 하루 한도에 걸린 경우에도 이 함수는
max_attempts번 시도한 뒤 예외를 올립니다. 로그에서 RPD 소진을 확인했다면 남은 작업은 초기화 시각 이후로 미루는 편이 요청을 낭비하지 않습니다. model에는 호출하려는 모델 ID를 그대로 넘깁니다. 모델마다 한도가 다르므로 대체 모델로 바꿀 때도 AI Studio에서 그 모델의 한도를 먼저 확인합니다.
AI Studio 키, Vertex AI, Gemini CLI의 429는 확인할 곳이 다릅니다
같은 문구의 429라도 어떤 경로로 Gemini를 호출했는지에 따라 걸린 할당량 체계가 다릅니다.
| 호출 경로 | 429가 가리키는 한도 | 확인할 곳 |
|---|---|---|
| Gemini API (AI Studio에서 발급한 API 키) | 키가 속한 프로젝트의 등급별 RPM·TPM·RPD·IPM, 10분 지출 한도 | AI Studio 비율 제한 페이지 |
| Vertex AI (Google Cloud 프로젝트) | Google Cloud 쪽의 별도 할당량 체계 | Google Cloud의 Error code 429 문서 |
| Gemini CLI (Gemini API 키 설정 시) | 그 키가 속한 프로젝트의 한도 | AI Studio 비율 제한 페이지 |
Vertex AI의 할당량은 AI Studio 키의 한도와 섞이지 않습니다. 현재 Google Cloud 문서에서는 이 영역을 Gemini Enterprise Agent Platform이라는 이름으로 묶어 두었고, 429 문서는 재시도 전략, 요청 패턴 조정, 더 큰 처리량이 필요할 때의 Provisioned Throughput을 안내합니다. 수치는 그 문서와 Cloud 콘솔의 할당량 화면에서 확인해야 하며, AI Studio 등급표를 그대로 적용하면 틀립니다.
Gemini CLI는 같은 오류를 [API Error: Resource has been exhausted (e.g. check quota).]로 보여 줍니다. 무료 프로젝트의 API 키를 CLI에 넣어 쓰면 그 프로젝트의 RPD를 함께 소모하므로, 긴 코드 작업에서는 하루 한도에 먼저 닿을 수 있습니다. GitHub의 gemini-cli 저장소에는 "프롬프트 세 번 만에" 이 오류가 났다는 이슈 #1848(2025년 6월 26일)과 같은 문구의 이슈 #19976(2026년 2월 22일)이 올라와 있습니다.
등급을 올리면 달라지는 것
비율 제한은 프로젝트의 사용량 등급에 묶여 있어서, 같은 모델이라도 등급이 오르면 한도가 커집니다. 2026년 9월 30일 기준 조건은 다음과 같습니다.
| 등급 (2026년 9월 30일 기준) | 조건 | 지출 한도(spend cap) | 10분 지출 한도 |
|---|---|---|---|
| Free | 활성 프로젝트 또는 무료 체험 | 해당 없음 | 해당 없음 |
| Tier 1 | 활성 결제 계정 연결 | $250 | $10 |
| Tier 2 | 누적 결제 $100 이상, 첫 결제 후 3일 경과 | $2,000 | $50 |
| Tier 3 | 누적 결제 $1,000 이상, 첫 결제 후 30일 경과 | $20,000~$100,000+ | $200 |
조건을 채우면 프로젝트는 자동으로 다음 등급으로 올라갑니다. Free에서 Tier 1로는 보통 즉시, 그 이후 단계는 10분 안에 반영됩니다. 유료 등급에서도 한도가 부족하면 비율 제한 문서에 있는 유료 등급 한도 상향 신청 양식을 쓸 수 있습니다.
결제 쪽에서 알아 둘 점도 있습니다. 2026년 9월 30일 기준 선불 결제는 최소 $5부터 충전하며, 잔액이 $0이 되면 429가 아니라 402가 납니다. AI Studio에서는 프로젝트별 지출 상한을 정할 수 있으므로, 재시도 로직을 켜 둔 일괄 작업이라면 상한을 먼저 걸어 두는 편이 안전합니다.
급하지 않은 대량 작업은 Batch API로
결과가 바로 필요 없는 대량 요청은 Batch API로 보내면 실시간 호출과 별도의 한도가 적용됩니다. 2026년 9월 30일 기준 Batch API 한도는 동시 배치 요청 100개, 입력 파일 2GB, 파일 저장 공간 20GB이고, 대기열에 올릴 수 있는 토큰 수는 모델과 등급에 따라 다릅니다.
수천 건의 문서 요약이나 분류처럼 RPM에 맞춰 한 건씩 흘려보내던 작업을 배치 하나로 묶으면, 같은 프로젝트의 대화형 서비스가 분당 한도를 두고 일괄 작업과 경쟁하지 않게 됩니다.
무료 등급에서 429가 자주 난다면
2025년 12월에는 무료 등급 한도가 낮아진 뒤 무료 프로젝트에서 429가 계속 난다는 사용자 보고가 Reddit과 Google AI 개발자 포럼(2025년 12월 11일 글)에 이어졌습니다. 무료 등급 수치는 이렇게 바뀔 수 있으니, 코드에 한도를 박아 두기보다 AI Studio 화면의 현재 값에 맞춰 요청 속도를 조절하는 편이 오래 갑니다.
무료 프로젝트에서 할 수 있는 조치는 요청 합치기(여러 질문을 한 요청에), 입력 토큰 줄이기, 한도가 남은 다른 모델 쓰기 정도입니다. 그래도 부족하면 결제를 연결해 Tier 1로 올리는 것이 공식 경로입니다.
Google 프로젝트 등급과는 다른 과금 경로가 필요한 개발자라면 LaoZhang API 같은 게이트웨이도 선택지입니다. Gemini를 네이티브 형식과 OpenAI 호환 형식으로 제공하고 토큰 또는 호출 단위 종량제로 과금합니다. Google 공식 서비스가 아니며 Google 프로젝트와는 별개의 한도와 과금 체계를 따르므로, 조건은 LaoZhang API 문서에서 확인해야 합니다.
자주 묻는 질문
Gemini API 할당량은 한국 시간으로 언제 초기화되나요?
RPD는 미국 태평양 시간 자정에 초기화되며, 한국 시간으로는 서머타임 기간 오후 4시, 2026년 11월 1일 서머타임 종료 후에는 오후 5시입니다. RPM·TPM·IPM은 분 단위라 잠시 뒤 다시 요청할 수 있고, 10분 지출 한도는 최근 10분 사용액 기준이라 최대 10분 안에 여유가 생깁니다.
API 키를 새로 만들면 429가 풀리나요?
풀리지 않습니다. 한도는 API 키가 아니라 프로젝트 단위로 적용되므로, 같은 프로젝트의 키는 모두 같은 RPM·TPM·RPD를 나눠 씁니다. 한도를 늘리는 공식 방법은 결제 계정 연결(Tier 1), 누적 결제로 Tier 2·3 도달, 유료 등급 한도 상향 신청입니다.
결제를 연결했는데도 429가 계속 나요.
AI Studio 비율 제한 페이지에서 Tier 1 기준 모델 한도에 닿았는지 먼저 봅니다. 한도에 여유가 있는데도 난다면 10분 지출 한도(2026년 9월 30일 기준 Tier 1은 10분에 $10)에 걸렸을 수 있으니 몇 분 뒤 다시 시도하고 요청을 분산합니다. 오류 코드가 402라면 한도가 아니라 선불 잔액이 떨어진 것입니다.
Vertex AI로 옮기면 429가 사라지나요?
Vertex AI는 AI Studio 키와 별개의 할당량 체계를 쓰므로 한도 구조가 달라질 뿐, 429가 나지 않는다는 보장은 없습니다. Vertex AI에서도 429가 나며, 대응 방법은 Google Cloud의 Error code 429 문서에 따로 정리돼 있습니다.



