Redirection · 3xx

308 Permanent Redirect

The resource has permanently moved and the same HTTP method must be used at the new URL.

What 308 Permanent Redirect means

308 Permanent Redirect is a method-preserving 301. The URL has moved forever, and the client must use the same method (POST stays POST, PUT stays PUT). For modern APIs, 308 is the right code for permanent moves of write endpoints because it eliminates the historical 301 method-change ambiguity. For static GET resources, 301 is still fine and more widely understood.

When servers should return it: Return 308 for permanent moves of API endpoints, especially write endpoints (POST/PUT/PATCH/DELETE) where you need to preserve the method.

Example response

curl -i -X POST https://api.example.com/v1/users

HTTP/2 308
location: https://api.example.com/v2/users

Related status codes

Frequently Asked Questions

Do all clients support 308?
Modern ones do. Very old HTTP libraries may not understand 308 and treat it as an error; in that case, fall back to 301 for GET endpoints.
Does 308 transfer SEO ranking?
Yes. Google treats 308 the same as 301 for ranking purposes.
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.