diff --git a/src/config/contentProviderApiConfig.json b/src/config/contentProviderApiConfig.json
index fc0f5f93eb1cdcbc830ae63f082cadd927e0a6de..6e0fd1476906511dba4a4c2a0d59b126c12dd5ef 100644
--- a/src/config/contentProviderApiConfig.json
+++ b/src/config/contentProviderApiConfig.json
@@ -36,6 +36,8 @@
         "GET_PUBLISHER_URI": "/dialcode/v3/publisher/read",
         "UPDATE_PUBLISHER_URI": "/dialcode/v3/publisher/update",
         "UPDATE_COLLABORATOR": "/content/v1/collaborator/update",
+        "RESERVE_DIALCODE": "/content/v3/dialcode/reserve",
+        "RELEASE_DIALCODE": "/content/v3/dialcode/release",
         
         "CHANNEL_URI": "/channel/v3/read",
         "CHANNEL_LIST_URI": "/channel/v3/list",
diff --git a/src/libs b/src/libs
index 2c2c0a2ac5e131eec1d470ac144cbd4643992644..7a6df7aee074c64ee2400bfb0b051063155e4658 160000
--- a/src/libs
+++ b/src/libs
@@ -1 +1 @@
-Subproject commit 2c2c0a2ac5e131eec1d470ac144cbd4643992644
+Subproject commit 7a6df7aee074c64ee2400bfb0b051063155e4658
diff --git a/src/middlewares/proxy.middleware.js b/src/middlewares/proxy.middleware.js
index 7e9987d4e44a01933fd1a36abeeb0d38f12dd893..26fb4e9208565a1f1b3eedba53ca4b0bd59a2693 100644
--- a/src/middlewares/proxy.middleware.js
+++ b/src/middlewares/proxy.middleware.js
@@ -1,6 +1,7 @@
 var proxy = require('express-http-proxy')
 var contentService = require('../service/contentService')
 var collaboratorService = require('../service/collaboratorService')
+var dialCodeService = require('../service/dialCodeService')
 var requestMiddleware = require('../middlewares/request.middleware')
 var configUtil = require('sb-config-util')
 
@@ -301,4 +302,24 @@ module.exports = function (app) {
       requestMiddleware.apiAccessForCreatorUser,
       collaboratorService.updateCollaborators
     )
+
+  app
+    .route(
+      '/action' + configUtil.getConfig('RESERVE_DIALCODE') + '/:contentId'
+    )
+    .post(
+      requestMiddleware.createAndValidateRequestBody,
+      requestMiddleware.validateToken,
+      dialCodeService.reserveDialCode
+    )
+
+  app
+    .route(
+      '/action' + configUtil.getConfig('RELEASE_DIALCODE') + '/:contentId'
+    )
+    .patch(
+      requestMiddleware.createAndValidateRequestBody,
+      requestMiddleware.validateToken,
+      dialCodeService.releaseDialCode
+    )
 }
diff --git a/src/routes/dialCodeRoutes.js b/src/routes/dialCodeRoutes.js
index 23959bd1e6da5dcb06745a66d5d07bd92400c3f9..ada619c501688894e09dfe5c696e3def8611ce89 100644
--- a/src/routes/dialCodeRoutes.js
+++ b/src/routes/dialCodeRoutes.js
@@ -52,4 +52,12 @@ module.exports = function (app) {
 
   app.route(BASE_URL + '/process/status/:processId')
     .get(requestMiddleware.createAndValidateRequestBody, dialCodeService.getProcessIdStatusAPI)
+
+  app.route(BASE_URL + '/reserve/:contentId')
+    .post(requestMiddleware.createAndValidateRequestBody, requestMiddleware.validateToken,
+      dialCodeService.reserveDialCode)
+
+  app.route(BASE_URL + '/release/:contentId')
+    .patch(requestMiddleware.createAndValidateRequestBody, requestMiddleware.validateToken,
+      dialCodeService.releaseDialCode)
 }
diff --git a/src/service/dialCodeService.js b/src/service/dialCodeService.js
index 14e21eba8cfc16958c3db5af5ce75f070fbfe9cb..5454894ca44f1cfc067d156516efd2d29eb0ab7d 100644
--- a/src/service/dialCodeService.js
+++ b/src/service/dialCodeService.js
@@ -754,6 +754,86 @@ function getPublisherAPI (req, response) {
   ])
 }
 
