직접 해 본 결과만 적습니다 · 확인하지 못한 것은 그렇게 표시합니다
써 AI 마케팅 적용기 시중에 나온 AI 방법을 실무에 넣어 보고, 쓸만한지 남깁니다
반복업무 줄이기

무료 등급인데 결제 계정 때문에 막혔습니다 — API 무료 사용량이 안 잡힐 때

조건부로 쓸만2026-08-07·읽기 6분·글 써봄

무료 사용량이 있다고 적힌 API인데, 키를 넣고 부르면 계속 결제를 요구했습니다. 문서를 다시 읽어도 무료 범위 안이었습니다.

원인은 키를 발급한 프로젝트에 결제 계정이 붙어 있어서였습니다. 같은 계정이어도 프로젝트가 다르면 판정이 달라집니다.

확인은 3분이면 됩니다.

1. 이 키가 어느 프로젝트에서 나왔는지 봅니다 2. 그 프로젝트에 결제 계정이 연결돼 있는지 봅니다 3. 연결돼 있으면 결제 계정이 없는 새 프로젝트에서 키를 다시 발급합니다

무료 등급은 계정이 아니라 프로젝트로 판정됩니다

이걸 몰라서 한참 헤맸습니다. 저는 "내 계정에 무료 사용량이 있다"고 생각했는데, 실제로는 프로젝트 단위로 봅니다.

프로젝트마다 무료 등급 판정이 다르게 나오는 것을 정리한 터미널 화면

같은 사람이 만든 두 프로젝트인데 한쪽은 무료, 한쪽은 유료로 잡힙니다. 결제 계정을 연결했다는 사실 자체가 "이 프로젝트는 과금 대상" 이라는 신호가 됩니다.

무료 사용량을 안 쓰더라도 결제 계정을 붙여두는 경우가 많습니다. 다른 서비스를 쓰려고 한 번 연결해 두면, 그 프로젝트에서 나온 키는 전부 유료 취급을 받습니다.

저는 예전에 다른 용도로 결제 계정을 붙여둔 프로젝트가 있었고, 습관적으로 거기서 키를 만들었습니다. 그 프로젝트가 이미 유료로 분류돼 있다는 생각을 못 했습니다. 문서에 적힌 무료 조건만 계속 다시 읽었습니다.

한 가지 더 있습니다. 결제 계정을 나중에 떼어내도 되돌아가지 않는 경우가 있습니다. 저는 이 부분을 확인하지 못했습니다 — 떼어낸 뒤 다시 무료로 잡히는지 실제로 시험해 보지는 않았고, 그냥 새 프로젝트를 만드는 쪽이 확실해 보여서 그렇게 했습니다.

메시지로 원인을 가릅니다

증상이 비슷해 보이는 오류가 여럿이라 먼저 나눠야 합니다.

무료 등급 문제와 API 사용 설정 문제의 메시지가 다른 것을 정리한 터미널 화면

메시지에 나오는 말 원인 고칠 곳
billing·quota exceeded 결제 계정 붙은 프로젝트 프로젝트를 바꾸거나 충전
free tier not available 같은 원인 위와 같음
API has not been used API 사용 설정 안 함 콘솔에서 사용 설정
permission denied 권한 없음 계정에 권한 부여

세 번째와 네 번째는 다른 문제입니다. 여기서 헷갈리면 결제 쪽을 뒤지느라 시간을 씁니다. 저는 처음에 세 번째를 결제 문제로 착각했습니다.

해결 두 가지

하나. 결제 계정이 없는 새 프로젝트에서 발급

증상 — 무료 범위 안인데 계속 결제를 요구합니다.

원인 — 키가 나온 프로젝트에 결제 계정이 붙어 있습니다.

해결 — 새 프로젝트를 만들고, 결제 계정을 연결하지 않은 채로 키를 발급합니다.

주의할 점이 있습니다. 새 프로젝트에서는 쓸 API를 다시 사용 설정해야 합니다. 프로젝트 단위 설정이라 따라오지 않습니다. 저는 이걸 잊고 새 키가 안 된다고 또 헤맸습니다. 결제 문제를 푼 줄 알았는데 이번엔 다른 오류가 나니, 처음엔 새 프로젝트 방식 자체가 틀린 줄 알았습니다.

키를 받는 코드는 프로젝트가 바뀌어도 그대로입니다. 파일만 갈아 끼우면 됩니다.

KEY_PATH = "keys/무료프로젝트-키.json"      # 결제 계정이 안 붙은 프로젝트
cred = service_account.Credentials.from_service_account_file(KEY_PATH, scopes=[SCOPE])
cred.refresh(Request())

