diff --git a/api/funkwhale_api/radios/views.py b/api/funkwhale_api/radios/views.py
index 0a5f1cd6cfa282c17aa472db1d6d5ce04779487a..3c8f41c91fabdadf759a29587efd8fed77c016f2 100644
--- a/api/funkwhale_api/radios/views.py
+++ b/api/funkwhale_api/radios/views.py
@@ -5,6 +5,7 @@ from rest_framework.response import Response
 
 from funkwhale_api.common import permissions as common_permissions
 from funkwhale_api.music.serializers import TrackSerializer
+from funkwhale_api.music import utils as music_utils
 from funkwhale_api.users.oauth import permissions as oauth_permissions
 
 from . import filters, filtersets, models, serializers
@@ -47,7 +48,9 @@ class RadioViewSet(
     def tracks(self, request, *args, **kwargs):
         radio = self.get_object()
         tracks = radio.get_candidates().for_nested_serialization()
-
+        actor = music_utils.get_actor_from_request(self.request)
+        tracks = tracks.with_playable_uploads(actor)
+        tracks = tracks.playable_by(actor)
         page = self.paginate_queryset(tracks)
         if page is not None:
             serializer = TrackSerializer(page, many=True)
@@ -110,7 +113,9 @@ class RadioSessionViewSet(
 
     def get_serializer_context(self):
         context = super().get_serializer_context()
-        context["user"] = self.request.user
+        context["user"] = (
+            self.request.user if self.request.user.is_authenticated else None
+        )
         return context
 
 
diff --git a/changes/changelog.d/812.bugfix b/changes/changelog.d/812.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..ec604dcec4ceae9f3960618493435abfef594d7d
--- /dev/null
+++ b/changes/changelog.d/812.bugfix
@@ -0,0 +1 @@
+Ensure correct track duration and playable status when browsing radios (#812)