method_not_allowed adalah kode error HTTP 405 pada Se-Hari API. Path-nya benar, tapi method yang Anda pakai tidak tersedia di sana. Header Allow pada respons menyebutkan method apa saja yang bisa dipakai.
#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": "method_not_allowed",
"message": "Contoh pesan untuk method_not_allowed.",
"docs_url": "https://se-hari.com/docs/error/method-not-allowed",
"request_id": "req_a1b2c3d4e5f6",
"details": {}
}
}#Kapan ini muncul
Kode ini jarang muncul pada integrasi yang sudah berjalan; hampir selalu ia menandai kesalahan pembacaan dokumentasi atau HTTP client yang berperilaku tidak seperti dugaan. Yang paling sering: klien yang mengubah POST menjadi GET saat mengikuti redirect, sesuai perilaku lama yang masih jadi bawaan di beberapa pustaka.
#Kenapa ini terjadi
GETdipakai untuk endpoint yang hanya menerimaPOSTPUTdipakai padahal endpoint memakaiPATCH- Endpoint MCP (
/api/mcp) diakses lewatGET— ia hanya bicara JSON-RPC lewatPOST
#Cara memperbaikinya
Periksa halaman referensi endpointnya. Kalau Anda memakai HTTP client yang mengubah method saat mengikuti redirect, matikan perilaku itu — beberapa klien mengubah POST menjadi GET pada 301.
#Yang memicu error
curl "https://se-hari.com/api/mcp" -H "Authorization: Bearer $SEHARI_API_KEY"#Yang seharusnya
curl -X POST "https://se-hari.com/api/mcp" \
-H "Authorization: Bearer $SEHARI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'#Aman diulang?
Percuma tanpa perubahan. Ganti method-nya. Tidak ada risiko apa pun dalam mengulang, karena request tidak pernah sampai ke handler.
#Jangan tertukar dengan
Kalau path-nya yang salah, Anda mendapat 404, bukan kode ini. Kode ini justru bukti bahwa path Anda benar — yang perlu diganti hanyalah method-nya. Header Allow pada respons memberi tahu method apa saja yang tersedia di sana.
#Mencegahnya terulang
Periksa header Allow pada respons — di sana disebutkan method apa yang sebenarnya tersedia. Kalau Anda memakai HTTP client yang mengikuti redirect otomatis, pastikan ia mempertahankan method dan body. Untuk endpoint kami, panggil URL final secara langsung; tidak ada endpoint v1 yang dimaksudkan untuk diakses lewat redirect.
#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 === 'method_not_allowed') {
// Periksa halaman referensi endpointnya. Kalau Anda memakai HTTP client yang mengubah…
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