diff --git a/program/serializers.py b/program/serializers.py
index 9f5ad200f498a43d4fb1d7f5c5635462df089d1c..87b1e0f54ef2e26f212e8c2fe27584c7c34ae649 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -30,6 +30,7 @@ from rest_framework.permissions import exceptions
 from django.conf import settings
 from django.contrib.auth.models import User
 from django.core.exceptions import ObjectDoesNotExist
+from django.db import IntegrityError
 from django.db.models import Q
 from django.utils import text, timezone
 from program.models import (
@@ -1524,7 +1525,13 @@ class PlaylistSerializer(serializers.ModelSerializer):
         playlist = Playlist.objects.create(created_by=user.username, **validated_data)
 
         for entry_data in entries:
-            PlaylistEntry.objects.create(playlist=playlist, **entry_data)
+            try:
+                PlaylistEntry.objects.create(playlist=playlist, **entry_data)
+            except IntegrityError:
+                raise exceptions.ValidationError(
+                    code="playlist-entry-file-id-or-uri",
+                    detail="playlist entries must either have file id or uri.",
+                )
 
         return playlist
 
@@ -1552,7 +1559,13 @@ class PlaylistSerializer(serializers.ModelSerializer):
                     entry.delete(keep_parents=True)
 
             for entry_data in validated_data.get("entries"):
-                PlaylistEntry.objects.create(playlist=instance, **entry_data)
+                try:
+                    PlaylistEntry.objects.create(playlist=instance, **entry_data)
+                except IntegrityError:
+                    raise exceptions.ValidationError(
+                        code="playlist-entry-file-id-or-uri",
+                        detail="playlist entries must either have file id or uri.",
+                    )
 
         instance.save()