[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)

# Invite and enroll new LearnUpon learners

> Invite a list of new learners to LearnUpon, put them in a group and enroll them on courses in one step, from Claude Code, n8n or a script.

Source: https://cotlet.dev/integrations/learnupon-api-mcp-server/invite-and-enroll-new-learners

HR sends the names of this month's new hires, and someone in L&D has to turn the list into LearnUpon invites, a group and a set of course enrollments before the first day.

Cotlet does it in your own LearnUpon account with list\_users, invite\_users, list\_courses and enroll\_users, called by your AI agent, an n8n workflow or a script.

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

Hosted · nothing to install or maintain

## Can LearnUpon do this on its own?

LearnUpon offers invites in the interface, the batch CSV upload and the REST API with POST /portal\_invite and POST /enrollments (checked 20 Oct 2026). The API needs API keys from Settings > Integrations > API Keys, and the official MCP server is described as reporting only. Nothing turns a list in an email or a chat into invites and enrollments for you.

## How you do it in LearnUpon today

1. An admin opens Users, chooses Invite from the action menu, types one or more email addresses separated by commas, keeps the default user type Learner and selects Invite.
2. For a longer list the admin uses Users > Batch Upload, downloads the example file and fills the email column, which is required, then deletes the notes in the template and uploads it.
3. In one batch upload the interface assigns users to groups or to courses, but not both, so the admin often runs a second step: Enrollments > Create New Enrollments.
4. Invited people stay pending under Users > Pending users until they accept; the admin can still enroll a pending learner by typing the email address under Select Users.
5. The same routine repeats for every cohort, and a typo in one address is only noticed when the invite bounces.

## How to invite and enroll new LearnUpon learners

Prompt

```
Invite these 12 new hires to LearnUpon as learners in the Onboarding group, and enroll anyone who is not covered by the group on Data privacy basics.
```

1. 01  
### Skip people who already exist  
Your agent looks each address up with list\_users and the query parameter. An address that already has an account is left out of the invite and reported, so nobody gets a second invite.
2. 02  
### Invite the rest into the group  
invite\_users sends one invite per address with the user type you named and the group\_id of the group, so the learners join that group when they accept. Invites go to real people, so each call waits for your OK by default.
3. 03  
### Check what the group already assigns  
list\_courses shows the published courses. If courses are assigned to the group, LearnUpon enrolls new learners on them when they join it, so the agent enrolls by hand only on courses outside that assignment.
4. 04  
### Enroll pending learners  
enroll\_users takes the email address, so a learner who has not accepted yet already has the course ready on the first login. It only works on published courses; a draft course fails and the agent lists it for you.
5. 05  
### Report who is still pending  
At the end list\_users with status pending returns who has not accepted, so you can chase them or run the job again next week.

### What you get back

Example data

```
Addresses received: 12
Already had an account: 2 (kept out of the invite)
Invited to Onboarding: 10
Enrolled on Data privacy basics: 10
Still pending: 10
```

### Other ways to ask

- Every Monday, read the new-hire list from this sheet and invite everyone who is not in LearnUpon yet.
- Invite these 5 contractors as learners with access that expires on 31 December.
- Only check which of these addresses already have a LearnUpon account and tell me the rest.

## What LearnUpon allows, and what to know first

- LearnUpon identifies a user by email address; first and last name are optional when you invite.
- The default user type of an invite is Learner, and you can pick Instructor, Manager or Admin instead.
- A manager can be invited, but a group cannot be assigned to them until they accept the invitation.
- LearnUpon does not enroll anyone on a draft course, so the course must be published first.
- Group enrollments can take longer to process than individual ones.

invite\_users and enroll\_users ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: [LearnUpon Help: Add users to your portal](https://support.learnupon.com/hc/en-us/articles/360002489518-Add-users-to-your-portal) · [LearnUpon Help: Upload users by batch CSV file](https://support.learnupon.com/hc/en-us/articles/360002659997-Upload-users-by-batch-CSV-file) · [LearnUpon Help: Enroll individual learners on a course](https://support.learnupon.com/hc/en-us/articles/360002212597-Enroll-individual-learners-on-a-course) · [LearnUpon API guide](https://docs.learnupon.com/api/)

## Call invite\_users from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/learnupon/users/invite \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails":["maria.nowak@example.com","tom.reyes@example.com"],"user_type":"learner","group_id":"4821"}'
```

Example response

```
{
"invited": 2,
"group_id": "4821",
"status": "pending",
"emails": [
"maria.nowak@example.com",
"tom.reyes@example.com"
]
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is learnupon\_write → invite\_users. Example data.

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

## LearnUpon tools this automation uses

__Cotlet LearnUpon tools used to invite and enroll new LearnUpon learners__
| Tool | Parameters |
| ------------- | ------------------------------------------ |
| list\_users | query, group\_id, status, cursor |
| invite\_users | emails, user\_type, group\_id, expires |
| list\_courses | query |
| enroll\_users | emails, course\_ids, re\_enroll\_completed |

[All 14 LearnUpon tools with descriptions](https://cotlet.dev/integrations/learnupon-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect LearnUpon to Cotlet?

Yes. You sign in to LearnUpon yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get LearnUpon 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 LearnUpon automations

- [Re-enroll a LearnUpon group for recertification](https://cotlet.dev/integrations/learnupon-api-mcp-server/reenroll-group-for-recertification.md)
- [Offboard leavers from LearnUpon training](https://cotlet.dev/integrations/learnupon-api-mcp-server/offboard-leavers-from-training.md)
- [LearnUpon API and MCP server: every tool](https://cotlet.dev/integrations/learnupon-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to LearnUpon.

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

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

---

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.
