Moodle plagiarism plugin

Connect Moodle submissions to ScholarScan.

Download the starter Moodle plagiarism plugin package, install it under Moodle's plagiarism plugins directory, then connect it to ScholarScan with an API token from the admin console.

Before you install

Create an institution and API token in ScholarScan Admin. Moodle will use that bearer token to submit files, poll scan status, and fetch reports.

API endpoints

GET /api/health verifies the Moodle connection and API token.
POST /api/submissions queues an assignment file for scanning.
GET /api/submissions/{id}/status checks processing status.
GET /api/reports/{id} returns the similarity report.
POST /api/reference-documents uploads institutional or lecturer local references.

Installation steps

1

Download and extract

Download plagiarism_scholarscan.zip and extract the scholarscan folder into Moodle's plagiarism/ directory. To add the dedicated assignment grading column with both plagiarism and AI writing indicators, also download assignsubmission_scholarscan.zip and extract its scholarscan folder into Moodle's mod/assign/submission/ directory.

2

Run Moodle upgrade

Open Moodle site administration, complete the detected plugin upgrade, then enable plagiarism plugins if your Moodle site has them disabled.

3

Configure ScholarScan

Set the API base URL to https://apps-el.umt.edu.my/scholarscan/api, paste the API token generated in ScholarScan Admin, and enable the plugin.

4

Enable on assignments

Open an assignment's settings, expand ScholarScan plagiarism plugin settings, and configure exclusions, indexing, report timing, student access, and draft processing. Editing teachers need the plagiarism/scholarscan:enable capability.

5

Backfill older submissions

Run Moodle cron or execute php admin/cli/scheduled_task.php --execute='\\plagiarism_scholarscan\\task\\backfill_submissions_task' to upload existing submitted files for enabled assignments.

6

Review in grading

Run Moodle cron so Sync ScholarScan report statuses can update similarity scores. Teachers can then open ScholarScan report links from assignment grading, the submitted file area, or the optional ScholarScan similarity grading column.

Submission payload

  • Required fields: course_external_id, course_name, assignment_external_id, assignment_title, submission_external_id, and file.
  • Optional fields: student_external_id, student_name, and submitted_at.
  • Send assignment options in scan_settings: report timing, student access, source categories, AI/online flags, and optional lecturer-file grade suggestions.
  • Use an Idempotency-Key header for retry-safe uploads.
  • Use Authorization: Bearer YOUR_TOKEN on every API request.