diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py
index 8a4f91e7786fd1a8ff375050b11359f9c6236632..9939d703d02ebc405664ef57f7cbcb3f45a48b1e 100644
--- a/api/funkwhale_api/manage/views.py
+++ b/api/funkwhale_api/manage/views.py
@@ -488,6 +488,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 7f17fce1128216de423709251bec0bbf7a3f1d56..793d3a93c7c3aece9fa3a08c0ebad254933cb757 100644
--- a/api/tests/manage/test_views.py
+++ b/api/tests/manage/test_views.py
@@ -495,3 +495,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