diff --git a/gso/api/v1/processes.py b/gso/api/v1/processes.py
index 5edcbf69d483b44e331ceed72762e928abc3bc2c..6ad15e91519db09643359614a24ce61587a6739e 100644
--- a/gso/api/v1/processes.py
+++ b/gso/api/v1/processes.py
@@ -3,11 +3,13 @@
 from typing import Any
 from uuid import UUID
 
-from fastapi import APIRouter, HTTPException, status
+from fastapi import APIRouter, HTTPException, status, Depends
 from orchestrator.db import ProcessStepTable
 from orchestrator.schemas.base import OrchestratorBaseModel
 
-router = APIRouter(prefix="/processes", tags=["Processes"])
+from gso.auth.security import opa_security_default
+
+router = APIRouter(prefix="/processes", tags=["Processes"], dependencies=[Depends(opa_security_default)])
 
 
 class CallBackResultsBaseModel(OrchestratorBaseModel):
diff --git a/gso/middlewares.py b/gso/middlewares.py
index 6005ee3874d5fd099dc7e04692478b87a0af36ac..222f50200ca55aab9d1e5d95fc97a7dd08241c2e 100644
--- a/gso/middlewares.py
+++ b/gso/middlewares.py
@@ -38,7 +38,7 @@ class ModifyProcessEndpointResponse(BaseHTTPMiddleware):
                 response_body += chunk
             try:
                 json_content = json.loads(response_body)
-                self.modify_response_body(json_content, request)
+                await self.modify_response_body(json_content, request)
                 modified_response_body = json.dumps(json_content).encode()
                 headers = dict(response.headers)
                 headers["content-length"] = str(len(modified_response_body))
@@ -55,7 +55,26 @@ class ModifyProcessEndpointResponse(BaseHTTPMiddleware):
         return response
 
     @staticmethod
-    def modify_response_body(response_body: dict[str, Any], request: Request) -> None:
+    async def _get_token(request: Request) -> str:
+        """Get the token from the request headers.
+
+        Args:
+        ----
+            request (Request): The incoming HTTP request.
+        Returns:
+        -------
+            str: The token from the request headers in specific format.
+        """
+        bearer_prefix = "Bearer "
+        authorization_header = request.headers.get("Authorization")
+        if authorization_header:
+            # Remove the "Bearer " prefix from the token
+            token = authorization_header.replace(bearer_prefix, "")
+            return f"?token={token}"
+        else:
+            return ""
+
+    async def modify_response_body(self, response_body: dict[str, Any], request: Request) -> None:
         """Modify the response body as needed.
 
         Args:
@@ -63,7 +82,8 @@ class ModifyProcessEndpointResponse(BaseHTTPMiddleware):
             response_body (Dict[str, Any]): The response body in dictionary format.
             request (Request): The incoming HTTP request.
         """
-        max_output_length = 1000
+        max_output_length = 500
+        token = await self._get_token(request)
         try:
             for step in response_body["steps"]:
                 if step["state"].get("callback_result", None):
@@ -73,7 +93,7 @@ class ModifyProcessEndpointResponse(BaseHTTPMiddleware):
                     if callback_result.get("output") and len(callback_result["output"]) > max_output_length:
                         callback_result[
                             "output"
-                        ] = f'{request.base_url}api/v1/processes/steps/{step["step_id"]}/callback-results/'
+                        ] = f'{request.base_url}api/v1/processes/steps/{step["step_id"]}/callback-results{token}'
                     step["state"]["callback_result"] = callback_result
         except (AttributeError, KeyError, TypeError):
             pass