hljs json{
"error": {
"code": 400,
"message": "User location is not supported for the API use.",
"status": "FAILED_PRECONDITION"
}
}
Gemini API가 위 응답을 돌려주면 Google이 이 요청을 처리할 전제 조건이 맞지 않는다고 판단한 것입니다. 가장 흔한 원인은 요청을 보낸 컴퓨터나 서버가 Gemini API와 Google AI Studio를 제공하지 않는 국가·지역에 있는 경우이고, 결제가 꺼져 있거나 계정 연령 인증이 빠진 경우에도 같은 400 FAILED_PRECONDITION이 올 수 있습니다. 할당량 초과(429)와 달리 기다리거나 재시도해도 풀리지 않으므로, 요청이 실제로 어디서 나가는지와 프로젝트·계정 상태를 먼저 확인해야 합니다.
FAILED_PRECONDITION은 요청 형식에는 문제가 없지만 처리에 필요한 조건이 충족되지 않았을 때 Gemini API가 쓰는 400 상태입니다. Google의 API 오류 문서(2026년 9월 20일 갱신)는 대표 예로 비활성화된 결제를 들고, 프로젝트 결제 상태나 계정 전제 조건을 확인하라고 안내합니다.
"User location is not supported for the API use." 오류의 뜻
이 메시지는 API 요청이 Gemini API 사용 가능 지역 밖에서 들어왔다는 뜻이며, 기준은 계정을 만든 나라가 아니라 요청을 실제로 보낸 기기의 위치입니다. 2026년 9월 30일 기준 Google의 사용 가능 지역 목록(2026년 4월 28일 갱신)에는 한국과 일본이 들어 있고, 중국 본토·홍콩·러시아는 없습니다.
같은 페이지는 Colab 사용자에게 지역 제한이 사용자가 있는 지역이 아니라 Colab 인스턴스가 있는 지역을 기준으로 적용된다고 설명합니다. 한국에서 작업하더라도 코드가 해외 런타임이나 목록 밖 지역의 서버에서 실행되면 이 오류가 나는 이유가 여기에 있습니다. 반대로 출장이나 여행 중에 목록 밖 지역에서 노트북으로 호출해도 같은 응답을 받습니다.
2024년 Stack Overflow 질문에는 "User location is not supported for the API use without a billing account linked."처럼 결제 계정 연결을 함께 언급하는 형태도 남아 있습니다. 지역과 결제가 모두 같은 FAILED_PRECONDITION으로 묶여 온다는 점을 보여 주는 예입니다.
원인별 확인 방법과 조치
| 원인 (2026년 9월 30일 기준, Google 문서) | 확인하는 방법 | 조치 |
|---|---|---|
| 요청이 사용 가능 지역 밖에서 나감 (출장·여행 등) | 같은 키가 한국에서는 되고 특정 장소에서만 실패함 | 사용 가능 지역에서 다시 호출합니다. 목록 밖 지역에서 업무상 계속 써야 하면 Google이 안내하는 Gemini Enterprise Agent Platform의 Gemini API를 검토합니다. |
| 서버·클라우드 함수·Colab 런타임이 목록 밖 지역에서 실행됨 | 로컬에서는 되는데 배포 후 실패함, 배포 리전이 홍콩 등 목록에 없는 곳임 | 서버 측 호출을 이용 권한이 있는 사용 가능 지역의 리전으로 옮깁니다. |
| 결제 등 프로젝트 전제 조건 미충족 | 어디서 호출해도 실패함, 새 프로젝트에서만 실패함, 메시지에 billing이 언급됨 | Google AI Studio에서 프로젝트 결제 상태를 확인하고, 필요하면 "Set up billing"으로 결제 계정을 연결합니다. |
| 계정 연령 조건 미충족 | Google AI Studio 접속 시 사용 가능 지역 안내 페이지로 넘어감 | 만 18세 이상이어야 하며, Google 계정에서 연령 인증을 마칩니다. |
판단 순서는 간단합니다. 같은 키로 다른 기기나 로컬 PC에서 호출했을 때 성공하면 위치 문제이고, 어디서 호출해도 실패하면 프로젝트 결제와 계정 연령 인증부터 봅니다.
Google AI Studio의 사용 가능 지역 안내는 이 페이지로 오게 되는 이유를 세 가지로 적습니다. 지역에서 Google AI Studio를 제공하지 않는 경우, 만 18세 이상이라는 연령 요건을 충족하지 못한 경우, 그리고 이용 자격은 있지만 Google 계정의 연령 인증을 아직 하지 않은 경우입니다. API 호출만 막히고 원인이 보이지 않을 때는 같은 계정으로 브라우저에서 Google AI Studio에 접속해 이 안내 페이지로 넘어가는지 보면, 계정이나 지역 쪽 제한인지 가늠할 수 있습니다.
요청이 실제로 나가는 위치 확인하기
위치가 원인으로 보이면 오류를 낸 코드가 돌고 있는 환경에서 직접 확인해야 합니다. 내 PC에서 확인한 결과는 서버나 런타임의 위치를 알려 주지 않습니다.
- 오류를 낸 코드가 어디서 실행되는지 적습니다. 내 PC, 회사 서버, 클라우드 함수, 컨테이너, Colab, CI 러너, 서드파티 앱의 서버 중 하나입니다.
- 그 환경에서
curl ipinfo.io를 실행해 나가는 IP의 국가를 봅니다. Colab은 Google 안내대로 노트북 셀에서!curl ipinfo.io를 실행합니다. - 클라우드 콘솔에서 함수·컨테이너·가상 머신의 배포 리전을 확인합니다. IP 위치 조회 서비스마다 결과가 조금씩 다를 수 있으므로 배포 리전 설정이 더 확실한 근거입니다.
- 환경 변수
HTTPS_PROXY,HTTP_PROXY나 회사 네트워크의 프록시 설정을 확인합니다. 의도하지 않은 프록시가 잡혀 있으면 요청이 다른 나라를 거쳐 나갈 수 있습니다. - 실행 위치가 목록 밖이면 서버 측 호출을 이용 권한이 있는 사용 가능 지역의 리전으로 옮깁니다. 이는 서비스를 어디에 배포할지 정하는 일반적인 선택이며, 본인과 서비스 사용자가 있는 지역에 대해서는 Google 약관이 정한 조건을 따라야 합니다.
오류 본문 전체를 읽는 방법
SDK나 앱이 메시지를 한 줄로 줄여 보여 주면 원인을 구분하기 어렵습니다. 원문 응답은 code, status, message 세 필드를 함께 봐야 합니다. curl에 -i를 붙이면 HTTP 상태 줄과 응답 본문을 한 번에 볼 수 있습니다.
hljs bashMODEL="사용 중인 모델 ID"
curl -s -i "https://generativelanguage.googleapis.com/v1beta/models/${MODEL}:generateContent" \
-H "x-goog-api-key: ${GEMINI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"ping"}]}]}'
Python의 google-genai SDK를 쓴다면 예외 객체에서 같은 값을 꺼낼 수 있습니다.
hljs pythonfrom google import genai
from google.genai import errors
client = genai.Client()
try:
client.models.generate_content(model="사용 중인 모델 ID", contents="ping")
except errors.APIError as e:
print(e.code, e.status, e.message)
400 FAILED_PRECONDITION과 "User location is not supported for the API use."가 함께 나오면 위치나 계정 조건 문제입니다. Interactions API는 형식이 조금 달라서 code에 failed_precondition처럼 소문자 snake_case 문자열이 들어오고, 사람이 읽는 설명은 message에 담깁니다. 대소문자만 다를 뿐 같은 종류의 오류입니다.
429·403·402와 구분하기
이 오류는 할당량 오류가 아닙니다. 요청 수나 토큰 수를 줄이거나 시간을 두고 다시 보내도 결과가 바뀌지 않습니다. 비슷하게 보이는 다른 상태 코드와는 다음처럼 구분합니다.
| 상태 (Google API 오류 문서, 2026년 9월 20일 갱신) | 의미 | 조치 |
|---|---|---|
| 400 FAILED_PRECONDITION | 전제 조건 미충족 (결제 비활성, 계정 조건, 사용 가능 지역 밖 요청) | 요청 위치, 프로젝트 결제 상태, 계정 연령 인증을 확인합니다. 재시도는 도움이 되지 않습니다. |
| 429 (RESOURCE_EXHAUSTED) | 분당·초당 요청 수 또는 토큰 한도 초과 | 지수 백오프로 기다렸다가 재시도합니다. |
| 403 PERMISSION_DENIED | API 키에 해당 리소스 권한이 없음 | API 키 권한과 프로젝트 접근 권한을 확인합니다. |
| 402 | 선불(Prepay) 크레딧 잔액 소진 | 크레딧을 충전하거나 자동 충전을 켭니다. 충전 전에는 재시도해도 실패합니다. |
429라면 한도가 API 키가 아니라 프로젝트 단위로 계산된다는 점부터 확인해야 합니다. 무료 모델과 등급별 한도는 Gemini API 무료 한도: 무료 모델, 등급 조건, 429 대처에 정리되어 있습니다. 403이 나온다면 키를 만든 프로젝트와 권한 문제이므로 AI Studio permission denied 오류 원인과 해결을 참고하세요.
Gemini CLI와 서드파티 앱에서 보이는 형태
같은 오류가 도구에 따라 다른 모양으로 나타납니다. Gemini CLI에서는 2025년 6월 26일 GitHub 이슈(google-gemini/gemini-cli #1993)에 보고된 것처럼 전부 대문자로 바뀐 형태가 출력됩니다.
hljs text[API ERROR: USER LOCATION IS NOT SUPPORTED FOR THE API USE. (STATUS: FAILED_PRECONDITION)]
Antigravity 같은 개발 도구나 Make 같은 자동화 서비스에서도 "HTTP 400 FAILED_PRECONDITION"이나 위의 JSON 전체가 그대로 보인다는 사용자 보고가 있습니다. 이때 핵심은 호출을 누가 보내느냐입니다.
- 도구가 내 PC에서 직접 Gemini API를 호출하면 내 PC의 네트워크 위치가 기준입니다. 위의 위치 확인 순서를 그대로 적용합니다.
- 서비스 운영사의 서버가 호출을 대신 보내면 그 서버의 위치와 운영사 프로젝트의 상태가 기준입니다. 이 경우 사용자 쪽에서 고칠 수 있는 부분이 거의 없으므로 운영사에 오류 원문과 발생 시각을 전달하는 것이 빠릅니다.
새 키만 실패하거나 갑자기 실패할 때
위치를 바꾸지 않았는데 이 오류가 생겼다는 보고도 있습니다. Google 도움말 커뮤니티의 2026년 2월 16일 스레드에는 새로 만든 API 키만 이 오류를 내고 기존 키는 정상 동작한다는 사례가, Google AI 개발자 포럼의 2026년 6월 26일 글에는 IP를 바꾸지 않았는데 갑자기 이 응답이 오기 시작했다는 사례가 올라와 있습니다. 두 사례 모두 사용자 보고이며, Google이 원인을 공식적으로 밝힌 내용은 아닙니다.
이런 경우에는 다음을 비교해 보면 범위를 좁힐 수 있습니다.
- 새 키와 기존 키가 같은 프로젝트에 속하는지 확인합니다. 한도와 결제는 프로젝트 단위로 적용되므로, 새 키가 결제가 꺼진 다른 프로젝트에 만들어졌을 수 있습니다.
- 두 키를 같은 기기에서 같은 요청으로 호출해 봅니다. 같은 환경에서 결과가 갈리면 위치가 아니라 프로젝트·계정 쪽 차이입니다.
- 서버를 재배포했거나 클라우드 업체가 나가는 IP를 바꿨는지 확인합니다. 코드를 건드리지 않아도 실행 위치는 바뀔 수 있습니다.
- Google 계정의 연령 인증 상태를 다시 확인합니다.
하지 말아야 할 조치와 공식 대안
VPN이나 프록시로 위치를 다르게 보이게 하거나, 생년월일·국가 같은 계정 정보를 사실과 다르게 입력하는 방법은 쓰지 마세요. Google이 정한 지역·연령 요건을 속이는 방법이고, 원인이 결제나 연령 인증이라면 애초에 문제도 풀리지 않습니다. 판단 기준은 하나입니다. 본인과 서비스 사용자가 있는 지역에 대해 Google 약관이 정한 조건을 따르는 것입니다.
사용 가능 지역 밖에서 Gemini 모델을 써야 하는 조직이라면 Google이 사용 가능 지역 페이지에서 직접 안내하는 대안은 Gemini Enterprise Agent Platform의 Gemini API입니다. Google Cloud 제품이므로 도입 전에 해당 서비스의 제공 지역과 약관을 따로 확인해야 합니다.
Google에 문의하기 전 체크리스트
아래 항목을 정리해 두면 Google AI 개발자 포럼이나 지원 채널에서 같은 질문을 여러 번 주고받지 않아도 됩니다.
code,status,message가 모두 들어 있는 오류 원문 전체- 오류가 난 날짜와 시각(시간대 포함)
- 코드가 실행된 환경과 배포 리전, 그 환경에서
curl ipinfo.io로 본 국가 - 프로젝트 ID와 Google AI Studio에서 본 결제 상태
- 키를 만든 날짜, 같은 프로젝트의 다른 키나 다른 프로젝트의 키로는 되는지 여부
- Google 계정 연령 인증 완료 여부
- 사용한 SDK·CLI 이름과 버전, 앞의
curl요청으로도 재현되는지 여부
자주 묻는 질문
한국에서 호출하는데도 이 오류가 나는 이유는 무엇인가요?
요청을 실제로 보낸 기기가 한국 밖에 있을 가능성이 가장 큽니다. 2026년 9월 30일 기준 한국은 사용 가능 지역에 포함되어 있지만, 코드가 해외 리전 서버나 Colab 인스턴스, 서드파티 서비스의 서버에서 돈다면 그 위치가 기준이 됩니다. 위치가 한국으로 확인되는데도 실패하면 프로젝트 결제 상태와 계정 연령 인증을 확인하세요.
결제를 켜면 이 오류가 해결되나요?
원인이 비활성화된 결제일 때만 해결됩니다. Google 결제 문서는 무료 등급과 유료 등급을 모두 사용 가능 지역 목록의 지역에서 제공한다고 안내하므로, 목록 밖에서 나간 요청은 결제를 켜도 그대로 실패합니다. 결제를 연결하려면 Google AI Studio에서 "Set up billing"을 누르며, 2026년 9월 30일 기준 선불(Prepay) 최소 구매 금액은 $5입니다.
기다렸다가 다시 보내면 풀리나요?
풀리지 않습니다. 400 FAILED_PRECONDITION은 요청 조건 자체의 문제라서 같은 조건으로 다시 보내면 같은 결과가 나옵니다. 기다리면 풀리는 것은 429 한도 초과이며, 이때도 지수 백오프로 간격을 늘려 가며 재시도해야 합니다.
Gemini CLI에서 이 오류가 나면 무엇부터 봐야 하나요?
Gemini CLI는 명령을 실행한 기기에서 요청을 보내므로, 그 기기의 네트워크 위치와 프록시 설정부터 확인합니다. 원격 개발 환경이나 클라우드 셸에서 CLI를 실행했다면 그 환경의 리전이 기준입니다. 위치에 문제가 없으면 CLI에 연결한 API 키가 속한 프로젝트의 결제 상태를 확인하세요.



