v3
OpenAPI 3.1.02026-07-311255771.3 MBUnified LMS API
Upsert courses
Create or update multiple courses in the LMS.
<Info> **Note:** This endpoint is asynchronous – it returns a `task_id` immediately and processes the request in the background. Use the corresponding `GET` endpoint to poll for the task status until it reaches `COMPLETED` or `FAILED`. Learn more in our [async endpoints guide](/lms/guides/async-endpoints). </Info> <Note> This endpoint requires the permission **Upsert courses** to be enabled in [your scope config](/scopes). </Note>Example Request Body
{
"items": [
{
"origin_id": "course-1",
"course": {
"type": "EXTERNAL",
"title": "Building LMS integrations with Kombo",
"description": "Learn how to build and integrate Learning Management System (LMS) integrations with Kombo. This course covers the unified LMS API, course management, user enrollment, progress tracking, and best practices for building robust LMS connectors.",
"course_url": "https://docs.kombo.dev/lms/introduction",
"thumbnail_url": "https://kombo.dev/images/courses/lms-integrations-thumbnail.png",
"duration": 45,
"languages": [
"en",
"de-CH"
]
}
},
{
"origin_id": "course-2",
"course": {
"type": "EXTERNAL",
"title": "Introduction to TypeScript",
"description": "Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!",
"course_url": "https://example.com",
"thumbnail_url": "https://example.com/images/thumbnail.jpg",
"duration": 60,
"languages": [
"en-US",
"pl-PL"
]
}
}
]
}
post/lms/courses/bulk
Headers
X-Integration-Idstring required
ID of the integration you want to interact with.
Request body
Response
POST /lms/courses/bulk Positive response