diff --git a/api/funkwhale_api/subsonic/serializers.py b/api/funkwhale_api/subsonic/serializers.py
index 35b17864153e57d0d22a521d3dbe74a24e0a1b39..023e40cac29a89168e497977543f5995dece73b5 100644
--- a/api/funkwhale_api/subsonic/serializers.py
+++ b/api/funkwhale_api/subsonic/serializers.py
@@ -226,6 +226,30 @@ def get_music_directory_data(artist):
     return data
 
 
+def get_folders(user):
+    return []
+
+
+def get_user_detail_data(user):
+    return {
+        "username": user.username,
+        "email": user.email,
+        "scrobblingEnabled": "true",
+        "adminRole": "false",
+        "settingsRole": "false",
+        "commentRole": "false",
+        "podcastRole": "false",
+        "coverArtRole": "false",
+        "shareRole": "false",
+        "uploadRole": "true",
+        "downloadRole": "true",
+        "playlistRole": "true",
+        "streamRole": "true",
+        "jukeboxRole": "true",
+        "folder": [f["id"] for f in get_folders(user)],
+    }
+
+
 class ScrobbleSerializer(serializers.Serializer):
     submission = serializers.BooleanField(default=True, required=False)
     id = serializers.PrimaryKeyRelatedField(
diff --git a/api/funkwhale_api/subsonic/views.py b/api/funkwhale_api/subsonic/views.py
index 2014c69da9c8cc58acc296ced447acbdcee3378b..8c4f26ddea938e47e91bc778bfd4bdc1a1208e81 100644
--- a/api/funkwhale_api/subsonic/views.py
+++ b/api/funkwhale_api/subsonic/views.py
@@ -444,6 +444,17 @@ class SubsonicViewSet(viewsets.GenericViewSet):
         r[file_header] = path
         return r
 
+    @list_route(methods=["get", "post"], url_name="get_user", url_path="getUser")
+    @find_object(
+        queryset=lambda request: users_models.User.objects.filter(pk=request.user.pk),
+        model_field="username__iexact",
+        field="username",
+        cast=str,
+    )
+    def get_user(self, request, *args, **kwargs):
+        data = {"user": serializers.get_user_detail_data(request.user)}
+        return response.Response(data)
+
     @list_route(
         methods=["get", "post"],
         url_name="get_music_folders",
diff --git a/api/tests/subsonic/test_views.py b/api/tests/subsonic/test_views.py
index 82918b631f6cc21ea0c46c06e2031477c52a9f61..9161888e2e397e6f02c608bfeb4c1f56578afcdb 100644
--- a/api/tests/subsonic/test_views.py
+++ b/api/tests/subsonic/test_views.py
@@ -481,3 +481,34 @@ def test_scrobble(factories, logged_in_api_client):
 
     listening = logged_in_api_client.user.listenings.latest("id")
     assert listening.track == track
+
+
+@pytest.mark.parametrize("f", ["json"])
+def test_get_user(f, db, logged_in_api_client, factories):
+    url = reverse("api:subsonic-get-user")
+    assert url.endswith("getUser") is True
+    response = logged_in_api_client.get(
+        url, {"f": f, "username": logged_in_api_client.user.username}
+    )
+    assert response.status_code == 200
+    assert response.data == {
+        "user": {
+            "username": logged_in_api_client.user.username,
+            "email": logged_in_api_client.user.email,
+            "scrobblingEnabled": "true",
+            "adminRole": "false",
+            "downloadRole": "true",
+            "uploadRole": "true",
+            "settingsRole": "false",
+            "playlistRole": "true",
+            "commentRole": "false",
+            "podcastRole": "false",
+            "streamRole": "true",
+            "jukeboxRole": "true",
+            "coverArtRole": "false",
+            "shareRole": "false",
+            "folder": [
+                f["id"] for f in serializers.get_folders(logged_in_api_client.user)
+            ],
+        }
+    }