diff --git a/app/routes/report/gene.js b/app/routes/report/gene.js
index 9c1c1ef4a..f7ddb11ef 100644
--- a/app/routes/report/gene.js
+++ b/app/routes/report/gene.js
@@ -11,9 +11,12 @@ const router = express.Router({mergeParams: true});
 
 const schemaGenerator = require('../../schemas/schemaGenerator');
 const validateAgainstSchema = require('../../libs/validateAgainstSchema');
-const {REPORT_UPDATE_BASE_URI} = require('../../constants');
+const {REPORT_CREATE_BASE_URI, REPORT_UPDATE_BASE_URI} = require('../../constants');
 
 // Generate schemas
+const createSchema = schemaGenerator(db.models.genes, {
+  baseUri: REPORT_CREATE_BASE_URI,
+});
 const updateSchema = schemaGenerator(db.models.genes, {
   baseUri: REPORT_UPDATE_BASE_URI, nothingRequired: true,
 });
@@ -138,6 +141,30 @@ router.route('/')
         error: {message: 'Unable to retrieve genes'},
       });
     }
+  })
+  .post(async (req, res) => {
+    // Validate request against schema
+    try {
+      validateAgainstSchema(createSchema, req.body);
+    } catch (error) {
+      const message = `Error while validating gene create request ${error}`;
+      logger.error(message);
+      return res.status(HTTP_STATUS.BAD_REQUEST).json({error: {message}});
+    }
+
+    // Create new entry in db
+    try {
+      const result = await db.models.genes.create({
+        ...req.body,
+        reportId: req.report.id,
+      });
+      return res.status(HTTP_STATUS.CREATED).json(result.view('public'));
+    } catch (error) {
+      logger.error(`Unable to create gene ${error}`);
+      return res.status(HTTP_STATUS.INTERNAL_SERVER_ERROR).json({
+        error: {message: 'Unable to create gene'},
+      });
+    }
   });
 
 module.exports = router;
diff --git a/app/routes/report/tmburMutationBurden.js b/app/routes/report/tmburMutationBurden.js
index f4f6a2caa..a3c23f84c 100644
--- a/app/routes/report/tmburMutationBurden.js
+++ b/app/routes/report/tmburMutationBurden.js
@@ -71,7 +71,7 @@ router.route('/')
   .post(async (req, res) => {
     // Validate request against schema
     try {
-      await validateAgainstSchema(createSchema, req.body);
+      validateAgainstSchema(createSchema, req.body);
     } catch (error) {
       const message = `Error while validating tmbur mutation burden create request ${error}`;
       logger.error(message);
diff --git a/test/routes/report/gene.test.js b/test/routes/report/gene.test.js
index ebdedea00..303b21ff2 100644
--- a/test/routes/report/gene.test.js
+++ b/test/routes/report/gene.test.js
@@ -97,7 +97,7 @@ describe('/reports/{report}/genes', () => {
     afterEach(async () => {
       return db.models.genes.destroy({
         where: {ident: getGene.ident},
-        force: true,
+        // force: true,
       });
     });
 
@@ -162,6 +162,50 @@ describe('/reports/{report}/genes', () => {
     });
   });
 
+  describe('POST', () => {
+    test('/ - 201 Created', async () => {
+      const res = await request
+        .post(`/api/reports/${report.ident}/genes`)
+        .send(GENE_DATA)
+        .auth(username, password)
+        .type('json')
+        .expect(HTTP_STATUS.CREATED);
+
+        checkGene(res.body);
+      expect(res.body).toEqual(expect.objectContaining(GENE_DATA));
+
+      // Check that record was created in the db
+      const result = await db.models.genes.findOne({
+        where: {ident: res.body.ident},
+      });
+      expect(result).not.toBeNull();
+
+      // Delete entry
+      await result.destroy({force: true});
+    });
+
+    test('/ - 400 Bad Request - Additional Property', async () => {
+      await request
+        .post(`/api/reports/${report.ident}/genes`)
+        .send({
+          ...GENE_UPDATE_DATA,
+          additionalProperty: 'ADDITIONAL_PROPERTY',
+        })
+        .auth(username, password)
+        .type('json')
+        .expect(HTTP_STATUS.BAD_REQUEST);
+    });
+
+    test('/ - 400 Bad Request - Gene name is required', async () => {
+      await request
+        .post(`/api/reports/${report.ident}/genes`)
+        .send({})
+        .auth(username, password)
+        .type('json')
+        .expect(HTTP_STATUS.BAD_REQUEST);
+    });
+  });
+
   describe('PUT', () => {
     let putGene;