diff --git a/lib/structs/requests.cpp b/lib/structs/requests.cpp
index 6ab180e811a6f405d9b2d546817b327c4e889d99..d53ad857612a13118d994b38b52e03dae1baf271 100644
--- a/lib/structs/requests.cpp
+++ b/lib/structs/requests.cpp
@@ -137,7 +137,7 @@ to_json(json &obj, const PublicRooms &request)
                 throw std::invalid_argument("third_party_instance_id id can only be set if include_all_networks is false");
         }
         obj["third_party_instance_id"] = request.third_party_instance_id;
-        obj["include_all_networks"] = !request.third_party_instance_id.empty();
+        obj["include_all_networks"] = request.third_party_instance_id.empty();
 }
 
 void
diff --git a/tests/requests.cpp b/tests/requests.cpp
index dd6d4eecc06678c446f72a493d21067ac5914ac7..06866023630eb87f00668c0284028fb4c78e7f6a 100644
--- a/tests/requests.cpp
+++ b/tests/requests.cpp
@@ -314,6 +314,7 @@ TEST(Requests, PublicRooms)
       "generic_search_term" : "foo"
     },
     "include_all_networks" : false,
+    "since" : "",
     "third_party_instance_id" : "irc"
   })"_json);
             
@@ -325,6 +326,8 @@ TEST(Requests, PublicRooms)
   EXPECT_EQ(j, R"({
     "limit" : 10,
     "include_all_networks" : false,
+    "since": "",
+    "filter": {"generic_search_term":""},
     "third_party_instance_id" : "matrix"
   })"_json);