---
title: invalid_parameter — Parameter query tidak valid
source: https://se-hari.com/docs/error/invalid-parameter
updated: 2026-08-15T22:09:53.341979+00:00
---

> HTTP 400. Salah satu parameter di query string tidak bisa dibaca atau berada di luar rentang yang diizinkan. Seperti `invalid_request`, ini terjadi…

`invalid_parameter` adalah kode error HTTP 400 pada Se-Hari API. Salah satu parameter di query string tidak bisa dibaca atau berada di luar rentang yang diizinkan. Seperti `invalid_request`, ini terjadi sebelum data apa pun disentuh.

## 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": "invalid_parameter",
    "message": "Contoh pesan untuk invalid_parameter.",
    "docs_url": "https://se-hari.com/docs/error/invalid-parameter",
    "request_id": "req_a1b2c3d4e5f6",
    "details": {
      "parameter": "limit",
      "reason": "Maksimum 100"
    }
  }
}
```

## Kapan ini muncul

Berbeda dari `invalid_request` yang menyoroti body, kode ini menyoroti query string — dan itu membuatnya lebih sering muncul pada kode yang membangun URL secara dinamis. Gejala khasnya: kode berjalan mulus berbulan-bulan lalu tiba-tiba menolak, karena sebuah variabel yang biasanya berisi angka kini berisi `undefined` dan ikut tercetak ke dalam URL sebagai teks.

## Kenapa ini terjadi

- `limit` di luar rentang 1–100
- `status` berisi nilai yang bukan salah satu enum yang didukung
- `from` atau `to` bukan timestamp ISO-8601 yang sah
- `to` lebih awal daripada `from`, yang menghasilkan rentang kosong dan hampir selalu berarti keduanya tertukar

## Cara memperbaikinya

Periksa halaman referensi endpoint yang bersangkutan untuk daftar nilai yang sah. Untuk filter tanggal, kirim ISO-8601 lengkap (`2026-08-01T00:00:00Z`), bukan `01/08/2026`.

### Yang memicu error

```bash
curl "https://se-hari.com/api/v1/notes?limit=500" \
  -H "Authorization: Bearer $SEHARI_API_KEY"
```

### Yang seharusnya

```bash
curl "https://se-hari.com/api/v1/notes?limit=100" \
  -H "Authorization: Bearer $SEHARI_API_KEY"
```

## Aman diulang?

**Percuma tanpa perubahan.** Perbaiki parameternya lalu kirim lagi. Aman diulang berapa kali pun — endpoint daftar tidak mengubah apa-apa, dan penolakan terjadi sebelum query dijalankan.

## Jangan tertukar dengan

Bedanya dengan `invalid_request` adalah letaknya: kode ini soal query string, `invalid_request` soal body. Bedanya dengan `invalid_cursor` lebih halus — `invalid_cursor` khusus untuk `starting_after` yang tidak bisa dibaca, sedangkan kode ini untuk parameter lain seperti `limit`, `status`, `from`, dan `to`. Keduanya sama-sama HTTP 400 dan sama-sama tidak menyentuh data apa pun.

## Mencegahnya terulang

Bangun query string dengan `URLSearchParams` atau padanannya, bukan dengan penggabungan string. Selain menangani encoding, ia memaksa Anda memutuskan apa yang terjadi pada nilai kosong — dan nilai kosong yang terkirim sebagai `from=` adalah penyebab paling sering kode ini muncul pada workflow n8n, karena field tanggal yang tidak diisi di n8n bernilai string kosong, bukan 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.

```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 === 'invalid_parameter') {
		// Periksa halaman referensi endpoint yang bersangkutan untuk daftar nilai yang sah. Untuk…
		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