The server gave up waiting for the client to finish sending the request.
408 Request Timeout means the server timed out waiting for the request body. The client opened the connection, sent some headers, then went idle for too long before completing the request. This is different from a server-side processing timeout (504 Gateway Timeout). 408 is rare on modern HTTP/2 connections; it shows up most often on slow uploads, flaky mobile networks, or when keep-alive connections are reused after the server's idle timeout.
When servers should return it: Return 408 when a connection is idle past the server's read timeout while waiting for the request body or remaining headers.
HTTP/2 408
content-type: text/plain
Request timed out
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.