API 오류
API 오류
이 페이지는 GenerateContent API가 반환하는 백엔드 오류 코드 참조, gRPC 오류 응답 형식 설명, 그리고 문제 해결 절차를 제공해요.
출처: 원문
본문
HTTP 오류 코드
다음 표는 일반적인 백엔드 오류 코드와 원인 설명, 권장 해결 방법을 보여줘요.
| HTTP 코드 | 상태 | 설명 | 예시 | 해결 방법 |
|---|---|---|---|---|
| 400 | INVALID_ARGUMENT | 요청 본문이 잘못됐어요. | 요청에 오타가 있거나 필수 필드가 빠졌어요. | API 참조에서 요청 형식·예시·지원 버전을 확인하세요. 더 새 API 버전의 기능을 옛 엔드포인트에서 쓰면 오류가 날 수 있어요. |
| 400 | FAILED_PRECONDITION | Gemini API 무료 등급을 해당 국가에서 지원하지 않아요. Google AI Studio에서 프로젝트에 결제를 활성화해 주세요. | 무료 등급이 지원되지 않는 지역에서 요청하는데 Google AI Studio에서 결제를 활성화하지 않았어요. | Gemini API를 쓰려면 Google AI Studio에서 유료 플랜을 설정해야 해요. |
| 402 | RESOURCE_EXHAUSTED | Prepay 크레딧 잔액이 소진됐어요. | 결제 계정의 Prepay 크레딧이 모두 소진돼 그 결제 계정에 연결된 모든 API 키가 작동을 멈춰요. | 결제 계정에 크레딧 추가 또는 자동 충전을 켜세요. 크레딧이 추가되기 전까지 성공하지 않으므로 이 요청을 재시도하지 마세요. |
| 403 | PERMISSION_DENIED | API 키에 필요한 권한이 없어요. | 잘못된 API 키를 쓰거나 적절한 인증 없이 튜닝된 모델을 쓰려고 해요. | API 키가 설정됐고 올바른 접근 권한이 있는지 확인하세요. 튜닝된 모델을 쓰려면 적절한 인증을 거치세요. |
| 404 | NOT_FOUND | 요청한 리소스를 찾을 수 없어요. | 요청에서 참조한 이미지·오디오·비디오 파일을 찾을 수 없어요. | 요청의 모든 파라미터가 API 버전에 유효한지 확인하세요. |
| 429 | RESOURCE_EXHAUSTED | API의 속도 제한(RPM, TPM, RPD, 지출 등) 중 하나를 초과했어요. | 요청을 너무 많이 보내거나 토큰을 너무 많이 쓰거나 계정 결제 기록·등급에 따른 지출 한도를 초과했어요. | 모델의 속도 제한 안에 있는지 확인하세요. 잠시 기다렸다가 재시도하세요. 요청 속도나 크기를 줄이세요. 필요하면 속도 제한 증가 요청을 하세요. |
| 499 | CANCELLED | 보통 호출자에 의해 작업이 취소됐어요. | API가 응답을 끝내기 전에 클라이언트가 연결을 닫았어요. | 클라이언트나 네트워크 인프라가 연결을 조기에 닫는지(예: 클라이언트 측 타임아웃) 확인하세요. |
| 500 | INTERNAL | Google 측에서 예상치 못한 오류가 발생했어요. | 입력 컨텍스트가 너무 길어요. | Gemini API 상태 페이지에서 진행 중인 사고를 확인하세요. 입력 컨텍스트를 줄이거나 다른 모델(예: Gemini 2.5 Pro → Gemini 2.5 Flash)로 일시 전환해 보세요. 잠시 기다렸다가 재시도하세요. 재시도해도 지속되면 Google AI Studio의 Send feedback 버튼으로 보고하세요. |
| 503 | UNAVAILABLE | 서비스가 일시적으로 과부하되거나 다운됐을 수 있어요. | 서비스가 일시적으로 용량이 부족해요. | Gemini API 상태 페이지에서 진행 중인 사고를 확인하세요. 다른 모델(예: Gemini 2.5 Pro → Gemini 2.5 Flash)로 일시 전환해 보세요. 잠시 기다렸다가 재시도하세요. 재시도해도 지속되면 Send feedback 버튼으로 보고하세요. |
| 504 | DEADLINE_EXCEEDED | 서비스가 마감 시간 안에 처리를 끝내지 못했어요. | 프롬프트(또는 컨텍스트)가 제시간에 처리하기엔 너무 커요. | 클라이언트 요청에서 'timeout'을 더 크게 설정해 이 오류를 피하세요. |
오류 응답 형식
GenerateContent 요청이 실패하면 API는 HTTP 상태 코드(예: 400 Bad Request, 403 Forbidden, 429 Too Many Requests)를 설정하고 gRPC 상태 상세를 담은 JSON 응답 본문을 반환해요.
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_INVALID",
"domain": "googleapis.com",
"metadata": {
"service": "generativelanguage.googleapis.com"
}
},
{
"@type": "type.googleapis.com/google.rpc.LocalizedMessage",
"locale": "en-US",
"message": "API key not valid. Please pass a valid API key."
}
]
}
}
| 필드 | 타입 | 설명 |
|---|---|---|
code |
integer | HTTP 상태 코드. |
message |
string | 사람이 읽을 수 있는 오류 설명. |
status |
string | SCREAMING_CASE 형식의 gRPC 상태 코드. |
details |
array | ErrorInfo나 LocalizedMessage 같은 추가 오류 컨텍스트. |