선불 크레딧 언제 바닥나는지 몰라서, 10개 AI 서비스 잔액 대시보드를 만들었습니다
안녕하세요. 개인 프로젝트 하나 공유드립니다.
AI 서비스를 하나씩 늘려 쓰다 보니 계정이 열 개가 됐는데,
그 중에 선불 크레딧 쓰는 곳들이 제일 골치였습니다.
ElevenLabs나 fal.ai 같은 데는 크레딧이 조용히 줄어들다가 그냥 끊깁니다.
월마다 리셋되는 것도 아니라서 콘솔에 직접 들어가 보기 전엔 얼마 남았는지 알 수가 없더라고요.
그래서 잔액을 한 화면에 모으고, 줄어드는 속도 보고 언제 바닥날지도 같이 띄우게 만들었습니다.
간단할 줄 알았는데 서비스마다 사정이 너무 달라서 그게 좀 번거로웠습니다.
xAI는 prepaid/balance 를 부르면 콘솔에 뜨는 금액이랑 다르게 나옵니다.
한참 헤매다가 postpaid/invoice/preview 에서
prepaidCredits 랑 prepaidCreditsUsed 를 빼야 콘솔이랑 맞는 걸 알았습니다.
값도 {"val":"-500"} 이렇게 객체 안에 센트 단위 문자열로, 그것도 음수로 옵니다.
Kimi는 잔액이 세 개로 옵니다. available, cash, voucher.
cash_balance가 음수가 될 수 있어서, 바우처로 멀쩡히 돌아가는 계정인데도 마이너스로 보이더군요.
실제로 봐야 하는 건 available_balance고 이게 0 이하면 호출이 막힙니다.
게다가 platform.kimi.ai랑 .com이 키가 서로 안 통합니다.
교차로 부르면 401이 나는데 그게 "키가 틀렸다"로 읽혀서 키만 몇 번을 재발급했습니다.
SiliconFlow는 응답에 통화 필드가 없습니다.
근데 .cn 계정은 위안, .com 계정은 달러로 청구되더라고요.
여러 서비스 지출을 합치는 입장에선 이걸 놓치면 위안화가 달러 합계에 그대로 들어갑니다.
값도 숫자가 아니라 문자열로 옵니다.
fal.ai는 ADMIN 스코프 키만 받습니다. 기본 키로 부르면 403이 떨어지는데
에러가 authorization_error 뿐이라 스코프 문제인 줄 모르고 키를 몇 번이나 다시 발급했습니다.
OpenAI는 아예 잔액 조회 API가 없습니다. 월 사용액만 볼 수 있는데
그것도 Admin 키에 api.usage.read 스코프를 붙여야 합니다. 일반 키로는 안 됩니다.
Anthropic은 Admin 키가 조직 계정 전용이라
개인 계정이면 콘솔에서 조직을 먼저 만들어야 발급 메뉴가 열리더군요.
Gemini나 Groq도 넣어보려다 포기했습니다. 조회할 공개 API를 못 찾겠더라고요.
Perplexity는 엔드포인트가 있긴 한데 브라우저 쿠키 세션이 필요해서 API 키로는 안 되고,
Mistral은 콘솔 관리 API로 월 지출까지만 나옵니다.
혹시 다른 방법 아시는 분 계시면 알려주시면 감사하겠습니다.
하다 보니 규칙이 하나 보이던데, 선불 크레딧 파는 곳은 잔액 API가 있고
후불로 청구하는 곳은 없습니다. 쓴 만큼 청구하는 구조에선 잔액이라는 개념 자체가 없어서인 것 같습니다.
결과물은 https://subscribeinventory.web.app 입니다. 무료고요,
10개 서비스 잔액이랑 사용액을 한 화면에 모아서 보여주고
시간별로 히스토리를 쌓아서 7일 추이랑 "이 속도면 며칠 뒤 소진" 예상도 같이 띄웁니다.
이번 달 지출이 어디에 얼마나 나갔는지, 뭐가 먼저 바닥날지도 따로 보여줍니다.
잔액이 정해둔 값 밑으로 떨어지면 Slack으로 알려주는데,
서버가 매시 돌면서 확인하는 거라 PC를 꺼놔도 알림은 옵니다.
키를 다루는 서비스라 이건 먼저 말씀드리는 게 맞을 것 같습니다.
API 키는 브라우저 localStorage 에만 저장되고 조회할 때마다 요청 본문으로 보냅니다.
서버는 중계만 하고 저장하지 않습니다. 캐시도 키 원문이 아니라 SHA-256 지문으로 잡고요.
프로바이더 API들이 CORS를 막아놔서 브라우저에서 직접 못 부르는 바람에 중계 서버가 꼈습니다.
소스는 공개해뒀습니다.
https://github.com/keaunsolNa/SubscribeInventory
Google 로그인을 받는 건 공개 중계 서버라 남용 방지 때문이고,
로그인 정보는 알림 구독 소유자 구분에만 씁니다.
서비스별로 잔액 확인하는 방법은 따로 정리해뒀으니
대시보드 안 쓰시더라도 필요할 때 보시면 될 것 같습니다.
https://subscribeinventory.web.app/guides/
UI든 기술적인 부분이든 개선할 점 알려주시면 도움 많이 될 것 같습니다. 특히 현 서비스에는 없지만 필요하다고 생각되는 AI 서비스 종류도요. 감사합니다.