diff --git a/docs/api.yml b/docs/api.yml
index a9aac3f46b903e211cb2f4669cf2f33afffdc6bc..e835c627acde04a78bdc50cfc3d775bc0b97c3f0 100644
--- a/docs/api.yml
+++ b/docs/api.yml
@@ -54,6 +54,33 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/Device'
+    delete:
+      tags:
+        - device
+      summary: Deletes a specific device. All correspondig sensors and measurements will be deleted too.
+      operationId: deleteDevice
+      security:
+        - bearerAuth: []
+      parameters:
+        - in: path
+          name: deviceID
+          description: The device id
+          required: true
+          schema:
+            type: integer
+      responses:
+        '200':
+          description: success response
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SuccessResponse'
+          default:
+            description: error response
+            content:
+              application/json:
+                schema:
+                  $ref: '#/components/schemas/ErrorResponse'
   /device/{deviceID}/sensors:
     get:
       tags:
diff --git a/src/blueprints/Devices.py b/src/blueprints/Devices.py
index 4b8520da1b49596b2447816144547fa42c0b01d4..c2088ba31ad7a20f5424f2016f0bd668ffbe7cd1 100644
--- a/src/blueprints/Devices.py
+++ b/src/blueprints/Devices.py
@@ -1,5 +1,6 @@
 from flask import Blueprint, jsonify
 
+from logic.AuthenticationWrapper import require_api_key
 from logic.database.Database import Database
 
 
@@ -25,4 +26,20 @@ def construct_blueprint(settings):
 
         return jsonify(database.sensorAccess.get_all_sensors_for_device(deviceID))
 
+    @devices.route('/device/<int:deviceID>', methods=['DELETE'])
+    @require_api_key(password=settings['api']['key'])
+    def delete_device(deviceID):
+        database = Database(settings['database']['databasePath'])
+        if not database.deviceAccess.get_device(deviceID):
+            return jsonify({'success': False, 'msg': f'No device with id "{deviceID}" existing'})
+
+        sensors = database.sensorAccess.get_all_sensors_for_device(deviceID)
+        for sensor in sensors:
+            database.measurementAccess.delete_measurements_for_sensor(sensor['id'])
+            database.sensorAccess.delete_sensor(sensor['id'])
+
+        database.deviceAccess.delete_device(deviceID)
+
+        return jsonify({'success': True})
+
     return devices
diff --git a/src/logic/database/DeviceAccess.py b/src/logic/database/DeviceAccess.py
index f42517e0c0be6baed34d19a73f385b141b0a41f5..b2ebc14efe3d12c0b043a13079fa2014a8a0e8f0 100644
--- a/src/logic/database/DeviceAccess.py
+++ b/src/logic/database/DeviceAccess.py
@@ -28,3 +28,7 @@ class DeviceAccess(DatabaseAccess):
     def add_device(self, deviceName: str):
         LOGGER.debug(f'Inserting new device "{deviceName}"')
         self._query(f'INSERT INTO {self.TABLE_NAME}(name) VALUES(?)', deviceName, fetch_type=FetchType.NONE)
+
+    def delete_device(self, deviceID: int):
+        LOGGER.debug(f'Deleting device "{deviceID}"')
+        self._query(f'DELETE FROM {self.TABLE_NAME} WHERE id = ?', deviceID, fetch_type=FetchType.NONE)