| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- failed upgrade header
- MSA
- SSH
- 클로드코드
- Claude사용량확인
- WebSocket
- 커리어스킬
- java
- 페이지이동경고
- 개발생산성
- ClaudeTeam요금제
- Dominic
- KPT
- byungjoo kim
- remote
- docker-compose
- socjs
- GIT
- Spring
- omz
- gcOverhead
- 토이프로젝트
- Anthropic
- AWS
- claudecode
- AI코딩
- beforeunload
- rsa충돌
- docker
- python
- Today
- Total
Eyeeshot BloG
Claude Code 팀 사용량 확인, Team 플랜에선 API가 없습니다 (그래서 직접 만들었다) 본문
Claude Code 팀 사용량 확인, Team 플랜에선 API가 없습니다 (그래서 직접 만들었다)
eyeeshot 2026. 9. 28. 07:51관리자의 질문
팀에서 Claude Code(클로드 코드)를 쓰기 시작하면 개발 리더 입장에서 반드시 마주치는 질문이 있다.
"누가, 얼마나, 어떤 모델로 쓰고 있지? 그리고 잘 쓰고 있는 건가?"
나도 이 질문에 수치로 답하고 싶었다. 사실 몇 달 전에 한 번 시도했다가 포기한 적이 있다. 그때는 "뭔가 API가 있겠지" 하고 문서를 뒤지다가 흐지부지됐는데, 이번에 제대로 파보니 포기했던 이유가 명확해졌다. Team 플랜에는 사용량 API가 없다.
잠깐: Console 조직과 Team 플랜은 다른 것이다
여기서 헷갈리기 쉬운 게 있다. 나도 처음엔 몰랐다. Anthropic에서 Claude를 "회사로" 쓰는 방법이 두 갈래다:
- Console 조직 (API 종량제) — platform.claude.com에서 관리.
sk-ant-...API 키를 발급받아 쓴 토큰만큼 과금된다. 자체 서비스에 Claude API를 붙이는 회사들이 쓰는 방식이고, Claude Code도 API 키로 로그인해서 쓸 수 있다. - 구독 플랜 (claude.ai 계정) — Pro/Team/Enterprise. 인당 월정액이고, Claude Code에 claude.ai 계정으로 로그인해서 쓴다. 팀원들이 "로그인 창에서 카카오/구글 계정처럼 클로드 계정으로 로그인"한다면 이쪽이다.
우리 팀은 Team 플랜(구독)이다. 그리고 사용량 API는 이 구분에 따라 갈린다 — 관리 도구는 대부분 Console 쪽에 몰려 있다.
공식 경로 확인: 세 가지 다 막힌다
Anthropic 문서에 사용량 관련 API는 두 종류가 있다. 결론부터 표로:
| 방법 | 대상 | Team 플랜에서 |
|---|---|---|
Admin API (/v1/organizations/usage_report/...) |
Console(API 종량제) 조직 | ❌ Admin 키 발급 자체가 불가 |
Enterprise Analytics API (/v1/organizations/analytics/...) |
Enterprise 플랜 | ❌ Team은 대상 아님 |
| claude.ai 관리자 대시보드 | Team/Enterprise | △ 화면으로만, export·API 없음 |
Admin API 키는 Console 조직의 관리자만 발급할 수 있고, Analytics API 키는 Enterprise의 Primary Owner만 만들 수 있다. Team 구독 조직은 어느 쪽에도 해당하지 않는다. 즉 Team 플랜 관리자가 팀 사용량을 코드로 뽑을 공식 방법은 (2026년 9월 기준) 없다.
반전: 데이터는 이미 각자 PC에 전부 있다
그런데 Claude Code는 모든 세션을 로컬에 JSONL로 남긴다.
맥/리눅스: ~/.claude/projects/<프로젝트별 폴더>/<세션ID>.jsonl
윈도우: C:\Users\<이름>\.claude\projects\...
파일을 열어보면 어시스턴트 응답마다 이런 레코드가 있다 (필요한 부분만 발췌):
{
"type": "assistant",
"timestamp": "2026-09-25T11:42:03.512Z",
"message": {
"id": "msg_01...",
"model": "claude-opus-4-8",
"usage": {
"input_tokens": 512,
"output_tokens": 2048,
"cache_creation_input_tokens": 12000,
"cache_read_input_tokens": 480000
}
}
}
모델명과 토큰 4종(입력/출력/캐시 쓰기/캐시 읽기)이 다 있다. 이걸 집계해서 API 정가로 환산하면 "이 사용량을 API로 썼다면 얼마"가 나온다. Team은 정액제라 실제 청구액은 아니지만, 팀원 간 비교와 주간 추이를 보는 지표로는 충분하다.
집계 스크립트 (복사해서 바로 실행 가능)
표준 라이브러리만 쓰므로 파이썬만 있으면 된다. usage_check.py로 저장하고 python3 usage_check.py 실행:
#!/usr/bin/env python3
"""~/.claude/projects 로그를 집계해 일별 토큰·정가 환산 비용을 출력."""
import glob, json, os, datetime as dt
from collections import defaultdict
DAYS = 7 # 최근 N일
# (input, output) USD / 1M tokens. 캐시 쓰기 = input x1.25, 읽기 = x0.1
PRICES = {"claude-fable": (10, 50), "claude-opus": (5, 25),
"claude-sonnet": (3, 15), "claude-haiku": (1, 5)}
since = dt.date.today() - dt.timedelta(days=DAYS)
daily = defaultdict(float); seen = set()
for p in glob.glob(os.path.expanduser("~/.claude/projects/**/*.jsonl"),
recursive=True):
for line in open(p, errors="replace"):
try: rec = json.loads(line)
except ValueError: continue
m, ts = rec.get("message") or {}, rec.get("timestamp", "")
u = m.get("usage") if isinstance(m, dict) else None
if not (u and ts) or (m.get("id"), rec.get("requestId")) in seen:
continue
seen.add((m.get("id"), rec.get("requestId")))
day = ts[:10]
if day < since.isoformat(): continue
pin, pout = next((v for k, v in PRICES.items()
if (m.get("model") or "").startswith(k)), (5, 25))
daily[day] += ((u.get("input_tokens", 0) * pin
+ u.get("output_tokens", 0) * pout
+ u.get("cache_creation_input_tokens", 0) * pin * 1.25
+ u.get("cache_read_input_tokens", 0) * pin * 0.1) / 1e6)
for day in sorted(daily):
print(f"{day} ${daily[day]:8.2f}")
print(f"합계 ${sum(daily.values()):8.2f} (API 정가 환산, 실청구액 아님)")
핵심 디테일 두 가지:
- 중복 제거: 스트리밍 중 같은 메시지가 여러 줄로 기록될 수 있어서
(message.id, requestId)로 dedup한다. 이거 안 하면 사용량이 뻥튀기된다. - 캐시 토큰 가중치: 캐시 쓰기는 입력 단가의 1.25배, 캐시 읽기는 0.1배다. Claude Code는 캐시 읽기 토큰이 압도적으로 많아서(내 경우 입력 토큰의 96%가 캐시 읽기) 이걸 정가로 계산하면 수치가 완전히 왜곡된다.
팀 측정으로 확장하려면: 팀원들이 각자 이 스크립트를 돌려서 결과만 공유하면 된다. 강제하기 부담스러우면 자원자부터 — 나는 내 수치를 먼저 까고 시작했다.
실제로 돌려본 결과 (내 데이터, 최근 30일)
- 활성 24일, 세션 100여 개
- 활성일당 환산 비용: 공식 문서의 기업 배포 평균($13/활성일) 대비 약 6.7배
- 모델 비중: 최상위 모델(Fable 5)이 환산 비용의 53%, Opus 4.8이 47%
- 출장 후 몰아서 일한 2주는 평소의 3~4배 스파이크 → 기준선은 평균이 아니라 중앙값으로 잡아야 했다
이 숫자를 보고 나서야 다음 실험이 정해졌다. 비용의 절반 이상이 최고가 모델인데, 모든 작업에 그게 필요할까? — 이게 다음 글의 주제다.
함정 3개 (겪고 나서 알았다)
- 로그는 30일 뒤 조용히 사라진다. Claude Code가 오래된 세션을 자동 정리한다. 나는 이것 때문에 지난 분기 출장 기간 데이터를 통째로 잃었다. 측정할 거면
~/.claude/settings.json에 먼저 넣어두자:{ "cleanupPeriodDays": 120 } - 정가 환산 ≠ 실청구액. Team은 정액제다. 이 수치는 "사용 강도" 비교용이지 회계용이 아니다. (오히려 내 환산액을 보면 구독이 얼마나 이득인지 알게 된다.)
- 로컬 로그엔 없는 지표가 있다. 도구 수락률, 코드 라인 수 같은 건 Admin API 전용이라 Team 플랜에선 못 본다. 토큰·모델·세션 수까지가 한계다.
한 줄 정리
Team 플랜은 사용량 API가 없지만, 데이터는 각자 PC의 ~/.claude/projects에 전부 있다. 보존 기간부터 늘리고(cleanupPeriodDays), 위 스크립트로 집계하라.