diff --git a/src/emuvim/api/rest/monitor.py b/src/emuvim/api/rest/monitor.py
index 209670c..379c8d5 100755
--- a/src/emuvim/api/rest/monitor.py
+++ b/src/emuvim/api/rest/monitor.py
@@ -146,7 +146,7 @@
             return self._MonitorLinkAction(vnf_src_name, vnf_dst_name, command=command)
         except Exception as ex:
             logging.exception("API error.")
-            return ex.message, 500
+            return ex.message, 500, CORS_HEADER
 
     def delete(self, vnf_src_name, vnf_dst_name):
         logging.debug("REST CALL: monitor link flow remove")
@@ -156,7 +156,7 @@
             return self._MonitorLinkAction(vnf_src_name, vnf_dst_name, command=command)
         except Exception as ex:
             logging.exception("API error.")
-            return ex.message, 500
+            return ex.message, 500, CORS_HEADER
 
     def _MonitorLinkAction(self, vnf_src_name, vnf_dst_name, command=None):
         # call DCNetwork method, not really datacenter specific API for now...
@@ -211,7 +211,7 @@
                 c2 = net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie)
 
             # return setChain response
-            return (str(c1) + " " + str(c2)), 200
+            return (str(c1) + " " + str(c2)), 200, CORS_HEADER
         except Exception as ex:
             logging.exception("API error.")
             return ex.message, 500, CORS_HEADER
@@ -244,7 +244,7 @@
             c = net.monitor_agent.update_skewmon(vnf_name, resource_name, action='stop')
 
             # return monitor message response
-            return str(c), 200
+            return str(c), 200, CORS_HEADER
         except Exception as ex:
             logging.exception("API error.")
             return ex.message, 500, CORS_HEADER
