Courses
Training content employees complete. A course holds ordered chapters; each chapter owns an article carrying its title and content, and may also have a CMS-managed quiz — employees pass a chapter by completing its article and passing its quiz (when one exists). Flow: create the course (draft by default), add chapters, fill each chapter's article, publish.
Required scope: read:courses, write:courses.
Endpoints
/api/open/v1/coursesList courses (published by default, paginated)
/api/open/v1/courses/{id}Get a course incl. ordered chapter summaries
/api/open/v1/coursesCreate a course (draft by default)
/api/open/v1/courses/{id}Update a course; publish via is_published
/api/open/v1/courses/{id}Delete a course and its chapters (returns 204)
/api/open/v1/courses/{id}/chaptersList chapters (position order, paginated)
/api/open/v1/courses/{id}/chaptersCreate a chapter — its article is created automatically
/api/open/v1/course-chapters/{id}Get a single chapter
/api/open/v1/course-chapters/{id}Update title/subtitle, position, is_published
/api/open/v1/course-chapters/{id}Delete a chapter (and its quiz)
Lists support ?status=published|draft|all (default published) and ?since=.
Create a course
curl -X POST https://customer.monotree.com/api/open/v1/courses \
-H "Authorization: Bearer mono_your_token_here" \
-H "Content-Type: application/json" \
-d '{ "title": "Food Safety", "subtitle": "Annual training", "groups": [1, 3] }'| Field | Type | Notes |
|---|---|---|
title | string | Required. |
subtitle | string | Optional. |
groups | int[] | Optional group targeting; omit for a global course. |
is_published | boolean | Optional, default false (draft). Publishing without a title returns 422. |
translations | object | Optional — the course's own title/subtitle in other locales: { "title": { "sv": "…" }, "subtitle": { "sv": "…" } }. Same semantics as article translations. |
PATCH /courses/{id} accepts the same fields — all optional. Chapter titles and content are translated through their articles; the translations field here covers only the course's own title and subtitle.
Add a chapter
Creating a chapter automatically creates its article — the response carries the article_id for the articles endpoints. Chapters are published by default (visibility is governed by the course); pass is_published: false for a draft. Chapter title/subtitle live on the article.
curl -X POST https://customer.monotree.com/api/open/v1/courses/9/chapters \
-H "Authorization: Bearer mono_your_token_here" \
-H "Content-Type: application/json" \
-d '{ "title": "Food Safety Basics", "subtitle": "Module one" }'Chapter response
{
"data": {
"id": 61,
"course_id": 9,
"article_id": 95,
"quiz_id": null,
"title": "Food Safety Basics",
"subtitle": "Module one",
"position": 0,
"is_published": true,
"published_at": "2026-07-01T09:00:00+00:00",
"created_at": "2026-07-01T09:00:00+00:00",
"updated_at": "2026-07-01T09:00:00+00:00"
}
}quiz_idis read-only — quizzes are created and managed in the CMS.- Deleting a course chapter also deletes its quiz; the article is left in place.
- Unpublishing a course also removes it from onboarding flows and journeys.
- Chapter
title/subtitlein responses are the default content locale — their translations are read and written through the chapter's article, see translations.