diff --git a/src/python/dm/daq_web_service/api/experimentRestApi.py b/src/python/dm/daq_web_service/api/experimentRestApi.py
index 75e2720a75cb8b7205449c90a32f73f8eb41c790..24ea8101267e1c6257f69142b4dd9dcac3ad4ef5 100755
--- a/src/python/dm/daq_web_service/api/experimentRestApi.py
+++ b/src/python/dm/daq_web_service/api/experimentRestApi.py
@@ -8,6 +8,7 @@ from dm.common.utility.encoder import Encoder
 from dm.common.exceptions.dmException import DmException
 from dm.common.objects.experiment import Experiment
 from dm.common.objects.uploadInfo import UploadInfo
+from dm.common.objects.daqInfo import DaqInfo
 from daqRestApi import DaqRestApi
 
 class ExperimentRestApi(DaqRestApi):
@@ -17,46 +18,47 @@ class ExperimentRestApi(DaqRestApi):
 
     @DaqRestApi.execute
     def startDaq(self, experimentName, dataDirectory, daqInfo={}):
-        url = '%s/experiments/startDaq' % (self.getContextRoot())
-        if experimentName is None or not len(experimentName):
+        if not experimentName:
             raise InvalidRequest('Experiment name must be provided.')
-        if dataDirectory is None or not len(dataDirectory):
+        if not dataDirectory:
             raise InvalidRequest('Experiment data directory must be provided.')
-        daqInfo['experimentName'] = experimentName
-        daqInfo['dataDirectory'] = dataDirectory
-        url += '?experimentName=%s' % Encoder.encode(experimentName)
-        url += '&dataDirectory=%s' % Encoder.encode(dataDirectory)
-        url += '&daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
+        url = '%s/experimentsByName/%s/startDaq/%s' % (self.getContextRoot(), Encoder.encode(experimentName), Encoder.encode(dataDirectory))
+        url += '?daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
         responseDict = self.sendSessionRequest(url=url, method='POST')
-        return Experiment(responseDict)
+        return DaqInfo(responseDict)
 
     @DaqRestApi.execute
-    def stopDaq(self, experimentName):
-        url = '%s/experiments/stopDaq' % (self.getContextRoot())
-        if experimentName is None or not len(experimentName):
+    def stopDaq(self, experimentName, dataDirectory):
+        if not experimentName:
             raise InvalidRequest('Experiment name must be provided.')
-        url += '?experimentName=%s' % Encoder.encode(experimentName)
+        if not dataDirectory:
+            raise InvalidRequest('Experiment data directory must be provided.')
+        url = '%s/experimentsByName/%s/stopDaq/%s' % (self.getContextRoot(), Encoder.encode(experimentName), Encoder.encode(dataDirectory))
         responseDict = self.sendSessionRequest(url=url, method='POST')
-        return Experiment(responseDict)
+        return DaqInfo(responseDict)
+
+    @DaqRestApi.execute
+    def getDaqInfo(self, id):
+        if not id:
+            raise InvalidRequest('Daq id must be provided.')
+        url = '%s/experimentDaqs/%s' % (self.getContextRoot(),id)
+        responseDict = self.sendSessionRequest(url=url, method='GET')
+        return DaqInfo(responseDict)
 
     @DaqRestApi.execute
     def upload(self, experimentName, dataDirectory, daqInfo={}):
-        url = '%s/experiments/upload' % (self.getContextRoot())
-        if experimentName is None or not len(experimentName):
+        if not experimentName:
             raise InvalidRequest('Experiment name must be provided.')
-        if dataDirectory is None or not len(dataDirectory):
+        if not dataDirectory:
             raise InvalidRequest('Experiment data directory must be provided.')
-        daqInfo['experimentName'] = experimentName
-        daqInfo['dataDirectory'] = dataDirectory
-        url += '?experimentName=%s' % Encoder.encode(experimentName)
-        url += '&dataDirectory=%s' % Encoder.encode(dataDirectory)
-        url += '&daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
+        url = '%s/experimentsByName/%s/upload/%s' % (self.getContextRoot(), Encoder.encode(experimentName), Encoder.encode(dataDirectory))
+        url += '?daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
         responseDict = self.sendSessionRequest(url=url, method='POST')
         return UploadInfo(responseDict)
 
     @DaqRestApi.execute
     def getUploadInfo(self, id):
-        url = '%s/experiments/upload/%s' % (self.getContextRoot(),id)
+        url = '%s/experimentUploads/%s' % (self.getContextRoot(),id)
         if not id:
             raise InvalidRequest('Upload id must be provided.')
         responseDict = self.sendSessionRequest(url=url, method='GET')