HTTP status · 4xx — client error
409 Conflict
409 Conflict means the request conflicts with the current state of the target resource.
Key facts
| Class | 4xx — client error |
|---|---|
| Standard | RFC 9110 §15.5.10 |
| Cacheable by default | No |
| Typical use | Duplicate create, concurrent edit, version mismatch |
| Recovery | Re-read state, then retry with new preconditions |
What 409 means
The server could not apply the request because it contradicts the resource's current state. Two common shapes: a create that would duplicate a unique key, and an update based on a stale version. The conflict is about state, not syntax — the request may be perfectly well formed.
Designing a recoverable conflict
Return enough information for the client to resolve it: which field collided, or the current version. For concurrent edits, combine 409 with ETag and If-Match so the client can detect the stale write before it lands. A bare 409 with no detail forces guesswork and encourages blind retries that conflict again.
Frequently asked questions
Is 409 the right code for a duplicate email?
It is a common choice when the duplicate violates the resource state. Some APIs prefer 422 for validation errors; the important part is consistency and a body that names the conflict.
How should a client handle 409?
Re-read the current resource, merge or correct the change, then retry with an updated precondition such as If-Match.