What it means
The request conflicts with the current state of the resource, such as a duplicate or a concurrent edit.
Common causes
- Creating a record that already exists (unique email or name)
- Editing a resource someone else changed
- A git-like version or state conflict
How to fix it
As a client or visitor
Fetch the latest state, resolve the conflict or choose a different value, then retry.
As the site or API owner
Explain what conflicts in the body. For optimistic locking with ETags, 412 is the more precise status.
Example response
HTTP/1.1
HTTP/1.1 409 Conflict
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Type: application/problem+json
{
"type": "about:blank",
"title": "Conflict",
"status": 409,
"detail": "A user with this email already exists."
} Specification
FAQ
› 409 or 422 for a duplicate email?
Both are used. 409 fits a conflict with existing data; 422 fits a validation framework. Be consistent.
› Should clients retry 409 automatically?
No; the conflict usually needs a decision. Refresh the data first.