+function reserveDialCode (req, response) {
+  var data = req.body
+  var rspObj = req.rspObj
+
+  async.waterfall([
+
+    function (CBW) {
+      contentProvider.reserveDialcode(req.params.contentId, data, req.headers, function (err, res) {
+        if (err || res.responseCode !== responseCode.SUCCESS) {
+          rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.RELEASE.FAILED_CODE
+          rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.RELEASE.FAILED_MESSAGE
+          rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.CLIENT_ERROR
+          var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
+          return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
+        } else {
+          CBW(null, res)
+        }
+      })
+    }, function (res, CBW) {
+      var requestObj = data && data.request && data.request.dialcodes ? data.request.dialcodes : {}
+      if (requestObj.qrCodeSpec && !_.isEmpty(requestObj.qrCodeSpec) && res.result.reservedDialcodes &&
+        res.result.reservedDialcodes.length) {
+        var batchImageService = new BatchImageService({
+          width: requestObj.qrCodeSpec.width,
+          height: requestObj.qrCodeSpec.height,
+          border: requestObj.qrCodeSpec.border,
+          text: requestObj.qrCodeSpec.text,
+          errCorrectionLevel: requestObj.qrCodeSpec.errCorrectionLevel,
+          color: requestObj.qrCodeSpec.color
+        })
+        var channel = _.clone(req.headers['x-channel-id'])
+        batchImageService.createRequest(res.result.reservedDialcodes, channel, requestObj.publisher, rspObj,
+          function (err, processId) {
+            if (err) {
+              LOG.error(utilsService.getLoggerData(rspObj, 'ERROR', filename, 'generateDialCodeAPI',
+                'Error while creating request to child process for images creation', err))
+              res.responseCode = responseCode.PARTIAL_SUCCESS
+              return response.status(207).send(respUtil.successResponse(res))
+            } else {
+              res.result.processId = processId
+              CBW(null, res)
+            }
+          })
+      } else {
+        CBW(null, res)
+      }
+    },
+    function (res) {
+      rspObj.result = res.result
+      return response.status(200).send(respUtil.successResponse(rspObj))
+    }
+  ])
+}
+
+function releaseDialCode (req, response) {
+  var data = req.body
+  var rspObj = req.rspObj
+
+  async.waterfall([
+
+    function (CBW) {
+      contentProvider.releaseDialcode(req.params.contentId, data, req.headers, function (err, res) {
+        if (err || res.responseCode !== responseCode.SUCCESS) {
+          rspObj.errCode = res && res.params ? res.params.err : dialCodeMessage.RELEASE.FAILED_CODE
+          rspObj.errMsg = res && res.params ? res.params.errmsg : dialCodeMessage.RELEASE.FAILED_MESSAGE
+          rspObj.responseCode = res && res.responseCode ? res.responseCode : responseCode.CLIENT_ERROR
+          var httpStatus = res && res.statusCode >= 100 && res.statusCode < 600 ? res.statusCode : 500
+          return response.status(httpStatus).send(respUtil.errorResponse(rspObj))
+        } else {
+          CBW(null, res)
+        }
+      })
+    },
+    function (res) {
+      rspObj.result = res.result
+      return response.status(200).send(respUtil.successResponse(rspObj))
+    }
+  ])
+}
+
 module.exports.generateDialCodeAPI = generateDialCodeAPI
 module.exports.dialCodeListAPI = dialCodeListAPI
 module.exports.updateDialCodeAPI = updateDialCodeAPI
@@ -766,3 +846,5 @@ module.exports.createPublisherAPI = createPublisherAPI
 module.exports.createPublisherAPI = createPublisherAPI
 module.exports.getPublisherAPI = getPublisherAPI
 module.exports.updatePublisherAPI = updatePublisherAPI
+module.exports.reserveDialCode = reserveDialCode
+module.exports.releaseDialCode = releaseDialCode
diff --git a/src/service/messageUtil.js b/src/service/messageUtil.js
index a7ff0972adcd41a9d05ac9816294bd93db08a4ba..57c5582734dfcb066e8a432784c5f764f7016873 100644
--- a/src/service/messageUtil.js
+++ b/src/service/messageUtil.js
@@ -554,6 +554,11 @@ exports.DIALCODE = {
     MISSING_MESSAGE: 'Required fields for get publisher are missing',
     FAILED_CODE: 'ERR_GET_PUBLISHER_DIALCODE_FAILED',
     FAILED_MESSAGE: 'GET publisher failed'
+  },
+
+  RELEASE: {
+    FAILED_CODE: 'ERR_RELEASING_DIALCODE_FAILED',
+    FAILED_MESSAGE: 'Unable to release the dial code'
   }
 }