{"id":16121,"date":"2025-07-24T18:04:26","date_gmt":"2025-07-24T16:04:26","guid":{"rendered":"https:\/\/surver.nl\/?post_type=kennisbank&#038;p=16121"},"modified":"2025-08-21T11:03:07","modified_gmt":"2025-08-21T09:03:07","slug":"status-code-409","status":"publish","type":"kennisbank","link":"https:\/\/surver.nl\/en\/kennisbank\/statuscode-409\/","title":{"rendered":"What does status code 409 Conflict mean?"},"content":{"rendered":"<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/16d24d9a-e33d-4403-9371-76ad70065e92.png\" alt=\"409 conflict\" class=\"wp-image-16322\" srcset=\"https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/16d24d9a-e33d-4403-9371-76ad70065e92.png 1536w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/16d24d9a-e33d-4403-9371-76ad70065e92-300x200.png 300w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/16d24d9a-e33d-4403-9371-76ad70065e92-1024x683.png 1024w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/16d24d9a-e33d-4403-9371-76ad70065e92-768x512.png 768w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/16d24d9a-e33d-4403-9371-76ad70065e92-18x12.png 18w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/figure>\n\n\n\n<p>You try to do an update on an existing resource. The server receives your request, understands what you want, and refuses it. Not because the request is invalid, not because the server is unreachable, but because your action conflicts with something that already exists.<\/p>\n\n\n\n<p>That's when you get back a 409 status code. A sign that you are trying to change or create something that conflicts with the current state of the server.<\/p>\n\n\n\n<p>The http 409 error message doesn't come out of nowhere. It says: <em>this change cannot proceed without overwriting something else, or without intervention<\/em>. The server protects itself, and you, from an inadvertent error.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How does the 409 error work?<\/h2>\n\n\n\n<p>The 409 http error falls into the category of client errors, but not because you requested something incorrectly. The error occurs when the server detects a conflict between your request and the current state of the resource.<\/p>\n\n\n\n<p>Consider two users trying to edit a file at the same time. Or a POST request that contains a unique value that already exists, such as a username or slug. Sometimes it also involves versioning: you are trying to edit something that has already been modified since you last retrieved it.<\/p>\n\n\n\n<p>The response is usually simple and straightforward:<\/p>\n\n\n\n<p><strong><em>HTTP\/1.1 409 Conflict<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>Content-Type: application\/json<\/em><\/strong><\/p>\n\n\n\n<p>Sometimes the body contains additional explanations, such as about the field or object causing the conflict.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When will you see status 409 in action?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"502\" src=\"https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409-1024x502.jpeg\" alt=\"HTTP 409\" class=\"wp-image-16122\" srcset=\"https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409-1024x502.jpeg 1024w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409-300x147.jpeg 300w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409-768x376.jpeg 768w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409-1536x752.jpeg 1536w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409-18x9.jpeg 18w, https:\/\/surver.nl\/wp-content\/uploads\/2025\/07\/http-409.jpeg 1678w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Status code 409 shows up in APIs, CMSs, workflow platforms and in systems where version control or synchronization is involved. It is typical behavior at:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PUT or PATCH requests trying to overwrite older data<\/li>\n\n\n\n<li>POST requests to endpoints expecting unique values<\/li>\n\n\n\n<li>Resources with ETag or revision control<\/li>\n<\/ul>\n\n\n\n<p>In tools like Postman, you see it directly as a status code. Curl also neatly returns the 409, along with any error details.<\/p>\n\n\n\n<p>Crawlers such as Screaming Frog rarely encounter this error in standard Web structures, but may register it on interactive endpoints or documentation pages that simulate a forced POST or PUT request during the crawl.<\/p>\n\n\n\n<p>In log systems, status 409 usually stands out because there is no technical error, but there is a returned request. Especially in systems where there are many concurrent actions, it can be a useful indicator of data conflicts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What causes an http code 409?<\/h2>\n\n\n\n<p>The cause of an http 409 is rarely a programming error, but rather a logical conflict. Your request is correct, but arrives just too late, or clashes with existing values.<\/p>\n\n\n\n<p>Examples:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You are trying to create a new user with an email address that already exists<\/li>\n\n\n\n<li>You submit a change without considering the latest version of the document<\/li>\n\n\n\n<li>In a status-driven system, you do an action that is not currently allowed (e.g., adjust invoice after approval)<\/li>\n<\/ul>\n\n\n\n<p>So the error arises in situations where multiple actors or processes are trying to edit or create the same data, and the server monitors the overview.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How do you solve a 409 error?<\/h2>\n\n\n\n<p>Start by analyzing the conflict. What are you trying to change, and what is already there?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For unique fields: check if the value is already in use. If yes, modify it or choose another route.<\/li>\n\n\n\n<li>For version conflicts: get the most recent version before making changes.<\/li>\n\n\n\n<li>For workflows: look at the status of the object, and whether your action fits within the allowed transition.<\/li>\n<\/ul>\n\n\n\n<p>In some APIs, you can also use If-Match headers with ETags to check that you are editing the correct version. That avoids silent overwrites, and the chance of a status 409.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">In conclusion<\/h2>\n\n\n\n<p>The 409 status code is not a block because of an error, but a protection against an error you would otherwise make. It is a signal that the server knows what you want, but that something needs to be fixed first.<\/p>\n\n\n\n<p>Do you see an http code 409? Then it's not a matter of trying again, but of understanding <em>why<\/em> the request does not fit the current situation. Conflicts don't just happen, and you resolve them only by looking at both sides.<\/p>","protected":false},"excerpt":{"rendered":"<p>Je probeert een update te doen op een bestaande resource. De server ontvangt je verzoek, begrijpt wat je wilt, en weigert het. Niet omdat het verzoek ongeldig is, niet omdat de server onbereikbaar is, maar omdat je actie in conflict is met iets dat er al bestaat. Dat is het moment waarop je een 409 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":16322,"template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"kennisbank_categorieen":[64],"class_list":["post-16121","kennisbank","type-kennisbank","status-publish","has-post-thumbnail","hentry","kennisbank_categorieen-statuscodes"],"acf":[],"_links":{"self":[{"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/kennisbank\/16121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/kennisbank"}],"about":[{"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/types\/kennisbank"}],"author":[{"embeddable":true,"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/users\/2"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/media\/16322"}],"wp:attachment":[{"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/media?parent=16121"}],"wp:term":[{"taxonomy":"kennisbank_categorieen","embeddable":true,"href":"https:\/\/surver.nl\/en\/wp-json\/wp\/v2\/kennisbank_categorieen?post=16121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}