diff --git a/hypha/apply/api/v1/filters.py b/hypha/apply/api/v1/filters.py
index 4613bc17dd14c4ce0e1dc560f244327b582527fc..df604c8f492b74c1b9b3e5da898fa7b0c3e3f658 100644
--- a/hypha/apply/api/v1/filters.py
+++ b/hypha/apply/api/v1/filters.py
@@ -44,19 +44,18 @@ class SubmissionsFilter(filters.FilterSet):
         queryset=get_user_model().objects.all(),
     )
 
+    class Meta:
+        model = ApplicationSubmission
+        fields = ('status', 'round', 'active', 'submit_date', 'fund', 'screening_statuses', 'reviewers', 'lead')
 
-class Meta:
-    model = ApplicationSubmission
-    fields = ('status', 'round', 'active', 'submit_date', 'fund', 'screening_statuses', 'reviewers', 'lead')
-
-    def filter_active(self, qs, name, value):
-        if value is None:
-            return qs
+        def filter_active(self, qs, name, value):
+            if value is None:
+                return qs
 
-        if value:
-            return qs.active()
-        else:
-            return qs.inactive()
+            if value:
+                return qs.active()
+            else:
+                return qs.inactive()
 
 
 class NewerThanFilter(filters.ModelChoiceFilter):
diff --git a/hypha/apply/api/v1/views.py b/hypha/apply/api/v1/views.py
index 0682fc87b0dbd3b956f2f92c466b312650ee5f3d..06da944575c01e0be92940856fe56b7ad50321dc 100644
--- a/hypha/apply/api/v1/views.py
+++ b/hypha/apply/api/v1/views.py
@@ -14,7 +14,7 @@ from hypha.apply.activity.messaging import MESSAGES, messenger
 from hypha.apply.activity.models import COMMENT, Activity
 from hypha.apply.determinations.views import DeterminationCreateOrUpdateView
 from hypha.apply.funds.models import ApplicationSubmission, RoundsAndLabs
-from hypha.apply.funds.tables import get_reviewers
+from hypha.apply.funds.tables import get_reviewers, get_round_leads, get_screening_statuses, get_used_rounds, get_used_funds
 from hypha.apply.funds.workflow import STATUSES
 from hypha.apply.review.models import Review
 
@@ -57,7 +57,9 @@ class SubmissionViewSet(viewsets.ReadOnlyModelViewSet):
 
 
 class SubmissionFilters(APIView):
-    permission_classes = [permissions.IsAuthenticated]
+    permission_classes = (
+        permissions.IsAuthenticated, IsApplyStaffUser,
+    )
 
     def filter_unique_options(self, options):
         unique_items = [dict(item) for item in {tuple(option.items()) for option in options}]
@@ -71,15 +73,14 @@ class SubmissionFilters(APIView):
         }
 
     def get(self, request, format=None):
-        submissions = ApplicationSubmission.objects.for_table(user=self.request.user)
         filter_options = [
             self.format("fund", "Funds", [
-                {"key": submission.page.id, "label": submission.page.title}
-                for submission in submissions.distinct('page')
+                {"key": fund.get("id"), "label": fund.get("title")}
+                for fund in get_used_funds(request).values()
             ]),
             self.format("round", "Rounds", [
-                {"key": submission.round.id, "label": submission.round.title}
-                for submission in submissions.distinct('round').exclude(round__isnull=True)
+                {"key": round.get("id"), "label": round.get("title")}
+                for round in get_used_rounds(request).values()
             ]),
             self.format("status", "Statuses", [
                 {'key': list(STATUSES.get(label)), 'label': label}
@@ -87,12 +88,11 @@ class SubmissionFilters(APIView):
             ]),
             self.format("screening_statuses", "Screenings", self.filter_unique_options([
                 {"key": screening.get("id"), "label": screening.get("title")}
-                for submission in submissions.distinct('screening_statuses')
-                for screening in submission.screening_statuses.values()
+                for screening in get_screening_statuses(request).values()
             ])),
             self.format("lead", "Leads", [
-                {"key": submission.lead.id, "label": submission.lead.full_name}
-                for submission in submissions.distinct('lead')
+                {"key": lead.get('id'), "label": lead.get('full_name') or lead.get('email')}
+                for lead in get_round_leads(request).values()
             ]),
             self.format("reviewers", "Reviewers", self.filter_unique_options([
                 {"key": reviewer.get('id'), "label": reviewer.get('full_name') or reviewer.get('email')}