HTTP status · 4xx — client error

409 Conflict

409 Conflict means the request conflicts with the current state of the target resource.

Key facts

Class4xx — client error
StandardRFC 9110 §15.5.10
Cacheable by defaultNo
Typical useDuplicate create, concurrent edit, version mismatch
RecoveryRe-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.

New tools, straight to your inbox

One short email when we add tools worth using. No spam, unsubscribe anytime.