diff --git a/core/headscale/client.go b/core/headscale/client.go
index 159fffb..f4d0f51 100644
--- a/core/headscale/client.go
+++ b/core/headscale/client.go
@@ -111,7 +111,7 @@
 			return strconv.Itoa(n.Id), nil
 		}
 	}
-	return "", fmt.Errorf("not found")
+	return "", ErrorNotFound
 }
 
 func (c *client) getNodeAddresses(user, node string) ([]net.IP, error) {
diff --git a/core/headscale/main.go b/core/headscale/main.go
index 194da06..c2cfcf5 100644
--- a/core/headscale/main.go
+++ b/core/headscale/main.go
@@ -167,7 +167,11 @@
 		return
 	}
 	if err := s.client.expirePreAuthKey(user, req.AuthKey); err != nil {
-		http.Error(w, err.Error(), http.StatusInternalServerError)
+		if errors.Is(err, ErrorNotFound) {
+			http.Error(w, err.Error(), http.StatusNotFound)
+		} else {
+			http.Error(w, err.Error(), http.StatusInternalServerError)
+		}
 		return
 	}
 }
@@ -185,8 +189,11 @@
 		return
 	}
 	if err := s.client.expireUserNode(user, node); err != nil {
-		fmt.Println(err)
-		http.Error(w, err.Error(), http.StatusInternalServerError)
+		if errors.Is(err, ErrorNotFound) {
+			http.Error(w, err.Error(), http.StatusNotFound)
+		} else {
+			http.Error(w, err.Error(), http.StatusInternalServerError)
+		}
 		return
 	}
 }
@@ -203,7 +210,11 @@
 		return
 	}
 	if err := s.client.removeUserNode(user, node); err != nil {
-		http.Error(w, err.Error(), http.StatusInternalServerError)
+		if errors.Is(err, ErrorNotFound) {
+			http.Error(w, err.Error(), http.StatusNotFound)
+		} else {
+			http.Error(w, err.Error(), http.StatusInternalServerError)
+		}
 		return
 	}
 }
