diff --git a/services/workflow/src/workflow/server.py b/services/workflow/src/workflow/server.py
index 682c5ec6dc983418d476b6a1c75bd759a879ab51..e6ec1ac9ad9f5b1648cf774ad9d542184baa042c 100644
--- a/services/workflow/src/workflow/server.py
+++ b/services/workflow/src/workflow/server.py
@@ -4,6 +4,7 @@ from pyramid.renderers import JSONP
 from pyramid.request import Request
 from pyramid.view import view_config, view_defaults
 from pyramid_beaker import session_factory_from_settings
+import json
 
 from workspaces.system.schema import get_engine, get_session_factory
 from workspaces.workflow.services.workflow_info import WorkflowInfo
@@ -27,6 +28,11 @@ def lookup_workflow(request):
     return request.info.lookup_workflow_definition(request.matchdict["name"])
 
 
+def lookup_workflow_json(request):
+    req = request.json_body
+    return request.info.lookup_workflow_definition(req["workflow"])
+
+
 def lookup_request(request):
     return request.info.lookup_workflow_request(request.matchdict["request_id"])
 
@@ -94,12 +100,9 @@ class WorkflowRequestRestService:
         Audience: front-end and CLI
         :return:
         """
-        # all we should have to do here is take the WorkflowRequest from the context and
-        # hand it to WorkflowInfo to save it, but we're still conflating
-        # workflows and workflow requests right now
-        request = self.request.info.create_workflow_request(
-            self.request.context, self.request.GET.getall("args")
-        )
+
+        req = self.request.json_body
+        request = self.request.info.create_workflow_request(req["workflow"], req["args"])
         return request
 
     @view_config(request_method="POST", route_name="submit_workflow_request")
@@ -111,8 +114,9 @@ class WorkflowRequestRestService:
         :return:
         """
         print(f"Submitting workflow {self.request.context}")
+
         return self.request.workflows.execute(
-            self.request.context, self.request.GET.getall("files")
+            self.request.context, self.request.json_body["files"]
         )
 
 
@@ -246,10 +250,12 @@ def main(global_config, **settings):
 
         config.add_route("workflows", "/workflows")
         config.add_route("workflow", "/workflows/{name}", factory=lookup_workflow)
+
+        # parameters are passed with json: {workflow:<name>, args: <args>}
         config.add_route(
             "create_workflow_request",
-            "/workflows/{name}/requests/create",
-            factory=lookup_workflow,
+            "/workflows/requests/create",
+            factory=lookup_workflow_json,
         )
         config.add_route(
             "workflow_request",
@@ -266,6 +272,9 @@ def main(global_config, **settings):
             "/workflows/requests/{request_id}/files/{filename}",
             factory=lookup_request,
         )
+
+        # parameters are passed with json: {files:{<name>}}.
+        # Use empty braces for no additional files
         config.add_route(
             "submit_workflow_request",
             "/workflows/requests/{request_id}/submit",