All HTTP status codes
HTTP 409 Conflict
Client ErrorThe request conflicts with the resource's current state — classic cases are duplicate creation and stale optimistic-locking versions.
Defined in RFC 9110
Common causes
- Creating a resource that already exists (unique constraint)
- Updating with an outdated version/ETag (optimistic concurrency)
- Concurrent edits to the same resource
How to fix it
Fetch the latest state, merge, and retry
Send If-Match with the current ETag for updates
Make creation idempotent (upsert or idempotency keys)
Related status codes
412 Precondition Failed
A conditional header (If-Match, If-Unmodified-Since…) evaluated to false — the resource changed since the client last saw it.
201 CreatedThe request succeeded and a new resource was created. The Location header usually points at the new resource — the canonical response for a successful POST in REST APIs.
Want to explore status codes interactively? Try the free HTTP Status Code Reference — search, categories and example responses, right in your browser.