---
title: method_not_allowed — Method HTTP tidak didukung
source: https://se-hari.com/docs/error/method-not-allowed
updated: 2026-08-15T22:09:54.366694+00:00
---

> HTTP 405. Path-nya benar, tapi method yang Anda pakai tidak tersedia di sana. Header `Allow` pada respons menyebutkan method apa saja yang bisa dipakai.

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

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

- `GET` dipakai untuk endpoint yang hanya menerima `POST`
- `PUT` dipakai padahal endpoint memakai `PATCH`
- Endpoint MCP (`/api/mcp`) diakses lewat `GET` — ia hanya bicara JSON-RPC lewat `POST`

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

```bash
curl "https://se-hari.com/api/mcp" -H "Authorization: Bearer $SEHARI_API_KEY"
```

### Yang seharusnya

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

```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 === '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](/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