diff --git a/src/api/client_server/room.rs b/src/api/client_server/room.rs
index 232cf209cd922cf1a750b8c9bf8d4e3b9c2c15da..a7c9e15c4059451b60fc8f4753fef55acaeee4bf 100644
--- a/src/api/client_server/room.rs
+++ b/src/api/client_server/room.rs
@@ -364,6 +364,14 @@ pub async fn create_room_route(body: Ruma<create_room::v3::Request>) -> Result<c
 	})
 	.expect("event is valid, we just created it");
 
+	if body.visibility == room::Visibility::Public {
+		power_levels_content["m.call.invite"] = serde_json::to_value(50).expect("50 is valid Value");
+		power_levels_content["events"]["org.matrix.msc3401.call"] =
+			serde_json::to_value(50).expect("50 is valid Value");
+		power_levels_content["events"]["org.matrix.msc3401.call.member"] =
+			serde_json::to_value(50).expect("50 is valid Value");
+	}
+
 	if let Some(power_level_content_override) = &body.power_level_content_override {
 		let json: JsonObject = serde_json::from_str(power_level_content_override.json().get())
 			.map_err(|_| Error::BadRequest(ErrorKind::BadJson, "Invalid power_level_content_override."))?;