diff --git a/services/metadata_service/api/artifact.py b/services/metadata_service/api/artifact.py
index f7b5aed2..22977596 100644
--- a/services/metadata_service/api/artifact.py
+++ b/services/metadata_service/api/artifact.py
@@ -137,7 +137,7 @@ async def get_artifacts_by_task(self, request):
         )
 
         filtered_body = ArtificatsApi._filter_artifacts_by_attempt_id(
-            artifacts.body)
+            artifacts)
         return web.Response(
             status=artifacts.response_code, body=json.dumps(filtered_body)
         )
@@ -181,7 +181,7 @@ async def get_artifacts_by_step(self, request):
         )
 
         filtered_body = ArtificatsApi._filter_artifacts_by_attempt_id(
-            artifacts.body)
+            artifacts)
         return web.Response(
             status=artifacts.response_code, body=json.dumps(filtered_body)
         )
@@ -216,7 +216,7 @@ async def get_artifacts_by_run(self, request):
 
         artifacts = await self._async_table.get_artifacts_in_runs(flow_name, run_number)
         filtered_body = ArtificatsApi._filter_artifacts_by_attempt_id(
-            artifacts.body)
+            artifacts)
         return web.Response(
             status=artifacts.response_code, body=json.dumps(filtered_body)
         )
@@ -352,9 +352,11 @@ def _get_latest_attempt_id(artifacts):
 
     @staticmethod
     def _filter_artifacts_by_attempt_id(artifacts):
-        attempt_id = ArtificatsApi._get_latest_attempt_id(artifacts)
+        if artifacts.response_code != 200:
+            return artifacts.body
+        attempt_id = ArtificatsApi._get_latest_attempt_id(artifacts.body)
         result = []
-        for artifact in artifacts:
+        for artifact in artifacts.body:
             if artifact['attempt_id'] == attempt_id:
                 result.append(artifact)