diff --git a/Changes b/Changes
index 04a6289..dc768c4 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
-0.64.3 2025-07-25
+0.64.3 2025-08-19
     - [feature] Add tar and zip archive input support to Krill-Indexer (kupietz)
     - [security] Update dependencies (kupietz)
+	- [enhancement] Add support for "corpus" in deserialization, "collection" 
+	  is marked as legacy (margaretha). 
 
 0.64.2 2025-07-02
     - [bugfix] Restore rewrites in Meta. (diewald)
diff --git a/src/main/java/de/ids_mannheim/korap/Krill.java b/src/main/java/de/ids_mannheim/korap/Krill.java
index 7b10c8a..9b520e0 100644
--- a/src/main/java/de/ids_mannheim/korap/Krill.java
+++ b/src/main/java/de/ids_mannheim/korap/Krill.java
@@ -211,7 +211,17 @@
 
         // Parse "collection" or "collections" attribute
         try {
-            if (json.has("collection")) {
+        	if (json.has("corpus")) {
+                final JsonNode collNode = json.get("corpus");
+
+                // TODO: Temporary
+                if (collNode.fieldNames().hasNext()) {
+                    this.setCollection(
+                            new KrillCollection().fromKoral(collNode));
+                };
+            }
+        	// EM: legacy
+        	else if (json.has("collection")) {
                 final JsonNode collNode = json.get("collection");
 
                 // TODO: Temporary
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index dd4cb75..c5e3d27 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -104,6 +104,10 @@
             if (json.has("errors") && json.get("errors").size() > 0) {
                 this.addError(StatusCodes.INVALID_QUERY, "Json has errors.");
             }
+            else if (json.has("corpus")) {
+                this.fromKoral(json.get("corpus"));
+            }
+            // EM: legacy
             else if (json.has("collection")) {
                 this.fromKoral(json.get("collection"));
             }
@@ -113,7 +117,7 @@
             }
             else {
                 this.addError(StatusCodes.MISSING_COLLECTION,
-                        "Collection is not found");
+                        "VC is not found");
                 this.fromBuilder(this.build().nothing());
             }
         }
@@ -216,7 +220,7 @@
         }
         else{
             this.addError(StatusCodes.MISSING_COLLECTION,
-                    "Collection is not found " + fileName);
+                    "VC is not found " + fileName);
 			return this;
         };
 
@@ -251,6 +255,10 @@
     private CollectionBuilder.Interface _fromKoral (JsonNode json)
 		throws QueryException {
 
+    	if (json.has("corpus")) {
+			return this._fromKoral(json.at("/corpus"));
+		};
+		
 		if (json.has("collection")) {
 			return this._fromKoral(json.at("/collection"));
 		};
diff --git a/src/main/java/de/ids_mannheim/korap/response/Response.java b/src/main/java/de/ids_mannheim/korap/response/Response.java
index 46c51c1..eaf4d7f 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Response.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Response.java
@@ -557,8 +557,11 @@
         if (this.collection != null) {
             // && this.collection.getFilters().toArray().length > 0) {
             JsonNode collNode = this.collection.toJsonNode();
-            if (collNode != null)
+            if (collNode != null) {
+                json.set("corpus", collNode);
+                // EM: legacy
                 json.set("collection", collNode);
+            };
         };
 
         return (JsonNode) json;
diff --git a/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java b/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
index 6e6f7c2..828cb40 100644
--- a/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
+++ b/src/test/java/de/ids_mannheim/korap/cache/TestInvalidVcId.java
@@ -30,7 +30,7 @@
             VirtualCorpusCache.store(vcId, ki);
         });
         assertEquals("de.ids_mannheim.korap.util.QueryException: "
-                + "Collection is not found queries/collections/named-vcs/snx.jsonld",
+                + "VC is not found queries/collections/named-vcs/snx.jsonld",
                 ex.getMessage());
     }
 
@@ -46,7 +46,7 @@
         Message m = result.getError(0);
         assertEquals(StatusCodes.MISSING_COLLECTION, m.getCode());
         assertEquals(
-                "Collection is not found queries/collections/named-vcs/unknown-vc.jsonld",
+                "VC is not found queries/collections/named-vcs/unknown-vc.jsonld",
                 m.getMessage());
         assertEquals(0, result.getTotalResults());
     }
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
index 066dc43..c38a10e 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionIndex.java
@@ -677,7 +677,7 @@
 		Result result = krill.apply(ki);
 
 		assertEquals(StatusCodes.MISSING_COLLECTION, result.getError(0).getCode());
-		assertTrue(result.getError(0).getMessage().startsWith("Collection is not found"));
+		assertTrue(result.getError(0).getMessage().startsWith("VC is not found"));
 	};
 	
     @Test
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
index 39c98e8..99ae8b8 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKrillCollectionJSON.java
@@ -32,6 +32,12 @@
         assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
     };
 
+    @Test
+    public void corpus1 () {
+        String metaQuery = _getJSONString("corpus_1.jsonld");
+        KrillCollection kc = new KrillCollection(metaQuery);
+        assertEquals(kc.toString(), "pubDate:[20000101 TO 20000101]");
+    };   
 
     @Test
     public void collection2 () {
diff --git a/src/test/resources/queries/collections/corpus_1.jsonld b/src/test/resources/queries/collections/corpus_1.jsonld
new file mode 100644
index 0000000..ad8e433
--- /dev/null
+++ b/src/test/resources/queries/collections/corpus_1.jsonld
@@ -0,0 +1,13 @@
+{
+  "@context" : "http://ids-mannheim.de/ns/KorAP/json-ld/v0.2/context.jsonld",
+  "errors" : [ ],
+  "warnings" : [ ],
+  "announcements" : [ ],
+  "corpus" : {
+    "@type" : "koral:doc",
+    "key" : "pubDate",
+    "type" : "type:date",
+    "value" : "2000-01-01",
+    "match" : "match:eq"
+  }
+}
\ No newline at end of file
