client error RFC 9110
HTTP 409 Conflict
Request conflicts with the current state of the resource — someone else changed it, or you're creating a duplicate.
What it means
The request would violate a constraint that depends on the server's current state. Most common cases: (1) creating a resource that already exists (duplicate email on user registration), (2) an optimistic-concurrency check failed (you tried to update version 5 but the current version is now 7 because someone else edited).
When servers send it
- •POST /users with an email that's already registered
- •PUT with `If-Match:
` where the current ETag differs - •DELETE on a resource that has child records preventing deletion
- •Version-number mismatch on optimistic locking
What the client does
Reads the error to determine the conflict. May re-fetch the resource and retry with fresh data.
Common causes
- •Duplicate key on unique constraint
- •Two users editing the same resource simultaneously
- •Deleting a parent that has children
How to fix it
- 1.For duplicates: check if the resource already exists before creating, or handle the conflict gracefully
- 2.For concurrency: re-fetch the current version, apply the change on top, and retry
- 3.Show the user a clear message ("this email is already registered")
Similar codes
400 Bad Request client error
Server cannot process the request due to a client-side error — malformed syntax, invalid JSON, missing required fields.
422 Unprocessable Entity client error
Request is syntactically valid but the data inside it is invalid — validation failed.
401 Unauthorized client error
Authentication is required and either missing or invalid — the client is not identified.
403 Forbidden client error
Server understood who you are but refuses to authorize the request — permission denied.
404 Not Found client error
The requested URL does not exist on this server.
← All HTTP status codes · HTTP status cheat sheet · HTTP headers reference