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

# Enroll learner

> Add a course or other content to an existing learner's Access tab. Inputs, cURL, Python and Node.js examples and an example response.

Source: https://cotlet.dev/docs/api/thought-industries/enroll_learner

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

Add a course or other content to an existing learner's Access tab.

Thought Industries API: https://cotlet.dev/docs/api/thought-industries.md

`POST https://cotlet.dev/api/v1/thought-industries/contents/{content_id}/learner/enroll`

Access: write. Confirm: waits for the user's OK before it runs.

Opens the learner profile, goes to the Access tab and clicks Add Content for the content_id. The content then shows in the learner's access widget on their dashboard, and the Content Actions Log records an enrollment with the source manager_course_enrollment. Adding content the learner already has is refused. Check seats with get_course first. By default you confirm each call; you can switch that off for this tool.

## Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `learner` | string | yes | Learner email or learner_id from list_learners. |
| `content_id` | string | yes | Course or other content ID from list_courses. |

## Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/thought-industries/contents/4b1c2d3e-6a7b-4c8d-9e0f-1a2b3c4d5e6f/learner/enroll \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"learner":"priya.nair@example.com"}'
```

**Python**

```python
result = client.call("thought-industries", "enroll_learner", {"learner":"priya.nair@example.com","content_id":"4b1c2d3e-6a7b-4c8d-9e0f-1a2b3c4d5e6f"})
```

**Node.js**

```js
const result = await cotlet.call('thought-industries', 'enroll_learner', {"learner":"priya.nair@example.com","content_id":"4b1c2d3e-6a7b-4c8d-9e0f-1a2b3c4d5e6f"});
```

**CLI**

```bash
cotlet call thought-industries enroll_learner --data '{"learner":"priya.nair@example.com","content_id":"4b1c2d3e-6a7b-4c8d-9e0f-1a2b3c4d5e6f"}'
```

## Example response

```json
{
  "learner_id": "3f9a2b18-7c4d-4e2a-9b1f-0c5d6e7f8a90",
  "content_id": "4b1c2d3e-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
  "title": "Safety basics",
  "status": "enrolled"
}
```

Previous: [List Auto Assignment rules](https://cotlet.dev/docs/api/thought-industries/list_auto_assignment_rules.md)
Next: [Import and invite learners](https://cotlet.dev/docs/api/thought-industries/import_learners.md)

---

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.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

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.
