canonical: https://jentic.com/apis/myabsorb.com/absorb-lms

# Myabsorb Absorb LMS API

Jentic publishes the only available OpenAPI specification for Absorb LMS API, keeping it validated and agent-ready. The Absorb LMS API exposes the core resources for managing a corporate or institutional learning program: users, courses, enrollments, and departments. It supports authentication, listing and creating users, browsing the course catalog, enrolling learners in courses, and managing the department structure that organizes those learners. Together the 13 endpoints cover the day-to-day operations of an Absorb LMS tenant.

## For AI agents

Manage Absorb LMS users, courses, enrollments, and departments through the Absorb REST API. Returns user, course, enrollment, and department records across 13 operations.

## Scope

Does not handle payroll, performance reviews, or content authoring - use for LMS user management, course enrollment, and department structure only.

## Capabilities

- Authenticate against an Absorb tenant to obtain an access token
- List learners in the LMS and read individual user profiles
- Create new learner accounts with role and department assignments
- Browse the available course catalog and read course detail
- Enroll a learner in a course and read enrollment progress
- Create and manage departments that organize learners
- Update existing user records with new attributes

## Use cases

### New Hire Onboarding Automation

Automatically create an Absorb learner record and enroll the new hire in the required onboarding courses on day one. The integration calls POST /users to create the account, then POST /enrollments for each required course. This collapses an HR onboarding step that L&D teams traditionally handle manually for every new starter.

Example prompt: On a new hire event, call POST /users to provision the learner, then POST /enrollments for each course in the onboarding bundle and confirm each enrollment was created.

### Compliance Training Tracking

Track which employees have completed mandatory compliance courses and surface gaps to managers. The integration lists enrollments via GET /enrollments filtered to compliance courses, joins the results to /users to read department, and outputs a completion report. This replaces manual spreadsheet tracking that compliance teams maintain alongside the LMS.

Example prompt: Page through GET /enrollments for the compliance course IDs, group by department from /users, and emit a list of incomplete learners per department.

### Department Restructure Sync

Reflect a corporate org-structure change in Absorb so reporting and assignment rules continue to map correctly. POST /departments creates the new units; GET /users plus PUT /users/{userId} reassigns affected learners. Doing this through the API keeps Absorb in sync with the system of record without admin clicks per user.

Example prompt: Create new departments via POST /departments, then for each affected user PUT /users/{userId} with the new departmentId.

### Course Catalog Surface

Surface the Absorb course catalog in an internal portal or chat tool so employees can browse and self-enroll without logging into the LMS. GET /courses returns the catalog; GET /courses/{courseId} returns detail; POST /enrollments enrolls the requesting user. This pattern improves discoverability for L&D content that often gets ignored in the LMS UI.

Example prompt: Render results from GET /courses in an internal portal; on click, call POST /enrollments with the user ID and courseId to self-enroll.

### AI Agent Learning Assistant

Equip a Jentic-driven assistant that recommends and enrolls employees in Absorb courses based on a development conversation. The agent searches Jentic for 'enroll a learner in an Absorb course', loads POST /enrollments, and creates the enrollment. Jentic injects the bearer token at execution time so the agent never sees the LMS credential.

Example prompt: Through Jentic, search for 'enroll a learner in a course', load POST /enrollments, and submit the user and course identified during the development conversation.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /authenticate | Authenticate and obtain a token |
| GET | /users | List users |
| POST | /users | Create a user |
| PUT | /users/{userId} | Update a user |
| GET | /courses | List courses |
| GET | /enrollments | List enrollments |
| POST | /enrollments | Create an enrollment |
| GET | /departments | List departments |

## Key resources

- **Auth** — Authenticate to obtain an access token
- **Users** — List, read, create, and update learners
- **Courses** — List and read courses in the catalog
- **Enrollments** — Create and read enrollments for learners
- **Departments** — Create, list, and read departments

## Why Jentic

- **Setup:** Wiring the Absorb LMS API by hand means calling /authenticate to mint a bearer token, refreshing it, and substituting your tenant subdomain into the your-domain.myabsorb.com host yourself. Through Jentic you install once, import the Absorb LMS API from the API Directory, store the tenant credentials once, and your agent calls it.
- **Permission scoping:** Absorb puts the user id in the URL path (/users/{userId}), so a rule can pin your agent to per-user reads and updates. You choose the operations it may call, so a call like creating an enrollment is not included unless you add it.
- **Credential handling:** Your Absorb tenant credentials and the bearer token from /authenticate are stored once, encrypted, by your own Jentic One instance, refreshed automatically, and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'enroll a learner' or 'list courses', and Jentic returns the matching Absorb operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **TalentLMS API** — TalentLMS is a competing cloud LMS with its own user, course, and enrollment API.
- **LearnUpon API** — LearnUpon is another corporate LMS with similar enrollment and reporting capabilities.
- **BambooHR API** — BambooHR holds the employee record of truth that Absorb learner records sync from.

## FAQ

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

Absorb LMS does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Absorb 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 Absorb LMS API use?

Absorb uses HTTP bearer authentication. Clients first call POST /authenticate with tenant credentials to obtain a token, then send it on subsequent requests. Through Jentic, the credentials and token rotation are handled in your Jentic One instance, so agents never hold raw secrets.

### Can I enroll learners with the Absorb LMS API?

Yes. POST /enrollments creates an enrollment for a user in a specific course. Use GET /enrollments to verify the enrollment was created and read its progress.

### How do I list users through Jentic?

Through Jentic, search for 'list Absorb learners', load GET /users, and call it with optional filters. Jentic forwards the bearer token from its vault and returns the user list to your agent.

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

Rate limits are not declared in the OpenAPI spec. Absorb enforces tenant-level limits at the gateway; respect 429 responses and the Retry-After header when running bulk syncs.

### Can I create departments via the Absorb LMS API?

Yes. POST /departments creates a new department, and GET /departments lists existing departments. Use PUT /users/{userId} to reassign learners as the org structure changes.

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

Yes. Because you run Jentic One yourself, your own rules decide which Absorb operations and credentials the agent may use. Absorb puts the user id in the URL path (/users/{userId}), so you can pin the agent to per-user reads and updates while withholding broader calls. You choose the operations it may reach, so a write like POST /enrollments or POST /departments is unavailable unless you explicitly grant it.
