408 Request Timeout
The server gave up waiting for the client to finish sending its request — slow or stalled upload, or a connection held open without a complete request. Unlike 504 (server-side upstream slowness), 408 points at the client-to-server leg.
What usually causes it
- Slow/unstable client networks during large uploads
- Clients opening connections without sending (keep-alive reuse edge cases)
- Aggressive server request timeouts vs large payloads
How to debug and fix it
- Client-side: retry is safe and expected — browsers do it automatically for idempotent requests.
- For uploads, use chunking/resumable protocols rather than raising server timeouts indefinitely.
- Server-side: tune the request/headers timeout to fit real payload sizes (nginx client_body_timeout, etc.).
Easily confused with
Debugging an API? Build and inspect requests, check response headers, or read the full status-code debugging guide.