diff --git a/app/spotify/router.py b/app/spotify/router.py
index 50e03d9..5f305f9 100644
--- a/app/spotify/router.py
+++ b/app/spotify/router.py
@@ -2,15 +2,79 @@
 from fastapi import APIRouter, Depends
 
 from app.container import Container
-from app.spotify.schemas import Device
+from app.spotify.exceptions import TrackNotFoundError, DeviceNotFoundError
+from app.spotify.schemas import Device, CurrentDevice, Track
 from app.spotify.service import SpotifyService
 
 spotify_router = APIRouter()
 
 
-@spotify_router.get("/devices")
+@spotify_router.get("/device")
 @inject
-def get_devices(
-        spotify_service: SpotifyService = Depends(Provide[Container.spotify_service]),
-) -> list[Device]:
-    return spotify_service.refresh_devices()
+def get_current_device(
+        spotify_service: SpotifyService = Depends(Provide[Container.spotify_service])
+) -> CurrentDevice | dict:
+    spotify_service.refresh_devices()
+    current_device = spotify_service.get_current_device()
+
+    if current_device is None:
+        return {}
+
+    return CurrentDevice(
+        device=current_device,
+        index=spotify_service.get_current_device_index(),
+        total=spotify_service.get_devices_count()
+    )
+
+
+@spotify_router.post("/device/next")
+@inject
+def next_device(
+        spotify_service: SpotifyService = Depends(Provide[Container.spotify_service])
+) -> CurrentDevice | dict:
+    spotify_service.refresh_devices()
+    spotify_service.next_device()
+    current_device = spotify_service.get_current_device()
+
+    if current_device is None:
+        return {}
+
+    return CurrentDevice(
+        device=current_device,
+        index=spotify_service.get_current_device_index(),
+        total=spotify_service.get_devices_count()
+    )
+
+
+@spotify_router.post("/device/previous")
+@inject
+def previous_device(
+        spotify_service: SpotifyService = Depends(Provide[Container.spotify_service])
+) -> CurrentDevice | dict:
+    spotify_service.refresh_devices()
+    spotify_service.previous_device()
+    current_device = spotify_service.get_current_device()
+
+    if current_device is None:
+        return {}
+
+    return CurrentDevice(
+        device=current_device,
+        index=spotify_service.get_current_device_index(),
+        total=spotify_service.get_devices_count()
+    )
+
+
+@spotify_router.post("/play")
+@inject
+def play(
+        track: Track,
+        spotify_service: SpotifyService = Depends(Provide[Container.spotify_service])
+) -> Device | dict:
+    try:
+        spotify_service.play(track)
+    except TrackNotFoundError:
+        return {"error": "Track not found"}
+    except DeviceNotFoundError:
+        return {"error": "Device not found"}
+    return {"status": "ok"}
diff --git a/app/spotify/schemas.py b/app/spotify/schemas.py
index 3bb8720..af5736d 100644
--- a/app/spotify/schemas.py
+++ b/app/spotify/schemas.py
@@ -12,6 +12,12 @@ class Device(BaseModel):
     volume_percent: int
 
 
+class CurrentDevice(BaseModel):
+    device: Device
+    index: int
+    total: int
+
+
 class Track(BaseModel):
     id: str
 
diff --git a/app/spotify/service.py b/app/spotify/service.py
index c497bc9..05871c3 100644
--- a/app/spotify/service.py
+++ b/app/spotify/service.py
@@ -44,8 +44,12 @@ def play(self, track: Track) -> None:
                 raise TrackNotFoundError(e.msg)
 
     def refresh_devices(self) -> list[Device]:
-        self.__devices = self.__get_devices_from_api()
-        self.__current_device_index = 0
+        devices_from_api = self.__get_devices_from_api()
+
+        if devices_from_api != self.__devices:
+            self.__devices = devices_from_api
+            self.__current_device_index = 0
+
         return self.__devices
 
     def next_device(self) -> Device | None:
@@ -68,10 +72,15 @@ def get_current_device(self) -> Device | None:
 
         return self.__devices[self.__current_device_index]
 
+    def get_current_device_index(self) -> int:
+        return self.__current_device_index
+
     def get_devices(self) -> list[Device]:
-        print(self.__devices)
         return self.__devices
 
+    def get_devices_count(self) -> int:
+        return len(self.__devices)
+
     def __get_devices_from_api(self) -> list[Device]:
         devices_json = self.__api.devices()["devices"]
         return [Device(**device) for device in devices_json]
diff --git a/app/system/router.py b/app/system/router.py
index 3f1cbf3..9755d15 100644
--- a/app/system/router.py
+++ b/app/system/router.py
@@ -5,11 +5,11 @@
 
 
 @system_router.get("/", include_in_schema=False)
-async def root(self) -> dict[str, str]:
+async def root() -> dict[str, str]:
     return {"message": "MusicBox API"}
 
 
 @system_router.get("/health", include_in_schema=False)
-async def health(self) -> JSONResponse:
+async def health() -> JSONResponse:
     data = {"music-box-api": status.HTTP_200_OK}
     return JSONResponse(data, status_code=status.HTTP_200_OK)
