DD
DevDash

HTTP 409 Conflict: What It Means and When You See It

Quick Answer

HTTP 409 Conflict means the request conflicts with the current state of the server — for example, trying to create a resource that already exists.

When HTTP 409 Is Returned

HTTP 409 Conflict means the request cannot be completed because of a conflict with the current state of the resource. Common examples: creating a user with an email that already exists, updating a record with an outdated version (optimistic locking), concurrent edits to the same resource, and violating a unique constraint in the database. The response body typically explains what conflicted and how to resolve it.

Implementing 409 in APIs

Use 409 when a uniqueness constraint fails: if (await db.users.findByEmail(email)) return res.status(409).json({ error: "Email already in use" }). For optimistic locking: check the version or ETag before updating, return 409 if the record was modified by another request. The client should read the current state, resolve the conflict, and retry. Express.js: res.status(409).json({ error: "Conflict", field: "email" }).

Try the interactive tool

Convert any value instantly — no sign-up required

Open tool →

Frequently Asked Questions

Related Values

Want API access + no ads? Pro coming soon.