---
title: missing_authorization — Header Authorization tidak dikirim
source: https://se-hari.com/docs/error/missing-authorization
updated: 2026-08-15T22:09:53.652748+00:00
---

> HTTP 401. Request sampai tanpa header `Authorization` sama sekali. Ini berbeda dari `invalid_api_key`, yang berarti header ada tapi isinya ditolak.

`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.

```json
{
  "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 `Bearer ` tanpa 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

```bash
# 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

```bash
# 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.

```javascript
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](/docs/error) — daftar lengkap
- [Autentikasi](/docs/autentikasi) — scope dan siklus hidup API key
- [Referensi API](/docs/api) — error apa saja yang mungkin muncul di tiap endpoint