diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index e19e237c9e5199b8c7cc4e4a3e6b1b8c59bd1648..d1794a1da07b8c7221aed9c86c538d61bf2f15ff 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -31,6 +31,7 @@ var ProjectStatistics = require('./map/data/ProjectStatistics');
 var Reaction = require('./map/data/Reaction');
 var ReferenceGenome = require('./map/data/ReferenceGenome');
 var SbmlFunction = require('./map/data/SbmlFunction');
+var SbmlParameter = require('./map/data/SbmlParameter');
 var SecurityError = require('./SecurityError');
 var SessionData = require('./SessionData');
 var User = require('./map/data/User');
@@ -357,6 +358,13 @@ ServerConnector.getSbmlFunctionUrl = function (queryParams, filterParams) {
   });
 };
 
+ServerConnector.getSbmlParameterUrl = function (queryParams, filterParams) {
+  return this.getApiUrl({
+    url: this.getModelsUrl(queryParams) + "parameters/" + queryParams.parameterId,
+    params: filterParams
+  });
+};
+
 ServerConnector.getReferenceGenomeUrl = function (queryParams, filterParams) {
   var version = this.getIdOrAsterisk(queryParams.version);
 
@@ -1863,4 +1871,17 @@ ServerConnector.getSbmlFunction = function (params) {
   });
 };
 
+ServerConnector.getSbmlParameter = function (params) {
+  var self = this;
+  if (params === undefined) {
+    params = {};
+  }
+  return self.getProjectId(params.projectId).then(function (result) {
+    params.projectId = result;
+    return self.sendGetRequest(self.getSbmlParameterUrl(params));
+  }).then(function (content) {
+    return new SbmlParameter(JSON.parse(content));
+  });
+};
+
 module.exports = ServerConnector;
