canonical: https://jentic.com/apis/lms-platform.com/lms-platform

# Lms Platform Complete LMS API - With Bulk Course Creation

The Complete LMS API builds and runs online courses on LMS Platform, creating a full course with its modules and resources in a single bulk call or piece by piece. Courses hold ordered modules, and each module holds resources of six types: Video, Audio, PDF, Presentation, Assessment, and Certificate, with file uploads for PDF and presentation material. A question bank of Single_Choice, Multiple_Choice, and Fill_in_the_blanks questions feeds assessments that learners start and submit as attempts, certificate templates back certificate resources, and a progress endpoint reports how far a student has moved through a course.

## For AI agents

Build LMS courses in one call with modules and resources, manage a quiz question bank and certificate templates, run assessment attempts, and read a student's course progress.

## Scope

Does not handle course payments, learner enrolment and user accounts, or live video classes. Use for building course content, assessments, certificates, and reading student progress only.

## Capabilities

- Create a complete course with its modules and resources in one request with bulkCreateCourse
- Add Video, Audio, PDF, Presentation, Assessment, or Certificate resources to a module, uploading files for PDF and Presentation types
- Maintain a question bank of Single_Choice, Multiple_Choice, and Fill_in_the_blanks questions with marks and correct answers
- Attach questions to an Assessment resource by questionIds with randomizeQuestions and a passingScore
- Start an assessment attempt for a resource and submit the learner's answers for grading
- Upload certificate templates and link one to a Certificate resource by certificateTemplateId
- Read a student's progress through a specific course with getStudentProgress

## Use cases

### Agent-built courses through Jentic

An agent turns a syllabus into a live course by asking Jentic for the LMS Platform course-creation operation and calling bulkCreateCourse with a course object and its modules array, each module carrying ordered resources such as videos, PDFs, and assessments. One call replaces dozens of separate create requests, and the JWT bearer token stays in your self-hosted Jentic One instance.

Example prompt: Search Jentic for 'create a complete course with modules', then call bulkCreateCourse with course title 'Introduction to Web Development', description, category 'Programming', and a modules array containing an 'HTML Basics' module with one Video resource

### Quiz authoring and assessment

Authors add questions to the bank with createQuestion, setting questionText, questionType such as Multiple_Choice, and marks, then create an Assessment resource in a module that lists those questionIds, a passingScore, and whether to randomize. Learners start an attempt with startAssessment and finish it with submitAssessment.

Example prompt: Call createQuestion with questionText 'What does HTML stand for?', questionType 'Single_Choice', options, correctAnswer, and marks 1, then create an Assessment resource with that question id and passingScore 70

### Course completion certificates

An admin uploads a certificate design with createCertificateTemplate, passing a name and templateFile, then adds a Certificate resource to the final module that references the template through certificateTemplateId, so learners who finish the course receive the certificate.

Example prompt: Call createCertificateTemplate with name 'Web Dev Completion' and a templateFile, then call createResource of type 'Certificate' in the last module with the returned certificateTemplateId

### Learner progress reporting

A reporting job calls getStudentProgress with a studentId and courseId to read how far each learner has moved through a course, then flags learners who have stalled so an instructor can follow up.

Example prompt: Call getStudentProgress for studentId 'stu_123' and courseId 'course_67890' and summarize the completion state

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/courses/bulk-create` | Create a course with modules and resources |
| GET | `/courses` | List courses |
| POST | `/courses/{courseId}/modules` | Create a module |
| POST | `/courses/{courseId}/modules/{moduleId}/resources` | Create a resource |
| POST | `/questions` | Create a question |
| POST | `/courses/{courseId}/modules/{moduleId}/resources/{resourceId}/start-assessment` | Start an assessment attempt |
| POST | `/assessment-attempts/{attemptId}/submit` | Submit assessment answers |
| GET | `/students/{studentId}/courses/{courseId}/progress` | Get student progress |

## Key resources

- **Courses** — Top-level courses with title, category, thumbnail, and active flag
- **Modules** — Ordered sections inside a course
- **Resources** — Video, Audio, PDF, Presentation, Assessment, and Certificate items inside a module
- **Questions** — Question bank used by assessment resources
- **Certificate templates** — Uploaded designs used by certificate resources

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 65 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 99 / 100
  - Developer Experience & Jentic Compatibility: 57 / 100
  - AI-Readiness & Agent Experience: 46 / 100
  - Agent Usability: 94 / 100
  - Security: 75 / 100
  - AI Discoverability: 62 / 100
- **View full report:** https://jentic.com/apis/lms-platform.com/lms-platform/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring this LMS by hand means attaching its JWT bearer token, building nested course, module, and resource payloads, and handling multipart file uploads for PDF and presentation resources. Through Jentic you install once, import it from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** This API puts courseId, moduleId, and resourceId in the URL path, so a rule can pin your agent to one course: it can build modules and resources under `/courses/{courseId}`/ for that course and nothing else. You choose the operations it may call, so destructive ones like deleteCourse or deleteQuestion are not included unless you add them.
- **Credential handling:** Your LMS Platform token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a course with modules' or 'check student progress', and Jentic returns the matching LMS Platform operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Moodle API** — Open-source LMS with course, enrolment, and grade web services
- **TalentLMS API** — Hosted training LMS with users, courses, and enrolments
- **Teachable API** — Course creator platform with students, enrolments, and sales
- **Canvas LMS API** — Institutional LMS for schools and universities

## FAQ

### What authentication does the Complete LMS API use?

Per its OpenAPI spec, every operation declares an HTTP bearer scheme with a JWT bearer format, sent as `Authorization: Bearer`. Through Jentic the token is stored encrypted by your own Jentic One instance and injected at call time, so it never enters the agent's prompt or logs.

### Can I create a whole course in one request with the Complete LMS API?

Yes. POST `/courses/bulk-create` takes a course object (title, description, category, optional thumbnailUrl and isActive) and a modules array, where each module carries its own ordered resources such as Video, PDF, and Assessment items. Use the per-module and per-resource endpoints afterwards for edits.

### What are the rate limits for the Complete LMS API?

The OpenAPI spec does not specify rate limits. Check the LMS Platform documentation or your account settings for current limits before running large bulk course imports.

### How do I add a quiz to a module with the Complete LMS API through Jentic?

Install Jentic One with `curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh`, add the Complete LMS API from the Jentic API Directory, and have your agent search for 'create an assessment resource'. Jentic returns createResource (POST `/courses/{courseId}/modules/{moduleId}/resources`) with its schema, and the agent sends type 'Assessment', a title, questionIds, and passingScore. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there a Complete LMS API MCP server?

You don't need an MCP server to give your agent the Complete LMS API. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it, with operations discovered on demand instead of loading extra tool definitions into its context.

### Can I limit what my agent is allowed to do with the Complete LMS API?

Yes. Write a rule that allows only GET and POST under `/courses/course_67890`/ so the agent can read that course and add modules and resources to it, while deleteCourse, deleteModule, and every other course stay outside its reach, and every call it makes is logged.

### Which resource types can a module contain in the Complete LMS API?

Six: Video, Audio, PDF, Presentation, Assessment, and Certificate. PDF and Presentation resources accept a file upload, Assessment resources take questionIds, randomizeQuestions, and passingScore, and Certificate resources require a certificateTemplateId.
