gone adalah kode error HTTP 410 pada Se-Hari API. Data ini pernah ada, tapi masa simpannya sudah lewat. Berbeda dari 404 yang berarti "tidak pernah ada atau bukan milik Anda", 410 adalah pernyataan permanen: mencoba lagi nanti tidak akan mengubah apa pun.
#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": "gone",
"message": "Contoh pesan untuk gone.",
"docs_url": "https://se-hari.com/docs/error/gone",
"request_id": "req_a1b2c3d4e5f6",
"details": {
"expired_at": "2026-07-16T00:00:00Z"
}
}
}#Kapan ini muncul
410 adalah satu-satunya kode di daftar ini yang menyatakan sesuatu bersifat permanen. Retry tidak akan membantu, besok tidak akan berbeda, dan tidak ada dukungan yang bisa mengembalikannya — rekaman yang lewat masa simpan benar-benar dihapus dari penyimpanan, bukan sekadar disembunyikan.
#Kenapa ini terjadi
- Rekaman melewati masa simpan 30 hari dan sudah dihapus otomatis
- Fitur yang endpointnya sudah dihentikan
#Cara memperbaikinya
Untuk rekaman, tidak ada yang bisa dipulihkan dari sisi API — berkasnya benar-benar sudah tidak ada. Yang bisa dilakukan adalah mencegahnya terulang: jadwalkan arsip otomatis ke penyimpanan Anda sendiri sebelum hari ke-30, atau buat notulennya lebih awal supaya isinya tetap tersimpan meski rekamannya hilang.
#Yang memicu error
curl -X POST "https://se-hari.com/api/v1/recordings/<rekaman-lama>/download-url" \
-H "Authorization: Bearer $SEHARI_API_KEY"#Yang seharusnya
# Cari rekaman yang mendekati batas retensi, lalu arsipkan
curl "https://se-hari.com/api/v1/recordings?limit=100" \
-H "Authorization: Bearer $SEHARI_API_KEY" | jq '.data[] | {id, expires_at}'#Aman diulang?
Tidak akan pernah berhasil. Ini satu-satunya kode di daftar ini yang bersifat permanen. Retry apa pun, kapan pun, akan menghasilkan jawaban yang sama.
#Jangan tertukar dengan
410 dan 404 sering tertukar. Aturannya: 404 untuk sesuatu yang tidak bisa Anda akses, 410 untuk sesuatu yang dulu bisa dan kini tidak akan pernah bisa lagi. Perbedaan itu bukan formalitas — 404 mungkin salah id, sedangkan 410 berarti berhenti mencoba dan ubah rancangan alur Anda.
#Mencegahnya terulang
Retensi 30 hari adalah kejutan bagi sebagian pengguna, jadi rancang untuk itu sejak awal. Dua pencegahan yang efektif: buat notulen segera setelah rekaman siap, karena isi notulen tersimpan permanen meski rekamannya nanti hilang; dan jadwalkan arsip otomatis ke penyimpanan Anda sendiri untuk rekaman yang memang perlu disimpan lebih lama. Keduanya jauh lebih mudah daripada menjelaskan kepada seseorang bahwa rekaman rapat penting sudah tidak ada.
#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 === 'gone') {
// Untuk rekaman, tidak ada yang bisa dipulihkan dari sisi API — berkasnya benar-benar…
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