diff --git a/frontend-js/src/main/js/map/data/MapModel.js b/frontend-js/src/main/js/map/data/MapModel.js
index 53e0a82877e79fee40acce379472bd534c6cfaa2..84d207a521feab98b5e740565ebb0c1211b41e0c 100644
--- a/frontend-js/src/main/js/map/data/MapModel.js
+++ b/frontend-js/src/main/js/map/data/MapModel.js
@@ -46,6 +46,8 @@ function MapModel(configuration) {
   this._submodels = [];
 
   this._sbmlFunctions = [];
+  this._sbmlParameters = [];
+
 
   if (configuration !== undefined) {
     if (configuration instanceof MapModel) {
@@ -831,6 +833,13 @@ MapModel.prototype.addSbmlFunction = function (sbmlFunction) {
   this._sbmlFunctions[sbmlFunction.getId()] = sbmlFunction;
 };
 
+
+MapModel.prototype.addSbmlParameter = function (sbmlParameter) {
+  this._sbmlParameters[sbmlParameter.getId()] = sbmlParameter;
+};
+
+
+
 MapModel.prototype.getSbmlFunctionById = function (id) {
   var self = this;
   if (self._sbmlFunctions[id] !== undefined) {
@@ -843,5 +852,17 @@ MapModel.prototype.getSbmlFunctionById = function (id) {
   }
 };
 
+MapModel.prototype.getSbmlParameterById = function (id) {
+  var self = this;
+  if (self._sbmlParameters[id] !== undefined) {
+    return Promise.resolve(self._sbmlParameters[id]);
+  } else {
+    return ServerConnector.getSbmlParameter({modelId: self.getId(), parameterId: id}).then(function (sbmlParameter) {
+      self.addSbmlParameter(sbmlParameter);
+      return sbmlParameter;
+    })
+  }
+};
+
 
 module.exports = MapModel;
diff --git a/frontend-js/src/main/js/map/data/SbmlParameter.js b/frontend-js/src/main/js/map/data/SbmlParameter.js
new file mode 100644
index 0000000000000000000000000000000000000000..86c52d8b1b00e328939a4410c0c9898015c4fe6e
--- /dev/null
+++ b/frontend-js/src/main/js/map/data/SbmlParameter.js
@@ -0,0 +1,56 @@
+"use strict";
+
+function SbmlParameter(jsonObject) {
+  var self = this;
+  self.setParameterId(jsonObject.parameterId);
+  self.setValue(jsonObject.value);
+  self.setGlobal(jsonObject.global);
+  self.setName(jsonObject.name);
+  self.setId(jsonObject.id);
+  self.setUnitsId(jsonObject.unitsId);
+}
+
+SbmlParameter.prototype.setParameterId = function (parameterId) {
+  this._parameterId = parameterId;
+};
+SbmlParameter.prototype.getParameterId = function () {
+  return this._parameterId;
+};
+
+SbmlParameter.prototype.setUnitsId = function (unitsId) {
+  this._unitsId = unitsId;
+};
+SbmlParameter.prototype.getUnitsId = function () {
+  return this._unitsId;
+};
+
+SbmlParameter.prototype.setValue = function (value) {
+  this._value = value;
+};
+SbmlParameter.prototype.getValue = function () {
+  return this._value;
+};
+
+SbmlParameter.prototype.setGlobal = function (global) {
+  this._global = global;
+};
+SbmlParameter.prototype.getGlobal = function () {
+  return this._global;
+};
+
+SbmlParameter.prototype.setName = function (name) {
+  this._name = name;
+};
+SbmlParameter.prototype.getName = function () {
+  return this._name;
+};
+
+SbmlParameter.prototype.setId = function (id) {
+  this._id = id;
+};
+SbmlParameter.prototype.getId = function () {
+  return this._id;
+};
+
+
+module.exports = SbmlParameter;
diff --git a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
index b32de186359909e6b7dd8e04fba75614e47aa3cd..f687e2f4a303d5b221610d4b7c312183c491e9c9 100644
--- a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
@@ -58,8 +58,8 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
   if (reaction.getKineticLaw() === undefined) {
     return Promise.resolve(result);
   } else {
+    var kineticLaw = reaction.getKineticLaw();
     return Functions.loadScript('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML').then(function () {
-      var kineticLaw = reaction.getKineticLaw();
       result.appendChild(Functions.createElement({type: "h4", content: "Kinetic law"}));
 
       if (kineticLaw.getMathMlPresentation() !== undefined) {
@@ -80,6 +80,14 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
     }).then(function (functions) {
       result.appendChild(self.createSbmlFunctionDiv(functions));
 
+      var promises = [];
+      for (var i = 0; i < kineticLaw.getParameterIds().length; i++) {
+        promises.push(self.getCustomMap().getModel().getSbmlParameterById(kineticLaw.getParameterIds()[i]));
+      }
+      return Promise.all(promises);
+    }).then(function (parameters) {
+      result.appendChild(self.createSbmlParameterDiv(parameters));
+
       return Promise.resolve(result);
     });
   }
@@ -110,6 +118,22 @@ ReactionInfoWindow.prototype.createSbmlFunctionDiv = function (functions) {
   return result;
 };
 
+ReactionInfoWindow.prototype.createSbmlParameterDiv = function (parameters) {
+  var result = Functions.createElement({type: "div"});
+  if (parameters.length > 0) {
+    result.appendChild(Functions.createElement({type: "h5", content: "Parameters: "}));
+    var guiUtils = new GuiUtils();
+    var table = Functions.createElement({type: "div", style: "display: table;", className: "borderTable"});
+    table.appendChild(guiUtils.createTableRow(["Name", "parameterId", "Value", "Global"]));
+    for (var i = 0; i < parameters.length; i++) {
+      var sbmlFunction = parameters[i];
+      table.appendChild(guiUtils.createTableRow([sbmlFunction.getName(), sbmlFunction.getParameterId(), sbmlFunction.getValue(), sbmlFunction.getGlobal()]));
+    }
+    result.appendChild(table);
+  }
+  return result;
+};
+
 ReactionInfoWindow.prototype.init = function () {
   var self = this;
   return AbstractInfoWindow.prototype.init.call(this).then(function () {
diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js
index e0fc3fd77bcc2deaae9a8942b3fc1c353b98b25b..358de90d21be53977765f28462ec4aa263713476 100644
--- a/frontend-js/src/test/js/ServerConnector-test.js
+++ b/frontend-js/src/test/js/ServerConnector-test.js
@@ -385,5 +385,12 @@ describe('ServerConnector', function () {
     });
   });
 
+  it('getSbmlParameter', function () {
+    return ServerConnector.getSbmlParameter({parameterId: 7}).then(function (sbmlParameter) {
+      assert.equal("local param", sbmlParameter.getName());
+      assert.equal(7, sbmlParameter.getId());
+    });
+  });
+
 
 });
diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js
index 9996400b766e514e2e92c2e9014f39edd777a315..c02367b163aee95a25d702b94601334161a36509 100644
--- a/frontend-js/src/test/js/helper.js
+++ b/frontend-js/src/test/js/helper.js
@@ -23,6 +23,7 @@ var AbstractDbOverlay = require("../../main/js/map/overlay/AbstractDbOverlay");
 var Project = require("../../main/js/map/data/Project");
 var Reaction = require("../../main/js/map/data/Reaction");
 var SbmlFunction = require("../../main/js/map/data/SbmlFunction");
+var SbmlParameter = require("../../main/js/map/data/SbmlParameter");
 var SearchDbOverlay = require("../../main/js/map/overlay/SearchDbOverlay");
 var User = require("../../main/js/map/data/User");
 
@@ -413,6 +414,17 @@ Helper.prototype.createSbmlFunction = function () {
   });
 };
 
+Helper.prototype.createSbmlParameter = function () {
+  return new SbmlParameter({
+    "parameterId": "local_param",
+    "unitsId": 24,
+    "name": "local param",
+    "global": false,
+    "id": this.idCounter++,
+    "value": 5.0
+  });
+};
+
 Helper.prototype.createKineticLaw = function () {
   return new KineticLaw({
     "parameterIds": [],
@@ -425,8 +437,6 @@ Helper.prototype.createKineticLaw = function () {
 };
 
 
-
-
 Helper.EPSILON = 1e-6;
 
 module.exports = Helper;
diff --git a/frontend-js/src/test/js/map/data/SbmlParameter-test.js b/frontend-js/src/test/js/map/data/SbmlParameter-test.js
new file mode 100644
index 0000000000000000000000000000000000000000..151edf82bb4f34caa49c7d22ae884065acddc599
--- /dev/null
+++ b/frontend-js/src/test/js/map/data/SbmlParameter-test.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var SbmlParameter = require('../../../../main/js/map/data/SbmlParameter');
+var chai = require('chai');
+var assert = chai.assert;
+var logger = require('../../logger');
+
+describe('SbmlParameter', function () {
+  beforeEach(function () {
+    logger.flushBuffer();
+  });
+
+  it("constructor", function () {
+    var object = new SbmlParameter({
+      "parameterId": "local_param",
+      "unitsId": 24,
+      "name": "local param",
+      "global": false,
+      "id": 7,
+      "value": 5.0
+    });
+    assert.ok(object);
+    assert.equal("local_param", object.getParameterId());
+    assert.equal(24, object.getUnitsId());
+    assert.equal("local param", object.getName());
+    assert.equal(false, object.getGlobal());
+    assert.equal(7, object.getId());
+    assert.equal(5.0, object.getValue());
+
+  });
+});
diff --git a/frontend-js/src/test/js/map/window/ReactionInfoWindow-test.js b/frontend-js/src/test/js/map/window/ReactionInfoWindow-test.js
index 4c36cdd7fa414ce9c3d7202703aec7d17684b12d..88705cfd9c7ccb6a4ebd05855e6812110346ad05 100644
--- a/frontend-js/src/test/js/map/window/ReactionInfoWindow-test.js
+++ b/frontend-js/src/test/js/map/window/ReactionInfoWindow-test.js
@@ -76,7 +76,7 @@ describe('ReactionInfoWindow', function () {
       });
     });
 
-    it("with kinetic parameters", function () {
+    it("with kinetic function", function () {
       var map = helper.createCustomMap();
       var sbmlFunction = helper.createSbmlFunction();
       map.getModel().addSbmlFunction(sbmlFunction);
@@ -96,5 +96,25 @@ describe('ReactionInfoWindow', function () {
         assert.ok(div.innerHTML.indexOf(sbmlFunction.getArguments()[0]) >= 0, "Function argument doesn't exist in the output div");
       });
     });
+    it("with kinetic parameters", function () {
+      var map = helper.createCustomMap();
+      var sbmlParameter = helper.createSbmlParameter();
+      map.getModel().addSbmlParameter(sbmlParameter);
+
+      var reaction = helper.createReaction(map);
+      reaction.setKineticLaw(helper.createKineticLaw());
+      reaction.getKineticLaw().getParameterIds().push(sbmlParameter.getId());
+
+      var reactionWindow = new ReactionInfoWindow({
+        reaction: reaction,
+        map: map
+      });
+
+      return reactionWindow.createContentDiv().then(function (div) {
+        assert.ok(div.innerHTML.indexOf("Parameters") >= 0);
+        assert.ok(div.innerHTML.indexOf(sbmlParameter.getName()) >= 0, "Parameter name doesn't exist in the output div");
+        assert.ok(div.innerHTML.indexOf(sbmlParameter.getValue()[0]) >= 0, "Parameter value doesn't exist in the output div");
+      });
+    });
   });
 });
diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/all/parameters/7/token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/all/parameters/7/token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..9a5af5e1eea1a1c213c2c929659a8dec3f6842f2
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/projects/sample/models/all/parameters/7/token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+{"parameterId":"local_param","unitsId":24,"name":"local param","global":false,"id":7,"value":5.0}
\ No newline at end of file