Client Error · 4xx

409 Conflict

The request conflicts with the current state of the resource.

What 409 Conflict means

409 Conflict signals that the request cannot be completed because of a conflict with the resource's current state. Classic cases: trying to PUT a resource version that is older than the server's (lost-update protection), creating a resource that already exists with a unique-key collision, or DELETE-ing a resource that has dependents. 409 is not "permission denied" (that is 403) or "validation error" (that is 422); it is specifically about state-based conflicts.

When servers should return it: Return 409 when the request is well-formed and authorized but conflicts with current state. Always include a body explaining the conflict.

Common causes

How to fix 409 Conflict

Example response

curl -i -X PUT -H 'If-Match: "v1"' -d '{"name":"Ada"}' https://api.example.com/users/42

HTTP/2 409
content-type: application/json
{"error":"version conflict","current_version":"v3","your_version":"v1"}

Related status codes

Frequently Asked Questions

409 vs 412?
412 is specifically about precondition failure (If-Match, If-None-Match). 409 is the general state-conflict code, including unique-key collisions, foreign-key issues, and concurrent updates without explicit preconditions.
Should I retry on 409?
Only with new data. Retrying the same request with the same conflicting state will get the same 409.
Defined in: RFC 9110 · Class: 4xx Client Error

More references

For a one-page reference of all HTTP status codes, see the HTTP cheat sheet. For testing API responses, try the API Tester tool. For inspecting responses on the command line, the curl cheat sheet covers the most common flags.