missing_authorization adalah kode error HTTP 401 pada Se-Hari API. Request sampai tanpa header Authorization sama sekali. Ini berbeda dari invalid_api_key, yang berarti header ada tapi isinya ditolak.
#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": "missing_authorization",
"message": "Contoh pesan untuk missing_authorization.",
"docs_url": "https://se-hari.com/docs/error/missing-authorization",
"request_id": "req_a1b2c3d4e5f6",
"details": {}
}
}#Kapan ini muncul
Kode ini dan invalid_api_key sering tertukar saat menelusuri masalah. Bedanya sederhana tapi menentukan langkah berikutnya: kode ini berarti tidak ada yang perlu diperiksa pada key Anda, karena header-nya memang tidak sampai. Fokus penelusurannya bukan pada key, melainkan pada apa yang terjadi antara kode Anda dan server kami.
#Kenapa ini terjadi
- Header memang lupa dipasang
- Variabel lingkungan kosong, sehingga header terkirim sebagai
Bearertanpa nilai - HTTP client membuang header pada redirect — beberapa klien melakukannya demi keamanan
- Proxy atau gateway di depan aplikasi Anda memfilter header yang tidak dikenalnya
#Cara memperbaikinya
Pastikan variabel lingkungannya benar-benar terisi. echo $SEHARI_API_KEY yang menghasilkan baris kosong adalah penyebab paling sering, dan pesan errornya tidak akan pernah mengatakan itu.
#Yang memicu error
# Kalau $SEHARI_API_KEY kosong, header terkirim tanpa nilai
curl "https://se-hari.com/api/v1/me" -H "Authorization: Bearer $SEHARI_API_KEY"#Yang seharusnya
# Periksa dulu isinya
if [ -z "$SEHARI_API_KEY" ]; then
echo "SEHARI_API_KEY belum diisi" >&2
exit 1
fi
curl "https://se-hari.com/api/v1/me" -H "Authorization: Bearer $SEHARI_API_KEY"#Aman diulang?
Percuma tanpa perubahan. Tidak ada gunanya mengulang sampai header-nya benar-benar terkirim. Aman diulang tanpa Idempotency-Key karena request tidak pernah melewati lapisan autentikasi.
#Jangan tertukar dengan
Pasangan terdekatnya adalah invalid_api_key: kode itu berarti header ada tapi isinya ditolak, sedangkan kode ini berarti header-nya memang tidak ada. Kalau Anda melihat kode ini pada request yang jelas-jelas memasang header, curigai sesuatu di antara kode Anda dan server kami — proxy, gateway, atau redirect yang membuang header.
#Mencegahnya terulang
Jangan pernah menaruh API key langsung di dalam kode. Selain alasan keamanan yang sudah jelas, variabel lingkungan membuat kegagalan seperti ini terlihat lebih awal: proses yang gagal start karena variabelnya kosong jauh lebih mudah didiagnosis daripada proses yang berjalan normal dan mengirim header kosong ke setiap request. Periksa keberadaan variabelnya saat aplikasi mulai berjalan, bukan saat request pertama.
#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 === 'missing_authorization') {
// Pastikan variabel lingkungannya benar-benar terisi. `echo $SEHARI_API_KEY` yang…
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