diff --git a/program/views.py b/program/views.py
index 7ccb56b0f9af93894585927250af389038328d96..bb90583d4ebd13b3bdee52337bc2beb54bfae156 100644
--- a/program/views.py
+++ b/program/views.py
@@ -1186,12 +1186,25 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
         them including notes.
         """
 
+        required_schedule_fields = {"end_time", "first_date", "rrule_id", "start_time"}
+
         if not self.request.user.has_perm("program.change_schedule"):
             return Response(status=status.HTTP_401_UNAUTHORIZED)
 
         if "schedule" not in self.request.data:
             return Response(status=status.HTTP_400_BAD_REQUEST)
 
+        schedule_fields = set(self.request.data["schedule"].keys())
+
+        if missing_fields := required_schedule_fields.difference(schedule_fields):
+            data = {
+                "schedule": {
+                    field: "This field is required in a PUT request" for field in missing_fields
+                }
+            }
+
+            return Response(data, status=status.HTTP_400_BAD_REQUEST)
+
         schedule = self.get_object()
 
         try: