diff --git a/app/main.py b/app/main.py
index 2ed48bb317be5f1c5606579db930bcc5b9f05bab..d9cf3ddab285db44013799f3b5a2e991d5ba9810 100644
--- a/app/main.py
+++ b/app/main.py
@@ -5,7 +5,7 @@ from fastapi import FastAPI, Request, Response
 from app.journal import JournalInterceptorRoute
 from app.routers import labbooks, modify_comment_segment, modify_labbook, modify_labbook_entry, \
     modify_labeled_segment, modify_tape, search, tapes, top, OrchiveAPIRouter, audio_segments, orca_sequences, \
-    modify_orca_sequence, modify_audio_segment
+    modify_orca_sequence, modify_audio_segment, playlists
 from app.elastic_search import *
 
 
@@ -27,6 +27,7 @@ app.include_router(modify_labeled_segment.router, tags=["Modify Labeled Segment"
 app.include_router(modify_comment_segment.router, tags=["Modify Comment Segment"])
 app.include_router(modify_audio_segment.router, tags=["Modify Audio Segment"])
 app.include_router(modify_orca_sequence.router, tags=["Modify Orca Sequence"])
+app.include_router(playlists.router, tags=["Saved Playlists"])
 app_router = OrchiveAPIRouter(route_class=JournalInterceptorRoute)
 
 
diff --git a/app/routers/playlists.py b/app/routers/playlists.py
new file mode 100644
index 0000000000000000000000000000000000000000..5951920eb331ef6b115d4b651e2a48b234fd83d4
--- /dev/null
+++ b/app/routers/playlists.py
@@ -0,0 +1,41 @@
+from datetime import date
+from enum import Enum
+from typing import List, Optional
+
+from fastapi.responses import JSONResponse
+
+from pydantic import BaseModel
+
+import app.routers.top
+from app.routers import Message, OrchiveAPIRouter
+
+import redis
+
+router = OrchiveAPIRouter()
+
+redis_client = redis.StrictRedis(host='redis', port=6379, db=0)
+
+
+class PlaylistEntry(BaseModel):
+    user_name: str
+    sequences_str: Optional[int] = None
+
+@router.put("/playlists")
+async def set_playlist(playlist: PlaylistEntry):
+    """Adds or updates a user playlist"""
+    if playlist.sequences_str:
+        redis_client.set(playlist.user_name, playlist.sequences_str)
+    else:
+        redis_client.delete(playlist.user_name)
+    return JSONResponse(status_code=200, content={"message": playlist.json()})
+
+@router.get("/playlists", response_model=PlaylistEntry)
+async def set_playlist(playlist: PlaylistEntry):
+    """gets the playlist or returns empty string otherwise"""
+    value = redis_client.get(playlist.user_name)
+    if value is not None:
+        playlist.sequences_str = value
+    else:
+        playlist.sequences_str = ''
+
+    return JSONResponse(status_code=200, content=playlist.json())
diff --git a/requirements.txt b/requirements.txt
index 891b3a77be5e762a4807644745d77703e86cbe35..67b5e1d080fba3e6fd13b882bba0d25716f3be10 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
 fastapi==0.65.1
 uvicorn[standard]==0.13.4
 elasticsearch==7.12.1
+redis
\ No newline at end of file