diff --git a/wahlfang_api/views.py b/wahlfang_api/views.py
index 4bb1c81d86daac211b57325e44009b0d65f61716..92ee6f583e63f9bc9b508088cf3fd07c466c94e5 100644
--- a/wahlfang_api/views.py
+++ b/wahlfang_api/views.py
@@ -2,6 +2,7 @@ from asgiref.sync import async_to_sync
 from channels.layers import get_channel_layer
 from rest_framework import generics, status, viewsets
 from rest_framework.decorators import action
+from rest_framework.generics import get_object_or_404
 from rest_framework.response import Response
 from rest_framework.throttling import AnonRateThrottle
 from rest_framework_simplejwt.views import TokenViewBase
@@ -57,14 +58,17 @@ class SpectatorView(generics.RetrieveAPIView):
     def get_object(self):
         return self.queryset.get(spectator_token=self.kwargs['uuid'])
 
+## Management Sessions ##
 
-class ManagerSessionView(generics.ListCreateAPIView):
+
+class ManagerSessionView(generics.ListCreateAPIView, generics.DestroyAPIView):
     authentication_classes = [ElectionManagerJWTAuthentication]
     permission_classes = [IsElectionManager]
     serializer_class = SessionSerializer
 
-    # def perform_create(self, serializer_class):
-    #     serializer_class.save()
+    def get_object(self):
+        session = get_object_or_404(Session, pk=self.request.query_params.get('pk'))
+        return session
 
     def perform_create(self, serializer):
         serializer.save(manager=self.request.user)
@@ -73,7 +77,10 @@ class ManagerSessionView(generics.ListCreateAPIView):
         manager = self.request.user
         return manager.sessions.order_by('-pk')
 
-
+    def destroy(self, request, *args, **kwargs):
+        instance = self.get_object()
+        self.perform_destroy(instance)
+        return Response(status=status.HTTP_204_NO_CONTENT)
 
 
 class ElectionViewset(viewsets.ReadOnlyModelViewSet):
diff --git a/wahlfang_web/src/api/management.js b/wahlfang_web/src/api/management.js
index b34e9842740c898778659cc8a98ecf1d3c287020..a2d635267d1001f389476afa934d76633fe3a8e7 100644
--- a/wahlfang_web/src/api/management.js
+++ b/wahlfang_web/src/api/management.js
@@ -4,7 +4,8 @@ export const managementAPIRoutes = {
     login: "/auth/token/",
     refreshToken: "/auth/token/refresh/",
     verifyToken: "/auth/token/verify/",
-    createSession: "/management/add-session",
+    manageSessions: "/management/add-session",
+
 }
 
 // Help functions
@@ -65,8 +66,10 @@ export const logoutManager = async () => {
 
 // API calls
 
+// sessions
+
 export const createSession = async (form_values) => {
-    const response = await makeAuthenticatedManagerRequest(managementAPIRoutes.createSession, 'POST', form_values);
+    const response = await makeAuthenticatedManagerRequest(managementAPIRoutes.manageSessions, 'POST', form_values);
     if (response.status === 201) {
         return true;
     } else {
@@ -75,7 +78,18 @@ export const createSession = async (form_values) => {
 }
 
 export const fetchSessions = async () => {
-    const response = await makeAuthenticatedManagerRequest(managementAPIRoutes.createSession, 'GET');
-    console.log(response)
+    const response = await makeAuthenticatedManagerRequest(managementAPIRoutes.manageSessions, 'GET');
     return await response.json();
+}
+
+export const deleteSession = async (pk) => {
+    const url = `${managementAPIRoutes.manageSessions}?pk=${pk}`
+    console.log(url)
+    const response = await makeAuthenticatedManagerRequest(url, 'DELETE')
+    console.log(response)
+    if (response.status === 204) {
+        return true;
+    } else {
+        throw new Error(await response.json())
+    }
 }
\ No newline at end of file
diff --git a/wahlfang_web/src/pages/management/ManagerSessions.js b/wahlfang_web/src/pages/management/ManagerSessions.js
index 0b0b3b95341cc2011f55b4ebf9fc91ab0360f735..63ce82c3f69ed3517f589dcf91411e62de5edff7 100644
--- a/wahlfang_web/src/pages/management/ManagerSessions.js
+++ b/wahlfang_web/src/pages/management/ManagerSessions.js
@@ -1,6 +1,6 @@
 import React, {Fragment, useEffect} from 'react';
 import Layout from "../../components/Layout";
-import {useRecoilValue} from "recoil";
+import {useRecoilState} from "recoil";
 import {sessionList} from "../../state/management"
 import Button from '@mui/material/Button';
 import Box from '@mui/material/Box';
@@ -12,11 +12,12 @@ import DeleteIcon from '@mui/icons-material/Delete';
 import { Typography } from '@mui/material';
 import { useHistory } from "react-router-dom";
 import moment from "moment";
+import {deleteSession} from "../../api/management"
 
 
 
 export default function ManagerSessions() {
-    const data = useRecoilValue(sessionList);
+    const [sessions, setSessions] = useRecoilState(sessionList);
     const history = useHistory();
 
     const formatDate = (start_date) => {
@@ -28,6 +29,17 @@ export default function ManagerSessions() {
         history.push(path);
     }
 
+    const handleDelete = (pk) => {
+        deleteSession(pk)
+            .then(res => {
+                const sessions_left = sessions.filter(session => session.id !== pk)
+                setSessions(sessions_left)
+            })
+            .catch(err => {
+                console.log(err)
+            })
+    }
+
     return (
 
           <Layout>
@@ -36,14 +48,14 @@ export default function ManagerSessions() {
                     <div className="card shadow">
                         <div className="card-body">
                              <h4>My Sessions</h4>
-                            {data.map(session => (
-                                <Box pb={3} sx={{ width: '100%', bgcolor: 'background.paper', }}>
+                            {sessions.map(session => (
+                                <Box key={session.id} pb={3} sx={{ width: '100%', bgcolor: 'background.paper', }}>
                                       <List component="nav" aria-label="main mailbox folders">
                                         <ListItemButton>
                                          <ListItemText disableTypography
                                             primary={<Typography type="body2" style={{ color: '#495057' }}>{session.title}</Typography>} />
                                             {session.start_date && <ListItemText sx={{pr: 2}} primary={<Typography align="right" type="overline" style={{ color: '#495057' }}>{formatDate(session.start_date)}</Typography>}/>}
-                                            <Button variant="outlined" startIcon={<DeleteIcon />} color="error"> Delete </Button>
+                                            <Button onClick={() => handleDelete(session.id)} variant="outlined" startIcon={<DeleteIcon />} color="error"> Delete </Button>
                                         </ListItemButton>
                                       </List>
                                       <Divider />