credit_cap_exceeded adalah kode error HTTP 403 pada Se-Hari API. Saldo Anda masih ada, tapi API key yang dipakai sudah menyentuh batas kredit hariannya. Batas ini Anda sendiri yang menetapkannya di dashboard, per key.
#Bentuk responsnya
Semua error Se-Hari memakai amplop yang sama. Yang perlu dicabang di kode Anda adalah code, bukan message — teks pesan bisa kami perbaiki sewaktu-waktu, sedangkan code adalah kontrak publik yang hanya berubah lewat versi API baru.
{
"error": {
"code": "credit_cap_exceeded",
"message": "Contoh pesan untuk credit_cap_exceeded.",
"docs_url": "https://se-hari.com/docs/error/credit-cap-exceeded",
"request_id": "req_a1b2c3d4e5f6",
"details": {
"cap": 5,
"used_today": 5
}
}
}#Kapan ini muncul
Batas ini bukan batas Se-Hari, melainkan batas yang Anda pasang sendiri pada satu API key. Karena itu kode ini tidak pernah muncul kecuali seseorang pernah memutuskan angkanya. Kalau Anda tidak ingat pernah memasangnya, kemungkinan besar key-nya dibuat orang lain di tim Anda — dan itu informasi yang berguna dengan sendirinya.
#Kenapa ini terjadi
- Workflow memproses lebih banyak pekerjaan dari yang diperkirakan saat batas ditetapkan
- Beberapa integrasi berbagi satu key sehingga saling menghabiskan jatah
- Batas dipasang untuk pengujian lalu lupa dinaikkan saat masuk produksi
- Key benar-benar bocor dan dipakai orang lain — inilah skenario yang membuat batas ini ada
#Cara memperbaikinya
Buka dashboard developer, lihat tab Aktivitas untuk memastikan pemakaiannya memang berasal dari Anda, lalu naikkan batasnya. Kalau pemakaiannya tidak Anda kenali, cabut key itu sekarang — batas harian sudah membatasi kerugiannya, dan mencabut menghentikannya sepenuhnya.
#Yang memicu error
# Batas diatur 5 kredit/hari, pekerjaan butuh 20
curl -X POST "https://se-hari.com/api/v1/meetings" ...#Yang seharusnya
# Beri setiap integrasi key sendiri dengan batas yang sesuai skalanya.
# Cek pemakaian hari ini:
curl "https://se-hari.com/api/v1/credits/usage?limit=100" \
-H "Authorization: Bearer $SEHARI_API_KEY"#Aman diulang?
Percuma sampai batasnya diubah atau harinya berganti. Batas dihitung per hari, jadi pekerjaan yang tertunda bisa dijadwalkan ulang untuk besok kalau memang tidak mendesak — itu sering lebih tepat daripada menaikkan batas.
#Jangan tertukar dengan
Kalau saldo akun Anda yang habis, kodenya insufficient_credits, bukan ini. Cara membedakannya di lapangan: panggil GET /credits. Kalau saldonya masih besar sementara operasi tetap ditolak, batas harian key-lah yang tercapai — dan itu berarti pengaman Anda bekerja sebagaimana mestinya.
#Mencegahnya terulang
Pasang batas pada setiap key, bukan hanya pada yang terlihat berisiko. Batas harian adalah satu-satunya mekanisme yang membatasi kerugian sebuah key yang bocor tanpa Anda harus lebih dulu menyadari kebocorannya. Angkanya tidak perlu presisi — cukup beberapa kali lipat pemakaian normal, sehingga ia tidak pernah mengganggu operasi wajar tapi tetap menghentikan pemakaian yang jelas tidak wajar.
#Menangani ini di kode
Cabangkan pada error.code, dan bedakan kegagalan yang layak diulang dari yang tidak. Mengulang kegagalan yang tidak akan pernah berhasil hanya menghabiskan kuota rate limit — dan menyembunyikan kegagalan yang sebenarnya butuh perhatian Anda.
const res = await fetch('https://se-hari.com/api/v1/me', {
headers: { Authorization: `Bearer ${process.env.SEHARI_API_KEY}` }
});
if (!res.ok) {
const { error } = await res.json();
if (error.code === 'credit_cap_exceeded') {
// Buka [dashboard developer](/dashboard/developer), lihat tab Aktivitas untuk memastikan…
console.error(error.message, error.details);
}
// request_id adalah satu-satunya cara kami menemukan request ini di log.
console.error(`request_id: ${error.request_id}`);
}#Selanjutnya
- Semua kode error — daftar lengkap
- Autentikasi — scope dan siklus hidup API key
- Referensi API — error apa saja yang mungkin muncul di tiap endpoint