canonical: https://jentic.com/apis/learnupon.com/learnupon

# LearnUpon LMS API

Jentic publishes the only available OpenAPI specification for LearnUpon LMS API, keeping it validated and agent-ready. The LearnUpon API exposes a cloud Learning Management System: agents can manage users, list and inspect courses, enrol and unenrol learners, organise people into groups, drive learning paths with their own enrolments, read exam results, and read leaderboard and badge data. Multi-tenant deployments are addressed via a portal subdomain in the base URL, and a /portals endpoint lists the portals the calling account can reach.

## For AI agents

Manage users, courses, enrolments, groups, learning paths, and exam results on LearnUpon LMS - including multi-portal accounts and gamification badges and leaderboards.

## Scope

Does not handle video hosting, content authoring, or payments - use for user, course, enrolment, path, and exam-results management on LearnUpon only.

## Capabilities

- Create, update, and delete user records to keep LearnUpon in sync with the source HRIS
- List courses and inspect a single course's full detail including modules and metadata
- Enrol and unenrol learners on a course or learning path with a single API call
- Manage groups and group membership to control content visibility for cohorts
- Read exam results and leaderboard data to surface progress in external dashboards
- List portals on a multi-portal account so an agent can route writes to the right tenant

## Use cases

### HRIS-Driven Enrolment Automation

Enrol new hires into mandatory training the day they start. The agent receives a new-hire event from the HRIS, creates the user via POST /users if they do not already exist, then calls POST /enrollments with the courseId and userId. Replaces the manual L&D ticket queue and ensures compliance training assignment is consistent.

Example prompt: On HRIS new-hire event, POST /users with the new hire details, then POST /enrollments with courseId for each mandatory course.

### Learning Path Cohort Launch

Kick off a learning path for a group of learners at once. The agent reads the cohort from /groups/{groupId}/members, then iterates POST /learning_paths/{learningPathId}/enrollments per learner so they all start the same day. Useful when a leadership programme runs in defined cohorts and onboarding has to be synchronous.

Example prompt: Call GET /groups/{groupId}/members and POST /learning_paths/{learningPathId}/enrollments once per returned userId.

### Exam Results Dashboard Sync

Show exam results in a managers' BI dashboard. The agent reads /exams/{examId}/results on a schedule, joins the userId to the local employee record, and writes pass and fail counts plus average score to the warehouse. Removes the need for managers to log into LearnUpon to inspect compliance scores.

Example prompt: GET /exams/{examId}/results for each tracked exam and load the rows into the warehouse exam_results table keyed by userId.

### Gamification Leaderboard Slack Post

Post a weekly leaderboard digest to keep learners engaged. The agent calls /gamification/leaderboard and /gamification/badges, builds a top-10 list with badge counts, and posts it to a Slack channel. Drives healthy competition without manual exports each week.

Example prompt: GET /gamification/leaderboard, take the top 10 users, fetch their badges via /gamification/badges, and post the formatted digest to Slack.

### AI Agent L&D Operator via Jentic

An L&D admin uses an AI agent on Jentic to enrol learners, check progress, and pull results without learning the API surface. The agent searches Jentic for the matching LearnUpon operation, executes the enrolment, and confirms back. Multi-portal accounts are handled by the portal variable on the base URL so the right tenant is targeted automatically.

Example prompt: Through Jentic, search 'enrol learner in learnupon course', resolve the courseId from the user prompt, and execute POST /enrollments with the right portal.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /users | Create a user |
| GET | /courses | List courses on the portal |
| POST | /enrollments | Enrol a user in a course |
| DELETE | /enrollments/{enrollmentId} | Unenrol a user |
| POST | /learning_paths/{learningPathId}/enrollments | Enrol a user in a learning path |
| GET | /exams/{examId}/results | Get exam results |
| GET | /gamification/leaderboard | Get the gamification leaderboard |
| GET | /portals | List portals available on the account |

## Key resources

- **Users** — User records with create, update, and delete operations
- **Courses** — Read-only catalogue of courses with detail lookup
- **Enrollments** — Enrol and unenrol learners on courses
- **Groups** — Group containers and membership management
- **Learning Paths** — Multi-course paths with their own enrolment endpoint
- **Exams** — Exam results lookup for reporting
- **Gamification** — Leaderboard and badges for engagement reporting
- **Portals** — Portal listing for multi-tenant accounts

## Why Jentic

- **Setup:** Wiring the LearnUpon LMS API by hand means encoding its basic-auth credentials, resolving your portal subdomain in the host, and mapping the user, course, and enrolment endpoints yourself. Through Jentic you install once, import the LearnUpon LMS API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** You choose which LearnUpon operations the agent may call, so you can limit it to the ones it needs, such as creating users, listing courses, and enrolling learners. Because enrolment deletion removes a learner's access, you can leave that operation out and grant only create and read access.
- **Credential handling:** Your LearnUpon basic-auth credentials are stored once, encrypted, by your own Jentic One instance and applied to the Authorization header at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'enrol a learner in a LearnUpon course' or 'get exam results', and Jentic returns the matching LearnUpon operation with its input schema so the agent calls the right endpoint without scanning the docs.

## Related APIs

- **TalentLMS API** — TalentLMS is a competing corporate LMS with similar user, course, and enrolment endpoints.
- **Moodle API** — Moodle is the open-source LMS alternative to LearnUpon with broad course and enrolment coverage.
- **BambooHR API** — BambooHR provides the canonical employee list that drives LearnUpon enrolment.

## FAQ

### Why is there no official OpenAPI spec for LearnUpon LMS API?

LearnUpon does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call LearnUpon LMS API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the LearnUpon API use?

The LearnUpon API uses HTTP basic authentication with either a username and password or an API key as the basic credential. Through Jentic, the credential lives in the encrypted vault and is applied to the `Authorization` header at execution time, never reaching the agent context.

### Can I enrol a user in a course or learning path through the API?

Yes. POST /enrollments enrols a user in a course given userId and courseId, and POST /learning_paths/{learningPathId}/enrollments enrols them in a learning path. Use DELETE /enrollments/{enrollmentId} to unenrol cleanly.

### What are the rate limits for the LearnUpon API?

Rate limits are not declared in the OpenAPI spec. For bulk operations like cohort enrolment, run requests sequentially with a small backoff and prefer learning-path enrolment over per-course enrolment loops where possible.

### How do I read exam results through Jentic?

Run `pip install jentic`, search 'get learnupon exam results', and execute GET /exams/{examId}/results. Jentic returns the rows ready to load into a warehouse or post into a manager dashboard.

### Does the LearnUpon API support multi-portal accounts?

Yes. The base URL `https://{portal}.learnupon.com/api/v1.1` includes a `portal` variable, and GET /portals lists the portals the calling account can reach so an agent can target the right tenant for each operation.

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

Yes. Because Jentic One is self-hosted, you decide which LearnUpon operations the agent may call and which credentials it uses, so you can grant only the endpoints it needs, such as POST /users, GET /courses, and POST /enrollments. Since DELETE /enrollments/{enrollmentId} removes a learner's access, you can leave that destructive operation out and allow just create and read access. Your rules, not the agent, determine the scope of every call.
