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.
{
"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
limitdi luar rentang 1–100statusberisi nilai yang bukan salah satu enum yang didukungfromatautobukan timestamp ISO-8601 yang sahtolebih awal daripadafrom, 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
curl "https://se-hari.com/api/v1/notes?limit=500" \
-H "Authorization: Bearer $SEHARI_API_KEY"#Yang seharusnya
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.
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 — daftar lengkap
- Autentikasi — scope dan siklus hidup API key
- Referensi API — error apa saja yang mungkin muncul di tiap endpoint