Register Course Information
Upload information for multiple courses at once.
Request Body
- coursesArray of objectsrequired
- Course info array
- organizationString
- Organization identifier
- course_idStringrequired
- Course unique identifier
- course_typeString
- Course type (e.g., internet)
- course_titleStringrequired
- Course title
- course_descriptionString
- Course description
- course_categoriesArray of objects
- Category info array
- siteStringrequired
- Site name
- course_category_idStringrequired
- Category ID
- course_category_parent_idString
- Parent category ID
- depthNumberrequired
- Category depth (starts from 0)
- course_category_titleStringrequired
- Category name
- instructorsArray of objects
- Instructor info array
- instructorStringrequired
- Instructor name
- instructor_numberString
- Instructor number
- course_curriculumObjectrequired
- Curriculum. Can contain sections or clips, both optional. An empty object registers a course with no clips, composed at the course level only (course-only).
- sectionsArray of objects
- Array of sections. Use this to split a course into sections.
- section_idStringrequired
- Section unique identifier
- section_titleStringrequired
- Section title
- section_descriptionString
- Section description
- sectionsArray of objects
- Sub-sections (nestable)
- clipsArray of objects
- Clip array
- preprocessing_requiredBoolean
- Section preprocessing-required flag. Defaults to true. If false, usable immediately without preprocessing.
- clipsArray of objects
- Array of clips. Use this to place clips directly under the course without sections.
- clip_idStringrequired
- Clip unique identifier
- clip_titleStringrequired
- Clip title
- clip_descriptionString
- Clip description
- clip_play_timeNumber
- Play time (seconds). Defaults to 0 if omitted
- clip_levelNumber
- Difficulty (1: Easy, 2: Normal, 3: Hard)
- preprocessing_requiredBoolean
- Clip preprocessing-required flag. Defaults to true. If false, usable immediately without preprocessing.
- preprocessing_requiredBoolean
- Course-level preprocessing-required flag. Defaults to true (must complete preprocessing before it is usable in the AI tutor). If false, usable immediately without preprocessing.
- thumbnail_urlString
- Course thumbnail image URL. Must be http/https; empty string not allowed
- course_urlString
- Course detail page URL. Must be http/https; empty string not allowed
- priceNumber
- Course price. Must be 0 or greater
Response Fields
- success_coursesArray of stringsrequired
- Successfully uploaded course IDs
- failed_coursesArray of stringsrequired
- Failed course IDs
curl -X POST "https://tap-file-upload-production.coxwave.link/api/v1/courses/information" \
-H "Content-Type: application/json" \
-H "TAP-API-KEY: {YOUR_API_KEY}" \
-d '{
"courses": [
{
"organization": "Branch A",
"course_id": "1000",
"course_type": "internet",
"course_title": "Python Basics",
"course_description": "Basic Python programming course",
"preprocessing_required": false,
"thumbnail_url": "https://cdn.example.com/courses/1000/thumbnail.png",
"course_url": "https://example.com/courses/1000",
"price": 49000,
"instructors": [{ "instructor": "Cox", "instructor_number": "001" }],
"course_categories": [
{
"site": "coxwave",
"course_category_id": "1",
"course_category_parent_id": "",
"depth": 0,
"course_category_title": "Programming"
}
],
"course_curriculum": {
"sections": [
{
"section_id": "1000_1",
"section_title": "Part 1. Python Basics",
"section_description": "Learn basic Python syntax and data types",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_1_1",
"clip_title": "Variable Declaration",
"clip_description": "How to declare variables in Python",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_1_2",
"clip_title": "Data Types Introduction",
"clip_description": "Basic data types (int, str, list, dict)",
"clip_play_time": 450,
"preprocessing_required": true
}
]
},
{
"section_id": "1000_2",
"section_title": "Part 2. Control Statements",
"section_description": "Learn conditionals and loops",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_2_1",
"clip_title": "Conditionals",
"clip_description": "Using if, elif, else",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_2_2",
"clip_title": "Loops",
"clip_description": "Using for, while",
"clip_play_time": 450,
"preprocessing_required": true
}
]
}
]
}
}
]
}'import requests
res = requests.post(
"https://tap-file-upload-production.coxwave.link/api/v1/courses/information",
headers={"TAP-API-KEY": "{YOUR_API_KEY}"},
json={
"courses": [
{
"organization": "Branch A",
"course_id": "1000",
"course_type": "internet",
"course_title": "Python Basics",
"course_description": "Basic Python programming course",
"preprocessing_required": False,
"thumbnail_url": "https://cdn.example.com/courses/1000/thumbnail.png",
"course_url": "https://example.com/courses/1000",
"price": 49000,
"instructors": [
{
"instructor": "Cox",
"instructor_number": "001"
}
],
"course_categories": [
{
"site": "coxwave",
"course_category_id": "1",
"course_category_parent_id": "",
"depth": 0,
"course_category_title": "Programming"
}
],
"course_curriculum": {
"sections": [
{
"section_id": "1000_1",
"section_title": "Part 1. Python Basics",
"section_description": "Learn basic Python syntax and data types",
"preprocessing_required": False,
"clips": [
{
"clip_id": "1000_1_1",
"clip_title": "Variable Declaration",
"clip_description": "How to declare variables in Python",
"clip_play_time": 450,
"preprocessing_required": True
},
{
"clip_id": "1000_1_2",
"clip_title": "Data Types Introduction",
"clip_description": "Basic data types (int, str, list, dict)",
"clip_play_time": 450,
"preprocessing_required": True
}
]
},
{
"section_id": "1000_2",
"section_title": "Part 2. Control Statements",
"section_description": "Learn conditionals and loops",
"preprocessing_required": False,
"clips": [
{
"clip_id": "1000_2_1",
"clip_title": "Conditionals",
"clip_description": "Using if, elif, else",
"clip_play_time": 450,
"preprocessing_required": True
},
{
"clip_id": "1000_2_2",
"clip_title": "Loops",
"clip_description": "Using for, while",
"clip_play_time": 450,
"preprocessing_required": True
}
]
}
]
}
}
]
},
)
print(res.json())package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
body := []byte(`{
"courses": [
{
"organization": "Branch A",
"course_id": "1000",
"course_type": "internet",
"course_title": "Python Basics",
"course_description": "Basic Python programming course",
"preprocessing_required": false,
"thumbnail_url": "https://cdn.example.com/courses/1000/thumbnail.png",
"course_url": "https://example.com/courses/1000",
"price": 49000,
"instructors": [
{
"instructor": "Cox",
"instructor_number": "001"
}
],
"course_categories": [
{
"site": "coxwave",
"course_category_id": "1",
"course_category_parent_id": "",
"depth": 0,
"course_category_title": "Programming"
}
],
"course_curriculum": {
"sections": [
{
"section_id": "1000_1",
"section_title": "Part 1. Python Basics",
"section_description": "Learn basic Python syntax and data types",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_1_1",
"clip_title": "Variable Declaration",
"clip_description": "How to declare variables in Python",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_1_2",
"clip_title": "Data Types Introduction",
"clip_description": "Basic data types (int, str, list, dict)",
"clip_play_time": 450,
"preprocessing_required": true
}
]
},
{
"section_id": "1000_2",
"section_title": "Part 2. Control Statements",
"section_description": "Learn conditionals and loops",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_2_1",
"clip_title": "Conditionals",
"clip_description": "Using if, elif, else",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_2_2",
"clip_title": "Loops",
"clip_description": "Using for, while",
"clip_play_time": 450,
"preprocessing_required": true
}
]
}
]
}
}
]
}`)
req, _ := http.NewRequest("POST", "https://tap-file-upload-production.coxwave.link/api/v1/courses/information", bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("TAP-API-KEY", "{YOUR_API_KEY}")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
b, _ := io.ReadAll(res.Body)
fmt.Println(string(b))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = """
{
"courses": [
{
"organization": "Branch A",
"course_id": "1000",
"course_type": "internet",
"course_title": "Python Basics",
"course_description": "Basic Python programming course",
"preprocessing_required": false,
"thumbnail_url": "https://cdn.example.com/courses/1000/thumbnail.png",
"course_url": "https://example.com/courses/1000",
"price": 49000,
"instructors": [
{
"instructor": "Cox",
"instructor_number": "001"
}
],
"course_categories": [
{
"site": "coxwave",
"course_category_id": "1",
"course_category_parent_id": "",
"depth": 0,
"course_category_title": "Programming"
}
],
"course_curriculum": {
"sections": [
{
"section_id": "1000_1",
"section_title": "Part 1. Python Basics",
"section_description": "Learn basic Python syntax and data types",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_1_1",
"clip_title": "Variable Declaration",
"clip_description": "How to declare variables in Python",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_1_2",
"clip_title": "Data Types Introduction",
"clip_description": "Basic data types (int, str, list, dict)",
"clip_play_time": 450,
"preprocessing_required": true
}
]
},
{
"section_id": "1000_2",
"section_title": "Part 2. Control Statements",
"section_description": "Learn conditionals and loops",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_2_1",
"clip_title": "Conditionals",
"clip_description": "Using if, elif, else",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_2_2",
"clip_title": "Loops",
"clip_description": "Using for, while",
"clip_play_time": 450,
"preprocessing_required": true
}
]
}
]
}
}
]
}
""";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://tap-file-upload-production.coxwave.link/api/v1/courses/information"))
.header("Content-Type", "application/json")
.header("TAP-API-KEY", "{YOUR_API_KEY}")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
}
}const res = await fetch("https://tap-file-upload-production.coxwave.link/api/v1/courses/information", {
method: "POST",
headers: {"Content-Type": "application/json", "TAP-API-KEY": "{YOUR_API_KEY}"},
body: JSON.stringify({
"courses": [
{
"organization": "Branch A",
"course_id": "1000",
"course_type": "internet",
"course_title": "Python Basics",
"course_description": "Basic Python programming course",
"preprocessing_required": false,
"thumbnail_url": "https://cdn.example.com/courses/1000/thumbnail.png",
"course_url": "https://example.com/courses/1000",
"price": 49000,
"instructors": [
{
"instructor": "Cox",
"instructor_number": "001"
}
],
"course_categories": [
{
"site": "coxwave",
"course_category_id": "1",
"course_category_parent_id": "",
"depth": 0,
"course_category_title": "Programming"
}
],
"course_curriculum": {
"sections": [
{
"section_id": "1000_1",
"section_title": "Part 1. Python Basics",
"section_description": "Learn basic Python syntax and data types",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_1_1",
"clip_title": "Variable Declaration",
"clip_description": "How to declare variables in Python",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_1_2",
"clip_title": "Data Types Introduction",
"clip_description": "Basic data types (int, str, list, dict)",
"clip_play_time": 450,
"preprocessing_required": true
}
]
},
{
"section_id": "1000_2",
"section_title": "Part 2. Control Statements",
"section_description": "Learn conditionals and loops",
"preprocessing_required": false,
"clips": [
{
"clip_id": "1000_2_1",
"clip_title": "Conditionals",
"clip_description": "Using if, elif, else",
"clip_play_time": 450,
"preprocessing_required": true
},
{
"clip_id": "1000_2_2",
"clip_title": "Loops",
"clip_description": "Using for, while",
"clip_play_time": 450,
"preprocessing_required": true
}
]
}
]
}
}
]
}),
});
console.log(await res.json());Response
{
"success_courses": ["1000"],
"failed_courses": []
}