Redirection · 3xx

303 See Other

The response to your request can be found at a different URL, and you should fetch it with GET.

What 303 See Other means

303 See Other is the "POST/Redirect/GET" status code. It is the canonical way to redirect after a form submission: the client POSTs to /submit, the server processes the data and responds with 303 pointing at /thanks; the browser does a GET on /thanks. This avoids the duplicate-submission problem (refresh the page after a POST and most browsers warn "do you want to resubmit?"). With 303, refresh just reloads /thanks, which is idempotent.

When servers should return it: Return 303 after a state-changing POST or PUT, when you want the client to GET a different URL to see the result. Always pair with a meaningful Location header.

Example response

curl -i -X POST -d "name=Ada" https://example.com/users

HTTP/2 303
location: /users/42

Related status codes

Frequently Asked Questions

How is 303 different from 302?
303 explicitly tells the client to use GET on the new URL, even if the original request was POST. 302 historically left this ambiguous.
Is 303 cached?
No, 303 responses are not cached by default. Use Cache-Control headers if you want different behavior.
Defined in: RFC 9110 · Class: 3xx Redirection

More references

For a one-page reference of all HTTP status codes, see the HTTP cheat sheet. For testing API responses, try the API Tester tool. For inspecting responses on the command line, the curl cheat sheet covers the most common flags.