// http 4xx · client error
HTTP 409 Conflict
The request conflicts with the current state of the resource.
What HTTP 409 Conflict means
409 Conflict means the request couldn't be completed because it conflicts with the current state of the resource — a classic example is a version/edit conflict or trying to create something that already exists.
Which category is it?
409 is a 4xx code — Client error. 4xx means the request has a problem the client must fix — bad syntax, missing authentication, or a resource that isn't there. It's the caller's responsibility.
Common causes
- Editing a resource that changed since you fetched it
- Creating a resource with a duplicate unique key
- Concurrent updates to the same record
How to fix it
- Re-fetch the latest state and reapply the change
- Use optimistic concurrency (ETags/versions)
- Handle duplicates before creating
Example 409 response
PUT /api/docs/12 HTTP/1.1
If-Match: "v3"
HTTP/1.1 409 Conflict
Content-Type: application/json
{"error":"document was modified, current version is v4"}How to diagnose a 409
- Fetch the resource again to see its current state and version.
- Compare it with your change to see what conflicts: a newer version, a duplicate key, or a state that does not allow the action.
- Retry with the up-to-date version, or merge the changes and resubmit.
409 compared with similar codes
- 412: 412 Precondition Failed is returned when an If-Match or similar header condition fails. 409 is a broader conflict with the current state.
- 422: 422 means the data is invalid. 409 means valid data collides with existing state.
409 Conflict: common questions
What causes a 409 Conflict on create?
Usually a unique constraint: the resource you are creating already exists, for example an email address or username already in use.