# Absorb lms

SureCloud connects to Absorb LMS to retrieve course enrolment records, training completion status, and learner progress data. This allows SureCloud to verify that security awareness and compliance training courses have been assigned to employees, that completions are being recorded within required timeframes, and that overall training compliance rates are being tracked — providing evidence for security training controls.

## Authentication and setup

Absorb LMS authenticates API requests using a username and password, which SureCloud exchanges for a Bearer token via the Absorb REST API.

{% stepper %}
{% step %}

### Create a dedicated API user in Absorb LMS

Log in to the Absorb LMS Admin portal. Navigate to **Users → Add User** and create a new admin account (e.g. `surecloud-api@yourcompany.com`). Assign it the minimum administrator role required to read course, enrolment, and user data. Avoid using a named employee account — service accounts ensure the connection remains active if the employee leaves.
{% endstep %}

{% step %}

### Note your Absorb LMS tenant URL

Your Absorb instance is hosted at a tenant-specific URL (e.g. `https://yourcompany.myabsorb.com`). You will need this as the API base URL. The Absorb REST API is accessed at `https://yourcompany.myabsorb.com/api/rest/v2`.
{% endstep %}

{% step %}

### Enter the credentials in SureCloud

Navigate to **SureCloud → Integrations → Absorb LMS → Connect**. Enter the API base URL, the admin account username, and the password. Click **Save** and then **Test Connection**.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
SureCloud stores the Absorb admin account password encrypted at rest. Rotate it every 90 days in the Absorb LMS Admin portal and update it in **SureCloud → Integrations → Absorb LMS → Edit Connection**.
{% endhint %}

## Endpoints

| API Call                                     | Use Case                                                                   |
| -------------------------------------------- | -------------------------------------------------------------------------- |
| `POST /api/rest/v2/authenticate`             | Authenticate with username and password to obtain a Bearer token           |
| `GET /api/rest/v2/users`                     | Enumerate all learners including their status and department               |
| `GET /api/rest/v2/courses`                   | List all courses to confirm required training content is available         |
| `GET /api/rest/v2/enrollments`               | Retrieve enrolment records including assigned course and completion date   |
| `GET /api/rest/v2/enrollments?courseId={id}` | Retrieve completion records for a specific course                          |
| `GET /api/rest/v2/curricula`                 | List curricula (learning paths) for structured training programme evidence |

## Pagination

`GET /api/rest/v2/users` and `GET /api/rest/v2/enrollments` use offset-based pagination. SureCloud increments the `offset` parameter by the page size until the returned count falls below the limit.

```json
GET /api/rest/v2/enrollments?take=200&skip=200
```

## Required permissions

SureCloud requires an Absorb LMS administrator account with read access to:

* Users and learner profiles
* Courses and curricula
* Enrolment and completion records

No course creation, enrolment management, or user provisioning permissions are required.

## Polling frequency

| Data Type                        | Interval       |
| -------------------------------- | -------------- |
| Learner records and status       | Every 24 hours |
| Course and curriculum inventory  | Every 24 hours |
| Enrolment and completion records | Every 24 hours |

## Troubleshooting

<details>

<summary>Authentication fails with 401 or "invalid credentials"</summary>

The username or password is incorrect, or the account has been locked in Absorb. Navigate to **Absorb LMS → Users → surecloud-api**, confirm the account is active and unlocked, and reset the password if necessary. Update the credentials in **SureCloud → Integrations → Absorb LMS → Edit Connection**.

</details>

<details>

<summary>Enrolment records are missing for some courses</summary>

Enrolments are associated with specific courses and may be filtered by date or status. SureCloud collects enrolments across all statuses including incomplete, complete, and failed. If specific course enrolments are absent, confirm the course is active and has learners assigned in the Absorb console.

</details>

<details>

<summary>Learner count does not match the Absorb user directory</summary>

Absorb may include inactive or archived users that are returned depending on the filter applied. SureCloud collects active learners by default. If specific users are missing, confirm their account status in the Absorb admin portal and check whether they have been deactivated or placed in an inactive department.

</details>

<details>

<summary>Absorb instance URL is not recognised</summary>

Confirm the API base URL follows the pattern `https://yourcompany.myabsorb.com/api/rest/v2`. Using the console URL without the `/api/rest/v2` path will result in connection errors. Update the URL in **SureCloud → Integrations → Absorb LMS → Edit Connection**.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://surecloud.gitbook.io/surecloud-docs/integrations/ccm-and-evidence-collection-integrations/absorb-lms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
