409 Conflict

The request conflicts with the current state of the resource, so it cannot be applied as sent.

Status

HTTP/1.1 409 Conflict

Details

409 says the request is well formed but incompatible with reality right now. Classic cases are a duplicate unique key, an edit based on a stale version of a document, and an operation that contradicts the resource's current lifecycle state, such as cancelling something already cancelled.

Unlike most 4xx codes, a 409 can become resolvable without changing the request at all: the conflicting state may clear on its own. The response body should carry enough detail for the client to reconcile.

Common causes

How to fix it

As the client

As the server

Examples

POST /api/accounts HTTP/1.1
Host: api.example.com
Content-Type: application/json

{"email":"user@example.com"}

HTTP/1.1 409 Conflict
Content-Type: application/json; charset=utf-8

{"error":"duplicate","field":"email","detail":"Account already exists"}

Specifications

RFC 9110 §15.5.10

See also