HTTP 501 Not Implemented
Updated Free mock REST & WebSocket APIs
HTTP 501 Not Implemented — The server doesn't support the functionality (usually the HTTP method) needed to fulfill the request.
- Class
- 5xx Server Error
- Defined in
- RFC 9110 §15.6.2
- Official
- Yes (IANA registry)
- Cacheable by default
- Yes (heuristically, per RFC 9110)
- Safe to retry
- Sometimes — idempotent requests only
Try it: get a real 501 response
Our test endpoint answers every request with 501 Not Implemented.
curl -i https://mockfox.dev/api/status/501Use it in tests, health-check monitors or to see how your client handles a 501. Add ?delay=2000 to slow it down.
What does HTTP 501 mean?
501 Not Implemented means the server doesn't support the functionality required to fulfil the request — most often, it doesn't recognise the request method at all and can't support it for any resource.
It's a server-side status (5xx) because the limitation is in the server, and it's cacheable by default. Compare 405, where the method is known but not allowed for that particular URL.
When is 501 used?
- A server receives an unknown or custom method (e.g.
PURGE,PROPFINDon a non-WebDAV server). - An API stub or planned endpoint that isn't built yet.
- A proxy that doesn't support a feature such as a particular
Transfer-Encoding.
Common causes of a 501
- The client uses a method the server software doesn't implement.
- The endpoint is a placeholder in a beta API.
- Unsupported
Transfer-Encodingvalues in a request.
How to fix 501 Not Implemented
If you're visiting the site
- There's nothing you can fix; the site doesn't support that action. Try again later or contact the site owner.
If you run the site or API (developers)
- Use 405 (with an
Allowheader) if the method exists on your server but not on that route. - Return 501 for deliberately unimplemented features and document when they'll be available.
- If a CDN purge (PURGE method) returns 501, the origin server — not the CDN — received the request.
Returning or handling 501: server examples
Express
app.all("/api/v2/reports", (req, res) =>
res.status(501).json({ error: "not_implemented", message: "Reports arrive in v2.1" }));Next.js
// app/api/example/route.ts (Next.js App Router)
export function GET() {
return Response.json({ error: "not_implemented" }, { status: 501 });
}nginx
# nginx answers unknown methods itself; e.g. FOO / HTTP/1.1 → 405 for static files,
# while unparseable methods get 400. Let the app decide for proxied routes:
location /api/ { proxy_pass http://app; }Example 501 response
HTTP/1.1 501 Not Implemented
Content-Type: application/json
{"error":"not_implemented"}Related status codes
- 405 Method Not AllowedThe URL exists but doesn't support the HTTP method used; the Allow header lists the ones it does.
- 500 Internal Server ErrorThe server hit an unexpected condition that prevented it from fulfilling the request.
- 505 HTTP Version Not SupportedThe server doesn't support the HTTP protocol version used in the request.
Related tools
Frequently asked questions
What's the difference between 501 and 405?
405: the server knows the method, but this resource doesn't allow it. 501: the server doesn't support the method (or feature) at all.
Is 501 a temporary error?
Not usually — it signals a missing capability. It's cacheable by default, unlike most 5xx codes.
Can I retry a 501?
Retrying the same request won't help unless the server is updated to support it.