Kenapa saldo API kamu bisa hilang — dan cara menghindarinya
“Saldo saya habis dalam semalam, nggak tahu buat apa.” Keluhan ini nyaris selalu berujung ke salah satu dari empat mekanisme yang sama. Kabar baiknya: semuanya bisa dicegah dengan pengaturan yang benar, bukan dengan berdoa.
Artikel ini membedah empat mekanisme itu satu per satu — apa yang terjadi, kenapa cepat, dan cara menutup lubangnya. Artikel ini juga jadi alasan kenapa GiantRouter dibangun dengan batas budget per key dan laporan biaya per request, bukan sebagai fitur pelengkap tapi sebagai struktur utamanya.
1. Key yang bocor, dipakai orang lain
Apa yang terjadi: API key kamu tertinggal di repo publik, di screenshot, di grup chat, atau di file konfigurasi yang ikut ter-commit. Orang lain menemukannya dan memakainya. Saldo berkurang, dan kamu tidak melihat request apa pun yang kamu kenali.
Kenapa cepat: bot yang memindai repo publik bekerja dalam hitungan menit. Key yang baru ter-commit beberapa menit sudah bisa ditemukan.
Cara menutup:
- Key tidak pernah masuk file, commit, screenshot, atau chat — pakai environment variable.
- Kalau key sempat bocor, revoke dan buat baru SEGERA — jangan tunggu.
- Pasang batas budget per key. Key bocor dengan batas Rp10.000 adalah kejadian kecil; key bocor tanpa batas adalah kejadian bulan ini.
2. Loop tanpa rem
Apa yang terjadi: aplikasimu (atau agent-nya) memasuki loop yang memanggil API terus-menerus: retry tanpa jeda, dua agent yang saling membalas, atau kode yang memanggil ulang saat respons tidak sesuai harapan. Tiap iterasi berbayar, dan tidak ada yang menekan Ctrl+C di malam hari.
Kenapa cepat: model reasoning dan agent bisa memakai token banyak per satu panggilan; dikali ratusan iterasi otomatis, angkanya bergerak cepat.
Cara menutup:
- Pasang batas budget per key — request berhenti di batas. Ini rem utamanya, dan cara pasangnya ada di dashboard.
- Di kode: batasi jumlah retry, beri jeda, dan tetapkan kondisi berhenti yang jelas.
- Untuk chatbot atau cron: pisahkan key-nya dari key kerjaan lain, supaya kejadian di satu konteks tidak menyapu semua saldo.
3. Akunan bareng yang diblokir (saldo ikut hangus)
Apa yang terjadi: kamu membeli paket “API murah” yang ternyata satu akun dipakai ramai-ramai. Penyedia mendeteksi pola pemakaian bersama dan memblokir akunnya. Semua pembeli kehilangan akses dalam satu saat — termasuk saldo yang sudah dibayar.
Kenapa cepat: ini bukan soal kecepatan, ini soal struktur. Satu akun yang dipakai banyak orang dari banyak lokasi adalah pola yang paling mudah dideteksi dan paling sering berujung pemblokiran massal.
Cara menutup: jangan memakai struktur itu untuk kerja yang penting. Dengan key milik sendiri lewat gateway resmi, pemakaianmu terisolasi — dan di GiantRouter, kalau sebuah model dihapus atau key diblokir penyedia bukan karena pelanggaran yang kamu lakukan, sisa saldo yang terkait dikembalikan pro-rata per Garansi Saldo. Penjelasan strukturalnya ada di API resmi, bukan akunan bareng.
4. Konteks agentic yang membengkak
Apa yang terjadi: kamu memakai agent (Claude Code, Cline, dan sejenisnya) untuk task besar dalam satu sesi. Tiap iterasi agent membawa ulang konteks percakapan sebagai token input. Sesi yang panjang membawa konteks yang makin besar — jadi tiap request berikutnya lebih mahal dari sebelumnya, meski task-nya terasa “sama saja”.
Kenapa cepat: biaya agentic didominasi token INPUT, dan input itu terakumulasi. Task enam jam yang dimulai dengan request murah bisa berakhir dengan request yang puluhan kali lebih mahal, tanpa ada yang berubah di harganya.
Cara menutup:
- Bagi task besar menjadi sesi-sesi pendek; mulai konteks baru per sub-task.
- Kerjakan iterasi kecil di model murah, simpan model besar untuk keputusan berat — contoh perbandingannya ada di DeepSeek vs GLM vs Claude.
- Cek laporan per request setelah sesi panjang: pola kenaikan biaya ini terlihat jelas di sana.
Checklist ringkas (salin ke README project-mu)
- Key ada di environment variable, tidak ada di file/commit
- Setiap key punya batas budget, nominalnya masuk akal untuk konteksnya
- Satu key per konteks (dev / produksi / per client)
- Retry di kode punya batas jumlah dan jeda
- Laporan pemakaian dicek setelah sesi panjang pertama
- Tahu harus ke mana kalau key bocor (revoke segera, buat baru)
Aturan umum: biaya yang terlihat tidak bisa menyelinap.
Perhatikan bahwa semua perbaikan di atas menumpuk di tiga kebiasaan yang sama:
- Satu key per konteks, dengan batas budget — supaya kejadian buruk terkunci di ruang lingkupnya.
- Key di environment variable, tidak pernah di file — supaya tidak ada yang bisa dicuri.
- Baca laporan per request — supaya kamu tahu buat apa saldo berkurang, sebelum habis.
Ini bukan kebetulan: GiantRouter didesain dengan tiga hal itu sebagai struktur dasarnya — batas budget per key yang berhenti sendiri, saldo yang tidak bisa minus, dan laporan biaya per request yang bisa kamu hitung ulang. Yang terakhir, kontrak kami tertulis: saldo tidak akan minus, dan refund pro-rata untuk kasus yang bukan kesalahanmu.