HTTP status codes / 3xx — Redirection

304 Not Modified

In one sentence

Your cached copy is still valid; no body is returned.

What it means

The answer to a conditional request (If-None-Match/If-Modified-Since) when the resource has not changed. Saves bandwidth: the body is intentionally empty and the client should use its cache.

Common causes

Reproduce it in cURL

curl -i -H 'If-None-Match: "some-etag"' https://httpbin.org/etag/some-etag

Same request, no terminal: paste this into the cURL converter for native code, or straight into ReqPad on your phone.

How to debug it

If you get 304 in an API client, your client sent caching validators — strip If-None-Match/If-Modified-Since headers to force a full 200.

Server-side note: In API debugging, strip caching headers to force the full 200 — or keep them and enjoy the bandwidth saving.

The fastest way to pin down a 304 is to reproduce the exact request and inspect what actually went over the wire — status, headers, timing and body, without your app code in the way. That is what an API client is for; ReqPad does it from your phone, with every request saved to history.

Related codes

300 Multiple Choices · 301 Moved Permanently · 302 Found · 303 See Other · 307 Temporary Redirect · 308 Permanent Redirect — or the full reference.

Reproduce that 304 in 10 seconds.

Build the request, send it, read status + headers + timing — on your iPhone. Free to start.