Upsert courses
curl --request POST \
--url https://api.kombo.dev/v1/lms/courses/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"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"
]
}
}
]
}
'import requests
url = "https://api.kombo.dev/v1/lms/courses/bulk"
payload = { "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"]
}
}
] }
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
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']
}
}
]
})
};
fetch('https://api.kombo.dev/v1/lms/courses/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kombo.dev/v1/lms/courses/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'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'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kombo.dev/v1/lms/courses/bulk"
payload := strings.NewReader("{\n \"items\": [\n {\n \"origin_id\": \"course-1\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Building LMS integrations with Kombo\",\n \"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.\",\n \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n \"duration\": 45,\n \"languages\": [\n \"en\",\n \"de-CH\"\n ]\n }\n },\n {\n \"origin_id\": \"course-2\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Introduction to TypeScript\",\n \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n \"course_url\": \"https://example.com\",\n \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n \"duration\": 60,\n \"languages\": [\n \"en-US\",\n \"pl-PL\"\n ]\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.kombo.dev/v1/lms/courses/bulk")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"origin_id\": \"course-1\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Building LMS integrations with Kombo\",\n \"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.\",\n \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n \"duration\": 45,\n \"languages\": [\n \"en\",\n \"de-CH\"\n ]\n }\n },\n {\n \"origin_id\": \"course-2\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Introduction to TypeScript\",\n \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n \"course_url\": \"https://example.com\",\n \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n \"duration\": 60,\n \"languages\": [\n \"en-US\",\n \"pl-PL\"\n ]\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/lms/courses/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"origin_id\": \"course-1\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Building LMS integrations with Kombo\",\n \"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.\",\n \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n \"duration\": 45,\n \"languages\": [\n \"en\",\n \"de-CH\"\n ]\n }\n },\n {\n \"origin_id\": \"course-2\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Introduction to TypeScript\",\n \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n \"course_url\": \"https://example.com\",\n \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n \"duration\": 60,\n \"languages\": [\n \"en-US\",\n \"pl-PL\"\n ]\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"data": {
"task_id": "<string>"
},
"warnings": [
{
"message": "<string>"
}
]
}Courses
Upsert courses
Create or update multiple courses in the LMS.
POST
/
lms
/
courses
/
bulk
Upsert courses
curl --request POST \
--url https://api.kombo.dev/v1/lms/courses/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"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"
]
}
}
]
}
'import requests
url = "https://api.kombo.dev/v1/lms/courses/bulk"
payload = { "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"]
}
}
] }
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
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']
}
}
]
})
};
fetch('https://api.kombo.dev/v1/lms/courses/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kombo.dev/v1/lms/courses/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'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'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kombo.dev/v1/lms/courses/bulk"
payload := strings.NewReader("{\n \"items\": [\n {\n \"origin_id\": \"course-1\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Building LMS integrations with Kombo\",\n \"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.\",\n \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n \"duration\": 45,\n \"languages\": [\n \"en\",\n \"de-CH\"\n ]\n }\n },\n {\n \"origin_id\": \"course-2\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Introduction to TypeScript\",\n \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n \"course_url\": \"https://example.com\",\n \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n \"duration\": 60,\n \"languages\": [\n \"en-US\",\n \"pl-PL\"\n ]\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.kombo.dev/v1/lms/courses/bulk")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"origin_id\": \"course-1\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Building LMS integrations with Kombo\",\n \"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.\",\n \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n \"duration\": 45,\n \"languages\": [\n \"en\",\n \"de-CH\"\n ]\n }\n },\n {\n \"origin_id\": \"course-2\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Introduction to TypeScript\",\n \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n \"course_url\": \"https://example.com\",\n \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n \"duration\": 60,\n \"languages\": [\n \"en-US\",\n \"pl-PL\"\n ]\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/lms/courses/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"origin_id\": \"course-1\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Building LMS integrations with Kombo\",\n \"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.\",\n \"course_url\": \"https://docs.kombo.dev/lms/introduction\",\n \"thumbnail_url\": \"https://kombo.dev/images/courses/lms-integrations-thumbnail.png\",\n \"duration\": 45,\n \"languages\": [\n \"en\",\n \"de-CH\"\n ]\n }\n },\n {\n \"origin_id\": \"course-2\",\n \"course\": {\n \"type\": \"EXTERNAL\",\n \"title\": \"Introduction to TypeScript\",\n \"description\": \"Learn one of the most popular programming languages of the recent years quickly and efficiently. Results guaranteed!\",\n \"course_url\": \"https://example.com\",\n \"thumbnail_url\": \"https://example.com/images/thumbnail.jpg\",\n \"duration\": 60,\n \"languages\": [\n \"en-US\",\n \"pl-PL\"\n ]\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"data": {
"task_id": "<string>"
},
"warnings": [
{
"message": "<string>"
}
]
}Supported integrations
Supported integrations
This feature is currently available for the following integrations:You’d like to see this feature for another integration? Please reach out!
We’re always happy to discuss extending our coverage.
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.This endpoint requires the permission Upsert courses to be enabled in your scope config.
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"
]
}
}
]
}
Authorizations
Headers
ID of the integration you want to interact with.
Body
application/json
POST /lms/courses/bulk Request body
Array of courses to create or update.
Show child attributes
Show child attributes
Response
POST /lms/courses/bulk Positive response
Was this page helpful?
⌘I