HTTP status codes / 4xx — Client errors
404 Not Found
No representation exists for this URL — or the API hides that it does.
What it means
The most famous status code: the resource does not exist at this URL. APIs also use it to mask resources you are not allowed to see (instead of 403) so attackers cannot enumerate IDs.
Common causes
- Typo in path, ID or API version segment (/v1/ vs /v2/)
- Wrong environment — staging URL against prod data or vice versa
- Resource deleted or never existed
- API hides 403s as 404s to prevent ID enumeration
Reproduce it in cURL
curl -i https://httpbin.org/status/404
Same request, no terminal: paste this into the cURL converter for native code, or straight into ReqPad on your phone.
How to debug it
Check the URL character by character — trailing slashes, IDs, API version segments (/v1/ vs /v2/) and environment (staging vs prod host) cause most "phantom" 404s.
Server-side note: Check the URL character by character, then confirm the host. Most "phantom" 404s are environment mix-ups.
The fastest way to pin down a 404 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.
Related codes
400 Bad Request · 401 Unauthorized · 402 Payment Required · 403 Forbidden · 405 Method Not Allowed · 406 Not Acceptable — or the full reference.
Reproduce that 404 in 10 seconds.
Build the request, send it, read status + headers + timing — on your iPhone. Free to start.