diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py
index a016f4326a279f1510e429898dc6f81d274b8089..200dccf1fd934081cb3f4e2fd1f44f464feed5f3 100644
--- a/api/funkwhale_api/manage/views.py
+++ b/api/funkwhale_api/manage/views.py
@@ -490,6 +490,14 @@ class ManageReportViewSet(
     required_scope = "instance:reports"
     ordering_fields = ["id", "creation_date", "handled_date"]
 
+    def perform_update(self, serializer):
+        is_handled = serializer.instance.is_handled
+        if not is_handled and serializer.validated_data.get("is_handled") is True:
+            # report was resolved, we assign to the mod making the request
+            serializer.save(assigned_to=self.request.user.actor)
+        else:
+            serializer.save()
+
 
 class ManageNoteViewSet(
     mixins.ListModelMixin,
diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py
index 70520ab759df5afc79f092cb183a49be3dcbeb7d..e1c698894049e84fbcf822f566b540dedae96141 100644
--- a/api/tests/manage/test_views.py
+++ b/api/tests/manage/test_views.py
@@ -499,3 +499,17 @@ def test_report_update(factories, superuser_api_client):
     assert response.status_code == 200
     report.refresh_from_db()
     assert report.is_handled is True
+
+
+def test_report_update_is_handled_true_assigns(factories, superuser_api_client):
+    actor = superuser_api_client.user.create_actor()
+    report = factories["moderation.Report"]()
+    url = reverse(
+        "api:v1:manage:moderation:reports-detail", kwargs={"uuid": report.uuid}
+    )
+    response = superuser_api_client.patch(url, {"is_handled": True})
+
+    assert response.status_code == 200
+    report.refresh_from_db()
+    assert report.is_handled is True
+    assert report.assigned_to == actor