diff --git a/api/devices.go b/api/devices.go
index a4458dbab1ace5a710b244cb1b638a83598f6aa3..323c8a6d2fb1cf62ca77a1c01ad41e44ea928868 100644
--- a/api/devices.go
+++ b/api/devices.go
@@ -4,9 +4,52 @@ import (
 	"encoding/json"
 	"github.com/gorilla/mux"
 	"jewels/database"
+	"log"
 	"net/http"
+	"strings"
+	"time"
 )
 
+func downloadAndUpdateDeviceEol(device database.Device) {
+	if strings.ToLower(device.Manufacturer) == "samsung" && device.Type != database.Computer && device.Type != database.Other {
+		res, err := http.Get("https://endoflife.date/api/samsung-mobile.json")
+		if err != nil {
+			return
+		}
+
+		type responseDevice struct {
+			Cycle string `json:"cycle"`
+			Eol   any    `json:"eol"`
+		}
+
+		decoder := json.NewDecoder(res.Body)
+		var devices []responseDevice
+		err = decoder.Decode(&devices)
+		if err != nil {
+			return
+		}
+
+		for _, d := range devices {
+			if strings.ToLower(d.Cycle) == strings.ToLower(device.Model) {
+				eolString, ok := d.Eol.(string)
+				if ok {
+					eol, err := time.Parse("2006-01-02", eolString)
+					if err != nil {
+						return
+					}
+
+					device.Eol = &eol
+					err = database.UpdateJewel(device.OwnerId, device)
+					if err != nil {
+						log.Println(err)
+						return
+					}
+				}
+			}
+		}
+	}
+}
+
 func getDevices(w http.ResponseWriter, r *http.Request) {
 	encoder := json.NewEncoder(w)
 	vars := mux.Vars(r)
@@ -54,6 +97,8 @@ func createDevice(w http.ResponseWriter, r *http.Request) {
 			return
 		}
 
+		downloadAndUpdateDeviceEol(*device)
+
 		encoder := json.NewEncoder(w)
 		w.WriteHeader(http.StatusCreated)
 		encoder.Encode(device)
@@ -89,6 +134,11 @@ func updateDevice(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
+	jewel, err := database.FindJewelById(body.Id)
+	if err == nil && jewel != nil {
+		downloadAndUpdateDeviceEol(*jewel)
+	}
+
 	w.WriteHeader(http.StatusNoContent)
 }
 
@@ -113,5 +163,10 @@ func pushDeviceData(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
+	jewel, err := database.FindJewelById(body.Id)
+	if err == nil && jewel != nil {
+		downloadAndUpdateDeviceEol(*jewel)
+	}
+
 	w.WriteHeader(http.StatusNoContent)
 }