diff --git a/swh/web/api/views/vault.py b/swh/web/api/views/vault.py
--- a/swh/web/api/views/vault.py
+++ b/swh/web/api/views/vault.py
@@ -8,6 +8,7 @@
 from django.http import HttpResponse
 from django.shortcuts import redirect
 
+from swh.model.hashutil import hash_to_hex
 from swh.model.identifiers import CoreSWHID, ObjectType
 from swh.web.api.apidoc import api_doc, format_docstring
 from swh.web.api.apiurls import api_route
@@ -44,15 +45,24 @@
         )
 
 
-def _vault_response(vault_response: Dict[str, Any]) -> Dict[str, Any]:
-    return {
+def _vault_response(
+    vault_response: Dict[str, Any], add_legacy_items: bool
+) -> Dict[str, Any]:
+    d = {
         "fetch_url": vault_response["fetch_url"],
         "progress_message": vault_response["progress_msg"],
         "id": vault_response["task_id"],
         "status": vault_response["task_status"],
-        "swhid": str(vault_response["swhid"]),
+        "swhid": vault_response["swhid"],
     }
 
+    if add_legacy_items:
+        swhid = CoreSWHID.from_string(vault_response["swhid"])
+        d["obj_type"] = swhid.object_type.name.lower()
+        d["obj_id"] = hash_to_hex(swhid.object_id)
+
+    return d
+
 
 ######################################################
 # Flat bundles
@@ -114,7 +124,7 @@
         res["fetch_url"] = reverse(
             "api-1-vault-fetch-flat", url_args={"swhid": str(swhid)}, request=request,
         )
-        return _vault_response(res)
+        return _vault_response(res, add_legacy_items=False)
     elif swhid.object_type == ObjectType.CONTENT:
         raise BadInputExc(
             "Content objects do not need to be cooked, "
@@ -155,7 +165,7 @@
     res["fetch_url"] = reverse(
         "api-1-vault-fetch-flat", url_args={"swhid": swhid}, request=request,
     )
-    return _vault_response(res)
+    return _vault_response(res, add_legacy_items=True)
 
 
 @api_route(
@@ -279,7 +289,7 @@
             url_args={"swhid": str(swhid)},
             request=request,
         )
-        return _vault_response(res)
+        return _vault_response(res, add_legacy_items=False)
     elif swhid.object_type == ObjectType.CONTENT:
         raise BadInputExc(
             "Content objects do not need to be cooked, "
@@ -319,7 +329,7 @@
     res["fetch_url"] = reverse(
         "api-1-vault-fetch-gitfast", url_args={"swhid": swhid}, request=request,
     )
-    return _vault_response(res)
+    return _vault_response(res, add_legacy_items=True)
 
 
 @api_route(
@@ -444,7 +454,7 @@
             url_args={"swhid": str(swhid)},
             request=request,
         )
-        return _vault_response(res)
+        return _vault_response(res, add_legacy_items=False)
     elif swhid.object_type == ObjectType.CONTENT:
         raise BadInputExc(
             "Content objects do not need to be cooked, "
diff --git a/swh/web/tests/api/views/test_vault.py b/swh/web/tests/api/views/test_vault.py
--- a/swh/web/tests/api/views/test_vault.py
+++ b/swh/web/tests/api/views/test_vault.py
@@ -200,9 +200,9 @@
 def test_api_vault_cook_legacy(api_client, mocker, directory, revision):
     mock_archive = mocker.patch("swh.web.api.views.vault.archive")
 
-    for obj_type, bundle_type, obj_id in (
-        ("directory", "flat", directory),
-        ("revision_gitfast", "gitfast", revision),
+    for obj_type, bundle_type, response_obj_type, obj_id in (
+        ("directory", "flat", "directory", directory),
+        ("revision_gitfast", "gitfast", "revision", revision),
     ):
         swhid = f"swh:1:{obj_type[:3]}:{obj_id}"
 
@@ -215,6 +215,8 @@
             "task_id": 1,
             "task_status": "done",
             "swhid": swhid,
+            "obj_type": response_obj_type,
+            "obj_id": obj_id,
         }
         stub_fetch = b"content"
 
@@ -235,6 +237,8 @@
             "id": 1,
             "status": "done",
             "swhid": swhid,
+            "obj_type": response_obj_type,
+            "obj_id": obj_id,
         }
         mock_archive.vault_cook.assert_called_with(
             bundle_type, CoreSWHID.from_string(swhid), email