HTTP Status Codes

HTTP 428 Precondition Required

428
MediumWeb ServerReference page

Precondition Required — the server requires a conditional request before changing state

A 428 Precondition Required response means the server will not allow the current state-changing request unless it includes an acceptable condition. The goal is usually to protect shared resources from lost updates by forcing the client to prove it is acting on a fresh resource state.

Visual summary

A quick reference view of how HTTP 428 requires a validator or timestamp condition before the server will allow a state-changing request.

HTTP 428 visual summary showing a state-changing request blocked until a required conditional header is supplied
Visual summary: 428 means the server requires a conditional guard before it will evaluate the write.

What 428 Means

The shortest useful reading of this status code.

Precondition Required means the server requires a conditional request before changing state.

For write safety, the key distinction is that 428 requires the client to supply a condition before the server will even evaluate the state change.

Quick read

Condition required before write

A 428 means the server requires a conditional request before it will allow this state-changing action.

Technical Context

How this status behaves without turning the page into a repair guide.

Condition required

A 428 is about missing conditional safeguards. The request may be syntactically valid, and the resource may exist, but the server's policy says that state cannot change unless the client first supplies a validator, timestamp condition, or similar guard against stale writes.

State protection

That makes 428 different from 412 and 409. A 412 means the condition was present but failed. A 409 is a broader state conflict. A 428 is earlier in the flow: the server is requiring the condition before it will even evaluate the state change under that policy.

Related HTTP Codes

Nearby HTTP status codes help clarify how 428 differs inside the same response family.

Common Causes

Write request omits required If-Match or If-Unmodified-Since headers

The server insists on a condition before it will allow the current write to proceed.

Origin policy protects shared resources from lost updates

The service requires proof that the client is acting on a fresh resource state.

API expects proof that the client has current resource state

The request needs a validator or timestamp guard before state can change safely.

Typical Scenarios

01

An API refuses a write request because no If-Match validator was provided

02

A shared document service requires a condition before allowing a delete or overwrite

03

A client attempts to change a resource without proving it has the latest version

What To Know

A 428 usually appears on collaborative, stateful, or API-driven resources where stale writes are a meaningful risk. The visible pattern fits a server policy demanding conditional safety rather than a malformed request or a missing page.

Frequently Asked Questions

Common interpretation questions about HTTP 428.

It usually returns 428 when the server requires a conditional request before allowing a write, delete, or other state-changing action on a resource that could be updated concurrently.

A 428 means the needed condition was missing or not supplied in an acceptable way. A 412 means the condition was supplied, but it evaluated false against the current resource state.