[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Approve Absorb LMS course enrollment requests

> Approve or decline Absorb LMS course enrollment requests by your own rule on department and course, and keep edge cases for you. Runs daily.

Source: https://cotlet.dev/integrations/absorb-lms-api-mcp-server/approve-course-enrollment-requests

Learners who self-enroll in a course that needs approval wait in a queue until an admin clears it, and every morning someone opens the report to click through the same requests.

Cotlet does it in your own Absorb LMS account with list\_course\_approvals, approve\_enrollment\_requests and decline\_enrollment\_requests, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=absorb-lms) [All Absorb LMS tools](https://cotlet.dev/integrations/absorb-lms-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Absorb LMS do this on its own?

Absorb offers approval routing and the Course Approvals Report with Approve and Decline (checked 20 Oct 2026). Approval goes to a Course Editor, a Supervisor, Department Administrators or named admins, and the choice is per course. Nothing approves by a rule across courses, and the Aura MCP is read and answer only.

## How you do it in Absorb LMS today

1. A course needs approval when its Availability tab sets Approval to Course Editor, Supervisor, Administrator or Other; None means no approval.
2. When a learner self-enrolls from the Course Catalog, the person in charge gets an Approval Request message, and the learner gets an Approval Pending message.
3. The admin opens the Course Approvals Report in the Reports tab, filters the rows and selects one or several.
4. The right-hand panel shows Approve and Decline for one row, and the same two as mass actions for many.
5. Declined learners get an Approval Denied message, approved ones the standard Enrollment message. Instructor Led sessions need a second approval in their own report.

## How to approve Absorb LMS course enrollment requests

Prompt

```
Go through the pending course approvals. Approve Finance requests for Data Privacy Essentials, decline requests from inactive users, and leave the rest for me with a one-line reason.
```

1. 01  
### Read the whole queue  
Your agent calls list\_course\_approvals, which returns each request with learner, department, course and type. The status of every learner is in the rows, because the report includes inactive users too.
2. 02  
### Apply your rule  
Each row is matched against the rule in your prompt, for example "Finance department, Data Privacy Essentials". The agent states which field decided each row.
3. 03  
### Sort into three piles  
Matches go to approve, rows from inactive users go to decline, and anything that fits no rule stays in the queue with a short note.
4. 04  
### Approve, then decline  
approve\_enrollment\_requests runs first so good requests go through even if you stop the run. decline\_enrollment\_requests runs for the decline pile. Both ask for your OK per call until you switch confirmation off.
5. 05  
### Report what was skipped  
A request that someone handled in the meantime comes back in skipped, and the agent lists it as already handled.

### What you get back

Example data

```
Pending requests: 3
Approved 2 (Finance and Warehouse, Data Privacy Essentials)
Declined 0
Left for you 1: Chen Wei, inactive user, decide whether to reactivate
Already handled by someone else: 0
```

### Other ways to ask

- Every morning, approve all requests for Online Courses from the Finance department and list the rest.
- Show me the queue grouped by course, and approve nothing.
- Decline every request from inactive users and tell me which accounts to reactivate.

## What Absorb LMS allows, and what to know first

- Absorb enforces Enrollment Approval only when a learner self-enrolls from the Course Catalog; Admin, Automatic, Enrollment Key, E-Commerce and Curriculum or Course Bundle enrollments bypass it.
- Absorb lets approval be set to None, Course Editor, Supervisor, Administrator or Other, per course, on the Availability tab.
- The Course Approvals Report includes both active and inactive users and shows only data your Admin permissions allow.
- For Instructor Led Courses a learner needs approval for the course and again for each session, and a session has its own report.
- Available actions depend on your Admin role permissions.

approve\_enrollment\_requests and decline\_enrollment\_requests ask for your OK by default. To run it daily without you, switch confirmation off for those tools in your dashboard.

Sources: [Absorb Help: Enrollment Approval](https://support.absorblms.com/hc/en-us/articles/219433737-Enrollment-Approval) · [Absorb Help: Course Approvals Report](https://support.absorblms.com/hc/en-us/articles/7917461771155-Course-Approvals-Report) · [Absorb Help: October 2026 Aura Release](https://support.absorblms.com/hc/en-us/articles/55635088123667-October-2026-Aura-Release-Connect-Aura-with-Claude-and-ChatGPT)

## Call approve\_enrollment\_requests from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/absorb-lms/enrollment-requests/approve \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"request_ids":["a41f8c2d-6e07-4b93-8d15-3c7e9a2b5f01","b52a9d3e-7f18-4ca4-9e26-4d8f0b3c6a12"]}'
```

Example response

```
{
"approved": [
{
"request_id": "a41f8c2d-6e07-4b93-8d15-3c7e9a2b5f01",
"learner": "Priya Nair",
"course": "Data Privacy Essentials"
},
{
"request_id": "b52a9d3e-7f18-4ca4-9e26-4d8f0b3c6a12",
"learner": "Luis Ortega",
"course": "Data Privacy Essentials"
}
],
"skipped": []
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is absorb\_lms\_write → approve\_enrollment\_requests. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/absorb-lms-api-mcp-server.md#automations)

## Absorb LMS tools this automation uses

__Cotlet Absorb LMS tools used to approve Absorb LMS course enrollment requests__
| Tool | Parameters |
| ----------------------------- | ---------------- |
| list\_course\_approvals | type, department |
| approve\_enrollment\_requests | request\_ids |
| decline\_enrollment\_requests | request\_ids |

[All 14 Absorb LMS tools with descriptions](https://cotlet.dev/integrations/absorb-lms-api-mcp-server.md#tools)

## Frequently asked questions

### Does approval apply when I enroll people myself?

No. Absorb skips the approval step for Admin enrollments, so enroll\_users goes straight to enrolled. Approval only holds learners who enroll themselves from the Catalog.

### Is it safe to connect Absorb LMS to Cotlet?

Yes. You sign in to Absorb LMS yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Absorb LMS once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Absorb LMS automations

- [Chase overdue Absorb LMS training](https://cotlet.dev/integrations/absorb-lms-api-mcp-server/chase-overdue-training.md)
- [Enroll new hires in Absorb LMS onboarding courses](https://cotlet.dev/integrations/absorb-lms-api-mcp-server/enroll-new-hires-in-onboarding.md)
- [Absorb LMS API and MCP server: every tool](https://cotlet.dev/integrations/absorb-lms-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Absorb LMS.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Absorb LMS.

[Sign up free](https://cotlet.dev/app/signup?app=absorb-lms)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
