---
title: "Create Custom Course"
method: POST
path: "/demo-custom-course"
tags: ["Demo Custom Course"]
---

# Create Custom Course

`POST /demo-custom-course`

Create a new custom course in ephemeral storage.
Instead of storing in DB, we store in DEMO_COURSE_SESSIONS.

## Query parameters

- `session_id` string, required — Ephemeral session ID

## Request body

- CustomCourseCreate
  - `title` string, required

## Response `200`

Successful Response

- RoutersDemoCustomCourseCustomCourseResponse
  - `id` string, required
  - `title` string, required
  - `content` RoutersDemoCustomCourseCustomCourseContent[], required
    - `content` string, required
    - `latex_content` string, required
    - `content_type` string, required
    - `order` integer, required
    - `created_at` string, date-time

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-02** `8d495ed916c6` — 1 info
  - the `created_at` response's property default value changed from `2026-08-31T13:54:29.197939` to `2026-09-02T15:38:52.533857` for the status `200`

[Change history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/demo-custom-course/post.md)

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) · [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/excellence-ai/excellence-learning/revisions/8d495ed916c6/schema)
