diff --git a/src/middlewares/files/createFile.ts b/src/middlewares/files/createFile.ts
index 6e0028ac3643991a0ee811feb303b590fed31599..3fa6062d3e9362660c95c4f2ad3c7f802bd71970 100644
--- a/src/middlewares/files/createFile.ts
+++ b/src/middlewares/files/createFile.ts
@@ -31,6 +31,7 @@ const createFile = () => async (
     }
 
     res.data.value = newFile._id;
+    res.data.newObjectId = newFile._id;
 
     next();
   } catch (err) {
diff --git a/src/middlewares/files/updateTermCardBg.ts b/src/middlewares/files/updateTermCardBg.ts
index 8e7e5c0cb565d86bc662f2438d35b27d1cf0f0ef..3bbf4e94f47a0f80ae507ed3e49230619abdf674 100644
--- a/src/middlewares/files/updateTermCardBg.ts
+++ b/src/middlewares/files/updateTermCardBg.ts
@@ -8,7 +8,7 @@ import fs from "fs";
 /**
  * Upload a new profile picture
  */
-const uploadTermCardBg = () => async (
+const updateTermCardBg = () => async (
   req: Request,
   res: Response,
   next: NextFunction
@@ -34,4 +34,4 @@ const uploadTermCardBg = () => async (
   }
 };
 
-export default uploadTermCardBg;
+export default updateTermCardBg;
diff --git a/src/routes/files.ts b/src/routes/files.ts
index bc88876ab1bef27c1932163b875f4b78e81132e4..827e01689bf080422828d5f8adceef7094fdcfe3 100644
--- a/src/routes/files.ts
+++ b/src/routes/files.ts
@@ -5,8 +5,10 @@ import profilePictureStorage, {
 import { Application } from "express";
 import cardImageStorage from "../middlewares/files/card/cardImageStorage";
 import createFile from "../middlewares/files/createFile";
+import createdResponse from "../middlewares/utils/createdResponse";
 import example from "../middlewares/example";
 import getFieldValue from "../middlewares/utils/getFieldValue";
+import getTerm from "../middlewares/term/getTerm";
 import getUser from "../middlewares/user/getUser";
 import { imageFilter } from "../middlewares/files/imageFilter";
 import isLoggedIn from "../middlewares/auth/isLoggedIn";
@@ -17,6 +19,7 @@ import noContentResponse from "../middlewares/utils/noContentResponse";
 import sendFile from "../middlewares/files/sendFile";
 import setOwnUserId from "../middlewares/user/setOwnUserId";
 import updateProfilePicture from "../middlewares/files/updateProfilePicture";
+import updateTermCardBg from "../middlewares/files/updateTermCardBg";
 
 const profilePictureUpload = multer({
   storage: imageStorage("uploads/profile_pictures/"),
@@ -78,7 +81,7 @@ const filesRoute = (prefix: string, app: Application): void => {
     profilePictureUpload.single("profile_picture"),
     createFile(),
     updateProfilePicture(),
-    noContentResponse()
+    createdResponse()
   );
   // Add own profile picture
   app.post(
@@ -89,14 +92,30 @@ const filesRoute = (prefix: string, app: Application): void => {
     profilePictureUpload.single("profile_picture"),
     createFile(),
     updateProfilePicture(),
-    noContentResponse()
+    createdResponse()
   );
   // Get a Term's card background image
-  app.get(`${prefix}/card/bg/term/:termId`, example());
+  app.get(
+    `${prefix}/card/bg/term/:termId`,
+    isRegistered(),
+    getTerm(),
+    getFieldValue("term", "backgroundFile"),
+    sendFile()
+  );
   // Add a Term's card background image or update it
-  app.post(`${prefix}/card/bg/term/:termId`, example());
+  app.post(
+    `${prefix}/card/bg/term/:termId`,
+    isRegistered(),
+    isStaffOrAdmin(),
+    getTerm(),
+    CardImageUpload.single("card_image"),
+    createFile(),
+    updateTermCardBg(),
+    createdResponse()
+  );
   // Pdf with all accepted cards in a term
-  app.get(`${prefix}/cards/term/:termId/accepted`, example());
+  // TODO
+  // app.get(`${prefix}/cards/term/:termId/accepted`, example());
 };
 
 export default filesRoute;