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

# Import and invite learners

> Create learners in bulk, give them content and optionally send invites. Inputs, cURL, Python and Node.js examples and an example response.

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

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)

Create learners in bulk, give them content and optionally send invites.

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

`POST https://cotlet.dev/api/v1/thought-industries/learners`

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

Runs Users > Learners > gear icon > Bulk Import Learners for you. Each learner needs first_name, last_name and email. All content_ids are given to every learner in the batch: courses, webinars, articles and single SCO content. One call takes up to 1,000 learners. The app queues the import, so enrollments show up a few minutes later in list_content_actions. A learner who already exists gets no invite, and content access can only be removed one learner at a time afterwards. By default you confirm each call; you can switch that off for this tool.

## Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `learners` | array | yes | Objects with first_name, last_name and email, up to 1,000. |
| `content_ids` | array | no | Content IDs from list_courses that every learner in the batch gets. |
| `send_invite` | boolean | no | Send an email invitation to new learners. Default: false. |
| `invite_message` | string | no | Message added to the invitation email. |

## Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/thought-industries/learners \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"learners":[{"first_name":"Priya","last_name":"Nair","email":"priya.nair@example.com"},{"first_name":"Tom","last_name":"Becker","email":"tom.becker@example.com"}],"content_ids":["8f2a1c34-5b6d-4e7f-9a01-2b3c4d5e6f70"],"send_invite":true,"invite_message":"Welcome to Northwind Academy. Start with Onboarding 101."}'
```

**Python**

```python
result = client.call("thought-industries", "import_learners", {"learners":[{"first_name":"Priya","last_name":"Nair","email":"priya.nair@example.com"},{"first_name":"Tom","last_name":"Becker","email":"tom.becker@example.com"}],"content_ids":["8f2a1c34-5b6d-4e7f-9a01-2b3c4d5e6f70"],"send_invite":True,"invite_message":"Welcome to Northwind Academy. Start with Onboarding 101."})
```

**Node.js**

```js
const result = await cotlet.call('thought-industries', 'import_learners', {"learners":[{"first_name":"Priya","last_name":"Nair","email":"priya.nair@example.com"},{"first_name":"Tom","last_name":"Becker","email":"tom.becker@example.com"}],"content_ids":["8f2a1c34-5b6d-4e7f-9a01-2b3c4d5e6f70"],"send_invite":true,"invite_message":"Welcome to Northwind Academy. Start with Onboarding 101."});
```

**CLI**

```bash
cotlet call thought-industries import_learners --data '{"learners":[{"first_name":"Priya","last_name":"Nair","email":"priya.nair@example.com"},{"first_name":"Tom","last_name":"Becker","email":"tom.becker@example.com"}],"content_ids":["8f2a1c34-5b6d-4e7f-9a01-2b3c4d5e6f70"],"send_invite":true,"invite_message":"Welcome to Northwind Academy. Start with Onboarding 101."}'
```

## Example response

```json
{
  "status": "queued",
  "learners": 2,
  "content": [
    "Onboarding 101"
  ],
  "invites": "sent"
}
```

Previous: [Enroll learner](https://cotlet.dev/docs/api/thought-industries/enroll_learner.md)
Next: [Set content status](https://cotlet.dev/docs/api/thought-industries/set_content_status.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.
