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

← All HTTP status codes · HTTP status cheat sheet · HTTP headers reference