---
title: not_found — Data tidak ditemukan
source: https://se-hari.com/docs/error/not-found
updated: 2026-08-15T22:09:54.271787+00:00
---

> HTTP 404. Tidak ada data dengan id tersebut yang bisa Anda akses. Perhatikan kalimat itu: data milik akun lain juga dijawab 404, bukan 403. Menjawab 403…

`not_found` adalah kode error HTTP 404 pada Se-Hari API. Tidak ada data dengan id tersebut yang bisa Anda akses. Perhatikan kalimat itu: data milik akun lain juga dijawab 404, bukan 403. Menjawab 403 akan mengonfirmasi bahwa id tersebut ada — dan itu informasi yang tidak berhak diketahui pemanggil.

## 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": "not_found",
    "message": "Contoh pesan untuk not_found.",
    "docs_url": "https://se-hari.com/docs/error/not-found",
    "request_id": "req_a1b2c3d4e5f6",
    "details": {}
  }
}
```

## Kapan ini muncul

Kebijakan menjawab 404 untuk data milik orang lain punya konsekuensi praktis yang perlu diingat saat menelusuri masalah: kode ini tidak membuktikan datanya tidak ada. Kalau sebuah id jelas-jelas terlihat di dashboard Anda tapi API menjawab 404, pertanyaan pertamanya bukan tentang id itu, melainkan tentang key mana yang sedang dipakai.

## Kenapa ini terjadi

- Id salah ketik atau tertukar antar entitas (id notulen dipakai sebagai id rekaman)
- Data sudah dihapus
- Key yang dipakai milik akun yang berbeda dari pemilik data
- Id yang bukan UUID sama sekali — ini juga dijawab 404, bukan 400

## Cara memperbaikinya

Ambil id dari respons endpoint daftar alih-alih menyalinnya dari tempat lain. Kalau Anda yakin id-nya benar, jalankan `GET /me` dengan key yang sama dan pastikan akunnya memang pemilik data itu.

### Yang memicu error

```bash
# id notulen dipakai di endpoint rekaman
curl "https://se-hari.com/api/v1/recordings/<id-notulen>/download-url" \
  -H "Authorization: Bearer $SEHARI_API_KEY"
```

### Yang seharusnya

```bash
# Ambil id rekaman dari daftar rekaman
curl "https://se-hari.com/api/v1/recordings?limit=5" \
  -H "Authorization: Bearer $SEHARI_API_KEY" | jq '.data[].id'
```

## Aman diulang?

**Percuma tanpa perubahan.** Id-nya harus diperbaiki, atau key-nya diganti dengan milik akun yang benar. Kalau data baru saja dibuat lewat request lain yang belum selesai, tunggu selesainya alih-alih mengulang membabi buta.

## Jangan tertukar dengan

Bedanya dengan `gone` (410) penting: 404 berarti tidak ada atau bukan milik Anda, sedangkan 410 berarti pernah ada dan kini benar-benar hilang secara permanen. Untuk rekaman yang lewat masa simpan, kami menjawab 410 supaya Anda tahu tidak ada gunanya mencoba lagi. Id yang bentuknya bukan UUID juga dijawab 404, bukan 400 — pemeriksaan kepemilikan tidak membedakan keduanya.

## Mencegahnya terulang

Ambil id dari respons API, bukan dari tempat lain. Menyalin id dari URL dashboard, dari pesan Slack, atau dari catatan manual adalah sumber kesalahan yang berulang, terutama karena beberapa entitas Se-Hari punya id yang bentuknya identik. Dalam workflow, alirkan id dari langkah sebelumnya alih-alih menyimpannya di konfigurasi — id yang di-hardcode akan tetap menunjuk data yang sama lama setelah data itu tidak relevan.

## 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 === 'not_found') {
		// Ambil id dari respons endpoint daftar alih-alih menyalinnya dari tempat lain. Kalau Anda…
		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