HTTP status codes / 4xx — Client errors
The server gave up waiting for your request to arrive.
The client opened a connection but did not finish sending the request in time. Servers send it (or just close the connection) to reclaim idle sockets — distinct from your client-side timeout.
On flaky mobile networks this often means the body upload stalled; retry with backoff and check connection reuse/keep-alive behavior.
Server-side note: Retry with backoff; check keep-alive settings. Distinct from your client-side timeout — this one comes from the server.
The fastest way to pin down a 408 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.
400 Bad Request · 401 Unauthorized · 402 Payment Required · 403 Forbidden · 404 Not Found · 405 Method Not Allowed — or the full reference.
Build the request, send it, read status + headers + timing — on your iPhone. Free to start.