diff --git a/.gitignore b/.gitignore
index ca45ec0e2a989818735c52caf6b841aab0f5bbe5..4461783155458e1f58b2b69c2852947d8e7018e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,6 @@ venv.bak/
 
 # SQLite Databases
 *.db
+
+# images directory
+images/
diff --git a/backend/main.py b/backend/main.py
index d77f20769b2d73096a1f6af28bcfc107c1ef170d..0e126d233fd9d50490bfacb50ea0c55152e5288f 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -1,7 +1,7 @@
 from datetime import datetime, timedelta
 from uuid import UUID
 
-from fastapi import Depends, FastAPI, HTTPException, Request, status
+from fastapi import Depends, FastAPI, HTTPException, Request, UploadFile, status
 from fastapi.middleware.cors import CORSMiddleware
 from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
 from itsdangerous.serializer import Serializer
@@ -67,6 +67,17 @@ def add_item(
     return utils.prepare_item_shipping(db, item)
 
 
+@app.post("/item/register", response_model=schemas.Item)
+def add_item_with_image(
+    image: UploadFile,
+    token: str = Depends(oauth2_scheme),
+    db: Session = Depends(get_db),
+):
+    check_token(token)
+    print(image.file)
+    return utils.add_item_with_image(db, image)
+
+
 @app.post("/item/update/{item_uuid}", response_model=schemas.Item)
 def update_item(
     item_uuid: str, data: schemas.ItemUpdate, db: Session = Depends(get_db)
diff --git a/backend/utils.py b/backend/utils.py
index b247acf518818e7036572948154448e07d602d8e..aceab635738fcb00e538ffcb9c9b1d872c9da95f 100644
--- a/backend/utils.py
+++ b/backend/utils.py
@@ -1,6 +1,8 @@
 from datetime import datetime
 from html import escape
 from secrets import token_hex
+from shutil import copyfileobj
+from tempfile import SpooledTemporaryFile
 
 from cryptography.exceptions import InvalidSignature
 from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PublicKey
@@ -53,6 +55,24 @@ def prepare_item_shipping(db: Session, item: schemas.ItemCreatePrepareShipping):
     return new_item
 
 
+def add_item_with_image(db: Session, image: SpooledTemporaryFile):
+    db_item = models.Item()
+    db.add(db_item)
+    db.commit()
+    db_image = models.Image(item_uuid=db_item.uuid)
+    db.add(db_image)
+    db.commit()
+    db.refresh(db_image)
+    print(db_item.uuid)
+    print(db_image.uuid)
+    with open(f"./images/{ db_image.uuid }", "wb") as destination:
+        try:
+            copyfileobj(image.file, destination)
+        finally:
+            image.file.close
+    return db_item
+
+
 def update_item(db: Session, item: schemas.Item, data: schemas.ItemUpdate):
     public_key = Ed448PublicKey.from_public_bytes(bytes.fromhex(item.verification))
     verify = ""