diff --git a/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_get_feedback.php b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_get_feedback.php
new file mode 100644
index 0000000000000000000000000000000000000000..eb5f379448966e6ced31177ef5aab06a3e40c232
--- /dev/null
+++ b/autograde-plugins/assignsubmission_autograde/src/classes/external/autograde_get_feedback.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace assignsubmission_autograde\external;
+
+defined('MOODLE_INTERNAL') || die();
+
+use external_api;
+use external_function_parameters;
+use external_single_structure;
+use external_multiple_structure;
+use external_value;
+use context_course;
+use moodle_exception;
+use moodle_url;
+use stdClass;
+use context_module;
+use assign;
+use assign_submission;
+use function assignsubmission_autograde\utils\assignsubmission_autograde_get_assignment;
+
+require_once($CFG->dirroot . '/mod/assign/locallib.php');
+
+final class autograde_get_feedback extends external_api {
+
+    /**
+     * Define the function parameters
+     * @return external_function_parameters
+     */
+    public static function get_feedback_parameters(): external_function_parameters {
+        return new external_function_parameters([
+            'submissionid' => new external_value(PARAM_INT, 'The ID of the submission'),
+        ]);
+    }
+
+    /**
+     * Retrieve the feedback files for a submission
+     * @param int $submissionid
+     * @return array
+     * @throws moodle_exception
+     */
+    public static function get_feedback($submissionid): array {
+        global $DB, $USER;
+
+        self::validate_parameters(self::get_feedback_parameters(), ['submissionid' => $submissionid]);
+
+        $assignment_id = $DB->get_field('assign_submission', 'assignment', array('id' => $submissionid));
+        $course_id = $DB->get_field('assign', 'course', array('id' => $assignment_id));
+
+        require_capability('mod/assign:viewgrades', context_course::instance($course_id), $USER->id, false);
+
+        $fs = get_file_storage();
+        $context = context_module::instance($assignment_id);
+        $files = $fs->get_area_files($context->id, 'assignfeedback_comments', 'feedback_files', $submissionid);
+
+        if (empty($files)) {
+            throw new moodle_exception('No feedback files found');
+        }
+
+        $result = [];
+        foreach ($files as $file) {
+            if ($file->get_filename() === '.') {
+                continue;
+            }
+            $entry = new stdClass();
+            $entry->filename = $file->get_filename();
+            $entry->url = moodle_url::make_pluginfile_url(
+                $file->get_contextid(),
+                $file->get_component(),
+                $file->get_filearea(),
+                $file->get_itemid(),
+                $file->get_filepath(),
+                $file->get_filename()
+            )->out(false);
+            $result[] = $entry;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Define the return structure
+     * @return external_multiple_structure
+     */
+    public static function get_feedback_returns(): external_multiple_structure {
+        return new external_multiple_structure(
+            new external_single_structure([
+                'filename' => new external_value(PARAM_TEXT, 'The name of the feedback file'),
+                'url' => new external_value(PARAM_URL, 'The URL to download the feedback file'),
+            ])
+        );
+    }
+}
diff --git a/autograde-plugins/assignsubmission_autograde/src/db/services.php b/autograde-plugins/assignsubmission_autograde/src/db/services.php
index 2ad3cf68f6171f85eac35665f00f84ed296a15a0..7fee82fba28f08e7dec88c57bd34aacce1a1f2ec 100644
--- a/autograde-plugins/assignsubmission_autograde/src/db/services.php
+++ b/autograde-plugins/assignsubmission_autograde/src/db/services.php
@@ -64,6 +64,12 @@ $functions = [
     'description'  => 'Retrieve the grade for a given submission',
     'capabilities' => 'mod/assign:grade',
 
+    ],
+    'mod_assignsubmission_autograde_get_feedback' => [
+    'classname'    => 'assignsubmission_autograde\external\autograde_get_feedback',
+    'methodname'   => 'get_feedback',
+    'description'  => 'Retrieve feedback files for a given submission',
+    'capabilities' => 'mod/assign:viewgrades',
     ]
 ];
 
@@ -76,6 +82,7 @@ $services = [
           'mod_assignsubmission_autograde_submission_info',
           'mod_assignsubmission_autograde_download_all_submissions',
           'mod_assignsubmission_autograde_get_grade',
+          'mod_assignsubmission_get_feedback',
       ],
       'restrictedusers' => 1,
       'enabled' => 1,
diff --git a/autograde-service/src/main/java/ch/epfl/autograde/controller/api/v1/SubmissionController.java b/autograde-service/src/main/java/ch/epfl/autograde/controller/api/v1/SubmissionController.java
index 05d0bb5bbd03128f22879611058ced195eb10de0..e4be43406b5f008520de2c04f5e2e2d0426c96e2 100644
--- a/autograde-service/src/main/java/ch/epfl/autograde/controller/api/v1/SubmissionController.java
+++ b/autograde-service/src/main/java/ch/epfl/autograde/controller/api/v1/SubmissionController.java
@@ -182,11 +182,10 @@ public final class SubmissionController {
      */
     @GetMapping(value = "/{id}/feedback/files", consumes = MediaType.ALL_VALUE, produces = "application/zip")
     public ResponseEntity<?> getFeedbackFiles(final @PathVariable int id) {
-      /*  log.info("Processing request to retrieve feedback files for submission {}", id);
+      log.info("Processing request to retrieve feedback files for submission {}", id);
 
         try {
-            // Assuming moodle.getFeedbackFiles(id) returns a zip InputStream
-            InputStream feedbackFiles = moodle.upload_feedback()
+            InputStream feedbackFiles = moodle.get_feedback(id) ;
 
             if (feedbackFiles == null) {
                 return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
@@ -200,7 +199,7 @@ public final class SubmissionController {
         } catch (Exception e) {
             log.error("Failed to retrieve feedback files for submission {}: {}", id, e.getMessage());
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
-        }*/
+        }
     }
 
     /**
diff --git a/autograde-service/src/main/java/ch/epfl/autograde/service/MoodleWebService.java b/autograde-service/src/main/java/ch/epfl/autograde/service/MoodleWebService.java
index edd11cb098c7f483ad415b01b10c1b9e1c48fc45..e8f427abaeaabe22b03e7a94f8fd1f085b7ffff1 100644
--- a/autograde-service/src/main/java/ch/epfl/autograde/service/MoodleWebService.java
+++ b/autograde-service/src/main/java/ch/epfl/autograde/service/MoodleWebService.java
@@ -251,8 +251,33 @@ public final class MoodleWebService {
             throw new RuntimeException(e);
         }
     }
+    public InputStream get_feedback(int submissionId) {
+        log.info("Fetching feedback files for submission {}", submissionId);
 
-}
+        final var FUNCTION_NAME = "mod_assignsubmission_autograde_get_feedback";
+
+        final var params = Map.of(
+                "submissionid", submissionId
+        );
 
+        try {
+            // Call Moodle API
+            var response = call(FUNCTION_NAME, params, ofInputStream());
+
+            // Check HTTP response status
+            if (response.statusCode() != HttpStatus.OK.value()) {
+                log.error("Failed to fetch feedback files for submission {}", submissionId);
+                return null;
+            }
+
+            return response.body();
+        } catch (Exception e) {
+            log.error("Error fetching feedback files for submission {}: {}", submissionId, e.getMessage());
+            return null;
+        }
+    }
 
 }
+
+
+