diff --git a/src/client_server/room.rs b/src/client_server/room.rs
index f73d54450ff744b6566d0b3c11de88156cf19aaa..cc7dba6cb320e7212b54a771c489e82549cd46a0 100644
--- a/src/client_server/room.rs
+++ b/src/client_server/room.rs
@@ -65,7 +65,19 @@ pub async fn create_room_route(
     let mut content = ruma::events::room::create::CreateEventContent::new(sender_user.clone());
     content.federate = body.creation_content.federate;
     content.predecessor = body.creation_content.predecessor.clone();
-    content.room_version = RoomVersionId::Version6;
+    content.room_version = match body.room_version.clone() {
+        Some(room_version) => {
+            if room_version == RoomVersionId::Version5 || room_version == RoomVersionId::Version6 {
+                room_version
+            } else {
+                return Err(Error::BadRequest(
+                    ErrorKind::UnsupportedRoomVersion,
+                    "This server does not support that room version.",
+                ));
+            }
+        }
+        None => RoomVersionId::Version6,
+    };
 
     // 1. The room create event
     db.rooms.build_and_append_pdu(