diff --git a/program/views.py b/program/views.py
index fa41eb850f9712b9e4a7aeefc91e60886701044c..b740b9ea2dc47945a0f0b322943be0a676bbe040 100644
--- a/program/views.py
+++ b/program/views.py
@@ -1115,8 +1115,9 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
         if request.method == "PATCH":
             # only these fields can be updated without generating conflicts
             allowed = {"default_playlist_id", "is_repetition", "last_date"}
+            update_fields = set(request.data.get("schedule").keys())
 
-            if set(request.data.get("schedule").keys()).issubset(allowed):
+            if update_fields.issubset(allowed):
                 schedule = self.get_object()
 
                 default_playlist_id = request.data.get("schedule").get("default_playlist_id")
@@ -1148,14 +1149,19 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
 
                         TimeSlot.objects.filter(schedule=schedule, start__gt=last_end).delete()
                     else:
-                        return Response(status=status.HTTP_400_BAD_REQUEST)
+                        data = {"last_date": "This field cannot be updated to this date"}
+
+                        return Response(data, status=status.HTTP_400_BAD_REQUEST)
 
                 schedule.save()
                 serializer = ScheduleSerializer(schedule)
 
                 return Response(serializer.data)
             else:
-                return Response(status=status.HTTP_400_BAD_REQUEST)
+                bad_fields = update_fields.difference(allowed)
+                data = {field: "This field cannot be updated with PATCH" for field in bad_fields}
+
+                return Response(data, status=status.HTTP_400_BAD_REQUEST)
 
         # Only allow updating when with the `schedule` JSON object
         if "schedule" not in request.data: