diff --git a/Changes b/Changes
index 4508af4..327ecf7 100644
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@
     - [feature] Added --progress option to Krill-Indexer (kupietz)
     - [bugfix] Fixed vc cache tests (kupietz)
     - [security] Dependencies updated (diewald, margaretha, kupietz)
+    - [enhancement] Keep corpus or collection node name from json 
 
 0.64.3 2025-08-19
     - [feature] Add tar and zip archive input support to Krill-Indexer (kupietz)
diff --git a/src/main/java/de/ids_mannheim/korap/Krill.java b/src/main/java/de/ids_mannheim/korap/Krill.java
index 9b520e0..dd33028 100644
--- a/src/main/java/de/ids_mannheim/korap/Krill.java
+++ b/src/main/java/de/ids_mannheim/korap/Krill.java
@@ -216,8 +216,9 @@
 
                 // TODO: Temporary
                 if (collNode.fieldNames().hasNext()) {
-                    this.setCollection(
-                            new KrillCollection().fromKoral(collNode));
+                	KrillCollection kc = new KrillCollection().fromKoral(collNode);
+                	kc.isCorpus=true;
+                    this.setCollection(kc);
                 };
             }
         	// EM: legacy
@@ -226,8 +227,9 @@
 
                 // TODO: Temporary
                 if (collNode.fieldNames().hasNext()) {
-                    this.setCollection(
-                            new KrillCollection().fromKoral(collNode));
+                	KrillCollection kc = new KrillCollection().fromKoral(collNode);
+                	kc.isCorpus=false;
+                    this.setCollection(kc);
                 };
             }
 
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index c5e3d27..aed9d7c 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -74,6 +74,8 @@
     public static final boolean DEBUG = false;
     private double start, end; // for debugging
 
+    public boolean isCorpus = true;
+    
     /**
      * Construct a new KrillCollection.
      * 
@@ -256,10 +258,12 @@
 		throws QueryException {
 
     	if (json.has("corpus")) {
+    		isCorpus=true;
 			return this._fromKoral(json.at("/corpus"));
 		};
 		
 		if (json.has("collection")) {
+			isCorpus=false;
 			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 eaf4d7f..fa580d0 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Response.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Response.java
@@ -558,9 +558,13 @@
             // && this.collection.getFilters().toArray().length > 0) {
             JsonNode collNode = this.collection.toJsonNode();
             if (collNode != null) {
-                json.set("corpus", collNode);
+            	if (collection.isCorpus) {
+            		json.set("corpus", collNode);
+            	}
                 // EM: legacy
-                json.set("collection", collNode);
+            	else {
+            		json.set("collection", collNode);
+            	}
             };
         };
 