파일 이름에 어느 프로젝트 것인지 적어두는 게 이래서 필요합니다. 키 파일은 열어 봐도 내용이 다 비슷하게 생겨서, 이름으로 구분하지 않으면 나중에 못 알아봅니다.

무료 등급이 안 잡힐 때 확인하는 순서를 정리한 터미널 화면

둘. 소액을 충전해서 한 번에 끝내기

무료에 매달릴 이유가 없다면 적은 금액을 충전해 두는 편이 빠릅니다. 프로젝트를 나누는 것보다 관리가 단순합니다.

새 프로젝트 소액 충전
비용 안 듭니다 씁니다
관리 프로젝트가 늘어납니다 하나로 유지
사용량 한도 무료 범위에 묶입니다 넉넉합니다
실수 위험 어느 키가 어느 프로젝트인지 헷갈립니다 적습니다

여러 프로젝트를 만들면 나중에 헷갈립니다. 키가 여러 개 돌아다니는데 어느 게 어느 프로젝트 것인지 모르게 됩니다. 저는 지금 키 파일 이름에 프로젝트를 적어두는 방식으로 관리하는데, 그것도 빈틈이 있습니다.

무료 등급을 쓸 때 주의할 것

주의 내용
한도 초과 시 동작 멈추는지, 과금으로 넘어가는지 확인합니다
한도 단위 하루인지 월인지, 요청 수인지 처리량인지
무료 종료 기간 한정 무료가 있습니다. 언제 끝나는지 봅니다
자동 전환 결제 계정을 붙이면 조용히 유료로 넘어갑니다

마지막 줄이 위험합니다. 한도를 넘으면 실패로 끝날 줄 알았는데 과금으로 넘어가는 경우가 있습니다. 자동으로 도는 작업이라면 모르는 사이에 계속 쌓입니다.

저는 이걸 막으려고 호출 횟수를 코드에서 직접 세고 상한을 두는 방식을 씁니다. 서비스 쪽 한도를 믿는 것보다 확실합니다.

if state["calls_today"] >= DAILY_LIMIT:
    raise RuntimeError("오늘 호출 상한에 도달 — 내일 다시")
state["calls_today"] += 1

다만 이 방식도 프로세스가 여럿이면 셈이 어긋납니다. 여러 프로그램이 같은 키를 나눠 쓸 때 정확히 세는 방법은 아직 확인하지 못했습니다. 파일 잠금으로 될 것 같은데 실제로 테스트해 보지는 않았습니다.

확인 순서

무료가 안 잡힐 때 이 순서로 좁힙니다.

1. 오류 메시지에 billing 이 나오나 — 나오면 결제 계정 문제 2. 이 키가 어느 프로젝트에서 나왔나 3. 그 프로젝트에 결제 계정이 붙어 있나 4. 붙어 있으면 → 새 프로젝트에서 재발급, 또는 소액 충전 5. 새 프로젝트에서 API 사용 설정을 다시 했나

판정 — 조건부로 쓸만

무료 사용량은 시험해 보는 용도로는 충분합니다. 되는지 안 되는지 확인하는 데 돈을 쓸 이유가 없습니다.

다만 운영에 쓰기엔 신경 쓸 게 많습니다. 프로젝트를 나눠 관리해야 하고, 한도를 넘으면 어떻게 되는지 매번 확인해야 합니다. 자동으로 도는 작업이라면 더 그렇습니다.

저는 결국 소액 충전 쪽으로 갔습니다. 프로젝트가 늘어나면서 어느 키가 어디 것인지 헷갈리기 시작했고, 그걸 정리하는 시간이 충전 금액보다 아까웠습니다.

직접 하실 분께

하나. 오류 메시지를 끝까지 읽으세요. billing 인지 has not been used 인지에 따라 고칠 곳이 완전히 다릅니다.

둘. 새 프로젝트를 만들었으면 API 사용 설정을 다시 합니다. 프로젝트마다 따로입니다.

셋. 키 파일 이름에 어느 프로젝트 것인지 적어둡니다. 나중에 반드시 헷갈립니다.

넷. 한도를 넘겼을 때 멈추는지 과금되는지 미리 확인합니다. 자동으로 도는 작업이면 특히 그렇습니다.

다음에는 여러 프로그램이 같은 키를 나눠 쓸 때 호출 횟수를 정확히 세는 방법을 확인해보려고 합니다. 되면 이어서 적겠습니다.