diff --git a/app/api/routes.py b/app/api/routes.py
index 402e97706ac1a12a470a518cedfc1a95fd9b56ad..37e476e43be46cf1ef2fb2c0b753ec03dd7519da 100644
--- a/app/api/routes.py
+++ b/app/api/routes.py
@@ -22,3 +22,22 @@ def get_user_by_id(id):
     except Exception as e:
         return jsonify({'error': str(e)}), 500
 
+@bp.route('/user/create', methods=['GET'])
+def create_user():
+    try:
+        result = User.create_user('ethan_root', 'ethan2.clay@live.uwe.ac.uk', 'password1234', 1)
+
+        if result is None:
+            return jsonify({'error': 'User not found'}), 404
+        
+        user_data = {
+            'id': result.user_id,
+            'username': result.username,
+            'email': result.email
+        }
+        return jsonify(user_data), 200
+    
+    #If something falls over throw nice error for debugging, will change for admin only users to see errors otherwise throw generic 500
+    except Exception as e:
+        return jsonify({'error': str(e)}), 500
+
diff --git a/app/models/user.py b/app/models/user.py
index e4e8adce12d471e2e1937207ec072361a6fadf43..e319fdf20f7d5dc5f86cb5729c2b8430cb980e74 100644
--- a/app/models/user.py
+++ b/app/models/user.py
@@ -6,12 +6,16 @@ class User(db.Model):
     __tablename__ = 'users'
 
     user_id = db.Column(db.Integer, primary_key=True)
-    username = db.Column(db.String(150), nullable=False, unique=True)
-    email = db.Column(db.String(150), nullable=False, unique=True)
+    username = db.Column(db.String(255), nullable=False, unique=True)
+    email = db.Column(db.String(255), nullable=False, unique=True)
+    password = db.Column(db.String(255), nullable=False)
+    role_id = db.Column(db.SmallInteger(), nullable=False)
+    api_token = db.Column(db.String(255), nullable=True, unique=True)
+    token_expiry = db.Column(db.DateTime(), nullable=True)
 
     @classmethod
-    def create_user(cls, username, email):
-        new_user = cls(username=username, email=email)
+    def create_user(cls, username, email, password, role_id):
+        new_user = cls(username=username, email=email, password=password, role_id=role_id)
         db.session.add(new_user)
         db.session.commit()
         return new_user
diff --git a/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py b/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py
index f6db6864e8ec38dd02873080cbd04dd6e6a2488e..f6b781478c5c05b0dc26a2745c0383959b44f359 100644
--- a/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py
+++ b/migrations/versions/ac9d4555724d_add_api_token_and_expiry.py
@@ -24,6 +24,6 @@ def upgrade():
               sa.Column('email', sa.String(255), nullable=False, unique=True),
               sa.Column('password', sa.String(255), nullable=False),
               sa.Column('role_id', sa.SmallInteger(), nullable=False, server_default='1'), #Standard user permission level
-              sa.Column('api_token', sa.String(255), nullable=True),
+              sa.Column('api_token', sa.String(255), nullable=True, unique=True),
               sa.Column('token_expiry', sa.DateTime(), nullable=True)
        )
\ No newline at end of file