|
400
|
Bad Request
RFC 9110
|
Server tidak dapat memproses permintaan karena sintaks, parameter, header, atau body tidak valid. |
Umum pada JSON tidak valid, nilai wajib hilang, URL salah bentuk, atau header abnormal. |
Periksa format body permintaan, Content-Type, parameter query, dan log validasi server.
Terkait: 422
|
|
401
|
Unauthorized
RFC 9110
|
Autentikasi diperlukan atau kredensial yang diberikan tidak valid. |
Digunakan ketika token login hilang, API key kedaluwarsa, atau header Authorization salah. |
Periksa header WWW-Authenticate, masa berlaku token, skema autentikasi, dan apakah cookie dikirim.
Terkait: 403, 407
|
|
402
|
Payment Required
RFC 9110
|
Dicadangkan untuk skenario perlu pembayaran, tetapi makna standarnya belum luas digunakan. |
Sebagian API dan layanan pembayaran memakainya secara tidak resmi untuk masalah pembayaran, kredit, atau langganan. |
Periksa dokumentasi API khusus layanan untuk arti sebenarnya dari 402 dan jalur pemulihannya.
Terkait: 403, 429
|
|
403
|
Forbidden
RFC 9110
|
Server memahami permintaan tetapi menolak memberikan akses. |
Umum pada izin tidak cukup, blokir IP, kebijakan administratif, atau akses ke resource privat. |
Periksa kebijakan otorisasi, ACL, aturan WAF, izin file, dan aturan routing secara terpisah dari autentikasi.
Terkait: 401, 404, 451
|
|
404
|
Not Found
RFC 9110
|
Resource yang diminta tidak dapat ditemukan, atau server tidak mengungkapkan apakah resource itu ada. |
Paling umum pada salah ketik URL, halaman dihapus, route keliru, atau resource yang sengaja disembunyikan. |
Periksa tautan internal, sitemap, redirect, tabel routing, dan URL pengganti untuk konten yang dihapus.
Terkait: 410, 403, 451
|
|
405
|
Method Not Allowed
RFC 9110
|
Resource ada, tetapi metode HTTP yang diminta tidak diizinkan. |
Terjadi ketika POST dikirim ke URL khusus GET atau route API dikonfigurasi untuk metode berbeda. |
Periksa header Allow, definisi metode router, dan kebijakan pembatasan metode di proxy.
Terkait: 404, 501
|
|
406
|
Not Acceptable
RFC 9110
|
Server tidak dapat menyediakan representasi yang cocok dengan header Accept dari klien. |
Dapat terjadi ketika klien hanya meminta media type, bahasa, atau encoding yang tidak didukung. |
Periksa header Accept, Accept-Language, dan Accept-Encoding serta pengaturan negosiasi konten server.
Terkait: 415
|
|
407
|
Proxy Authentication Required
RFC 9110
|
Autentikasi diperlukan sebelum klien dapat menggunakan proxy. |
Terlihat pada jaringan perusahaan, proxy keamanan, dan lingkungan autentikasi gateway. |
Periksa header Proxy-Authenticate dan Proxy-Authorization serta konfigurasi proxy jaringan.
Terkait: 401, 305
|
|
408
|
Request Timeout
RFC 9110
|
Server tidak menerima permintaan klien secara lengkap dalam waktu tunggu yang disediakan. |
Dapat terjadi pada jaringan lambat, upload besar, timeout keep-alive, atau timeout load balancer. |
Periksa perilaku retry klien, ukuran upload, pengaturan keep-alive, dan nilai timeout proxy.
Terkait: 504
|
|
409
|
Conflict
RFC 9110
|
Permintaan bertentangan dengan status resource saat ini. |
Sering digunakan untuk pembuatan duplikat, konflik versi, edit bersamaan, atau transisi status tidak valid. |
Periksa versi resource, ETags, kunci duplikat, dan aturan transisi status bisnis.
Terkait: 412, 422
|
|
410
|
Gone
RFC 9110
|
Resource pernah ada, tetapi sudah dihapus secara permanen. |
Lebih spesifik daripada 404 ketika ingin memberi tahu mesin pencari dan klien bahwa halaman sudah dihapus. |
Gunakan 301 jika ada URL pengganti; gunakan 410 bersama pembersihan sitemap jika penghapusan permanen memang benar.
Terkait: 404, 301
|
|
411
|
Length Required
RFC 9110
|
Server menolak permintaan karena tidak menyertakan Content-Length. |
Dapat terjadi ketika server atau gateway harus mengetahui panjang body permintaan sejak awal. |
Periksa Content-Length, Transfer-Encoding, dan perilaku streaming library klien.
Terkait: 413
|
|
412
|
Precondition Failed
RFC 9110
|
Prasyarat dalam permintaan bersyarat, seperti If-Match, gagal. |
Digunakan untuk pencegahan edit bersamaan, validasi ulang cache, dan pembaruan berbasis ETag. |
Bandingkan If-Match, If-None-Match, dan If-Unmodified-Since dengan versi resource saat ini.
Terkait: 304, 409, 428
|
|
413
|
Content Too Large
RFC 9110
|
Body permintaan lebih besar daripada yang bersedia diterima server. |
Umum pada batas upload file, batas ukuran body JSON, dan pembatasan ukuran body di proxy. |
Periksa batas upload di server, proxy, CDN, dan aplikasi.
Terkait: 411, 431
|
|
414
|
URI Too Long
RFC 9110
|
URI permintaan lebih panjang daripada yang dapat diproses server. |
Dapat terjadi pada query string sangat panjang, loop redirect yang rusak, atau data berlebihan di URL GET. |
Pindahkan data panjang ke body POST dan periksa batas panjang URI di proxy dan server.
Terkait: 400, 431
|
|
415
|
Unsupported Media Type
RFC 9110
|
Server tidak mendukung media type dari body permintaan. |
Terjadi ketika API JSON menerima Content-Type yang salah atau format file yang tidak didukung diupload. |
Periksa Content-Type, ekstensi file, pengaturan multipart, dan apakah parser server sudah terdaftar.
Terkait: 406, 422
|
|
416
|
Range Not Satisfiable
RFC 9110
|
Range yang diminta tidak dapat dilayani karena tidak sesuai dengan ukuran resource. |
Terjadi pada download yang dapat dilanjutkan atau streaming ketika rentang yang diminta berada di luar ukuran file. |
Periksa header Range, Content-Range, ukuran file, dan metadata cache yang sudah basi.
Terkait: 206
|
|
417
|
Expectation Failed
RFC 9110
|
Server tidak dapat memenuhi ekspektasi yang diberikan pada header Expect. |
Dapat terjadi ketika server atau proxy tidak mendukung ekspektasi seperti Expect: 100-continue. |
Hapus header Expect atau pastikan server mendukung penanganan 100 Continue.
Terkait: 100
|
|
418
|
I'm a teapot
RFC 2324 / RFC 9110
|
Kode yang berasal dari RFC April Fools, terutama bermakna historis dan budaya, bukan untuk penanganan kesalahan praktis. |
Sebagian layanan memakainya untuk respons jenaka, pengujian, atau budaya developer, tetapi tidak disarankan untuk desain API biasa. |
Untuk API produksi, gunakan kode status 4xx atau 5xx yang jelas dengan makna yang terdefinisi baik.
Terkait: 400
|
|
421
|
Misdirected Request
RFC 9110
|
Permintaan dikirim ke server yang tidak dapat menghasilkan respons untuk permintaan tersebut. |
Dapat terjadi ketika penggunaan ulang koneksi HTTP/2, TLS/SNI, CDN, atau routing reverse proxy salah konfigurasi. |
Periksa Host, SNI, sertifikat, coalescing koneksi HTTP/2, dan routing origin CDN.
Terkait: 400, 502
|
|
422
|
Unprocessable Content
RFC 9110
|
Sintaks permintaan valid, tetapi kontennya secara semantik tidak dapat diproses. |
Umum untuk kegagalan validasi API, pelanggaran aturan bisnis, dan nilai field tidak valid. |
Tentukan dalam aturan API apakah 400 berarti kesalahan format dan 422 berarti kesalahan semantik atau validasi.
Terkait: 400, 409, 415
|
|
423
|
Locked
RFC 4918
|
Resource target terkunci, sehingga permintaan tidak dapat diproses. |
Digunakan untuk kunci edit file, dokumen kolaboratif, dan kunci resource WebDAV. |
Periksa pemilik kunci, masa berlaku kunci, API unlock, dan kebijakan penanganan konflik.
Terkait: 409, 424
|
|
424
|
Failed Dependency
RFC 4918
|
Permintaan saat ini tidak dapat dilakukan karena operasi sebelumnya yang menjadi dependensi gagal. |
Digunakan ketika beberapa operasi saling bergantung dan kegagalan operasi awal menyebabkan operasi berikutnya gagal. |
Jelaskan operasi sebelumnya yang gagal dan hubungan dependensinya di body respons.
Terkait: 207, 423
|
|
425
|
Too Early
RFC 8470
|
Server menolak memproses permintaan yang mungkin terlalu dini dan berisiko diputar ulang. |
Dapat digunakan dengan data awal TLS 1.3 0-RTT ketika ada risiko replay attack. |
Pastikan permintaan non-idempotent tidak dikirim dengan 0-RTT, dan verifikasi pengaturan klien serta server.
Terkait: 429, 503
|
|
426
|
Upgrade Required
RFC 9110
|
Server mewajibkan klien melakukan upgrade protokol sebelum menangani permintaan. |
Digunakan ketika upgrade tertentu diwajibkan, seperti versi HTTP, TLS, atau WebSocket. |
Periksa header Upgrade, protokol yang didukung, dan apakah proxy meneruskan permintaan upgrade.
Terkait: 101
|
|
428
|
Precondition Required
RFC 6585
|
Server mewajibkan header permintaan bersyarat. |
Digunakan untuk mencegah pembaruan hilang akibat edit bersamaan dengan mewajibkan kondisi seperti If-Match. |
Sediakan dokumentasi API dan pesan error yang meminta klien membaca ETag lalu memperbarui dengan If-Match.
Terkait: 412, 409
|
|
429
|
Too Many Requests
RFC 6585
|
Klien mengirim terlalu banyak permintaan dalam periode waktu tertentu. |
Umum pada batas laju API, batas percobaan login, pemblokiran bot, dan perilaku refresh berlebihan. |
Periksa Retry-After, header rate limit, batas per pengguna atau per token, dan strategi backoff.
Terkait: 403, 503
|
|
431
|
Request Header Fields Too Large
RFC 6585
|
Keseluruhan header permintaan atau field header tertentu terlalu besar. |
Dapat terjadi ketika cookie menjadi terlalu besar atau token autentikasi, header pelacakan, atau header tambahan proxy menumpuk. |
Kurangi ukuran Cookie, ukuran header Authorization, dan header yang ditambahkan oleh rantai proxy.
Terkait: 400, 413, 414
|
|
451
|
Unavailable For Legal Reasons
RFC 7725
|
Resource tidak dapat disediakan karena alasan hukum. |
Digunakan ketika akses ke konten dibatasi oleh perintah pengadilan, permintaan pemerintah, pemberitahuan hak cipta, atau regulasi lokal. |
Pastikan kode ini digunakan untuk mengidentifikasi kewajiban hukum secara transparan, berbeda dari 403 atau 404 umum.
Terkait: 403, 404, 410
|