v3

OpenAPI 3.1.02026-07-311255771.3 MB
Unified 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

status'success' required