What does Error 409 Conflict mean?

The short answer

Error 409 Conflict means the server understood your request, but refused it because it conflicts with the current data state.

Why it happens

A 409 usually appears when your action would overwrite or duplicate something.

  • Duplicate create: You try to create a record that already exists.
  • Outdated update: You edit data that changed since you last fetched it.
  • Version mismatch: Your app sends an old version number or ETag.
  • Business rule conflict: Your request breaks a rule (for example, canceling an order that already shipped).

How to fix it

If you are a user

  • Refresh and retry to get the latest data.
  • Check for duplicates (same email, username, file name, etc.).
  • Edit again carefully if someone else changed the item first.

If you are a developer

  • Fetch latest resource state before update.
  • Use optimistic locking (version field/ETag + If-Match).
  • Return a clear error body with:
    • what conflicted
    • current value/version
    • next safe step
  • For create endpoints, support idempotency keys when possible.

When should you worry?

You should worry if 409 errors are frequent or sudden.

  • Occasional 409s are normal in collaborative apps.
  • Frequent 409s often mean poor sync logic or missing retry flow.
  • Investigate quickly if users report lost updates or repeated failures.