diff --git a/backend-services/friend-service/src/Routes/RequestsRouter.ts b/backend-services/friend-service/src/Routes/RequestsRouter.ts
new file mode 100644
index 0000000000000000000000000000000000000000..44f447eb050a6d2cd0321ebbd572a95cc66d47b9
--- /dev/null
+++ b/backend-services/friend-service/src/Routes/RequestsRouter.ts
@@ -0,0 +1,82 @@
+import express, { Request, Response } from 'express'
+import { FriendManager } from '../Friends/FriendManager';
+import { CustomJWTRequest } from '../Middleware/Auth';
+import { RequestManager } from '../Requests/RequestManager'
+
+export const RequestRouter = express.Router();
+const friendManager = new FriendManager();
+const requestManager = new RequestManager(friendManager);
+
+/**
+ * GET '/'
+ * Returns a string
+ */
+RequestRouter.get('/', async (req:CustomJWTRequest, res:Response): Promise<void> => {
+  const {token} = req;
+
+  return requestManager.GetRequests(token as string).then((result) => {
+    res.status(200).json({requests: result})
+  }).catch((error: Error) => {
+    res.status(401).json({error: error.message})
+  });
+});
+
+/**
+ * POST '/'
+ * Creates a friend request
+ */
+RequestRouter.post('/', async (req:CustomJWTRequest, res:Response): Promise<Response> => {
+  const {requester_id, receiver_id} = req.body;
+  const {token} = req
+
+  if(requester_id !== token){
+    return res.status(401).json({error: "unathorised"})
+  }
+  
+  return requestManager.NewRequest(requester_id, receiver_id).then((result) => {
+    return res.sendStatus(200)
+  }).catch((error:Error) => {
+    return res.status(400).json({error: error.message})
+  });
+});
+
+/**
+ * PUT '/accept'
+ */
+RequestRouter.put('/accept', async (req:CustomJWTRequest, res:Response): Promise<Response> => {
+  const {request_id} = req.body;
+  const {token} = req;
+
+  await requestManager.GetSingleRequest(request_id).then(result => {
+    if(result.TargetUser !== token){
+      return res.status(400).json({error: "unauthorised"})
+    }
+  })
+
+  return requestManager.AcceptRequest(request_id).then((result) => {
+    return res.sendStatus(200)
+  }).catch((error: Error) => {
+    return res.status(400).json({error: error.message})
+  })
+});
+
+/**
+ * PUT '/reject'
+ */
+RequestRouter.put('/reject', async (req:CustomJWTRequest, res:Response): Promise<Response> => {
+  const {request_id} = req.body;
+  const {token} = req;
+
+  await requestManager.GetSingleRequest(request_id).then(result => {
+    if(result.TargetUser !== token){
+      return res.status(400).json({error: "unauthorised"})
+    }
+  })
+
+  return requestManager.RejectRequest(request_id).then((result) => {
+    return res.sendStatus(200)
+  }).catch((error: Error) => {
+    return res.status(400).json({error: error.message})
+  })
+});
+