Courses
Create course
/ v1 / courses Creates an online course. A course is content only, without a price.
- Add modules with
POST /v1/courses/{course_id}/modulesand lessons withPOST /v1/courses/{course_id}/lessons. - To sell it, create a product with
typecourseand thiscourse_idwithPOST /v1/products.
Several products can sell the same course. To sell a course again, use its course_id. Do not create a copy.
The answer is the course, as in GET /v1/courses/{course_id}.
Authorization
-
Authorizationstring header requiredBearer tnt_…· A personal API key (tnt_...). Create it in the Tentary app on the page AI & API. Introduction
Body application/json
-
namestring requiredCourse name.
min length
1max length255 -
description_htmlstringIntroduction as HTML. Shows only with layout cards, above the modules.
max length
65535 -
cover_image_urlstring can be nullCourse banner: the image_url from finish_image, or a public image URL that Tentary copies.
max length
2048 -
layoutstringHow buyers see the course. classic (default): sidebar and content. fullscreen: edge to edge. fokus: reading without distraction. cards: a start screen with module cards.
Allowed values:
classicfullscreenfokuscards -
tracks_progressbooleanBuyers can mark lessons as done (default true). Needed for release type after_lesson.
Response
Fields of the answer with status 200. Errors always have the same format, see Errors.
-
idintegerThe ID.
-
namestringThe name.
-
description_htmlstringShows only with layout cards.
-
cover_image_urlstring can be nullCourse banner.
-
layoutstringHow buyers see the course: classic, fullscreen, fokus or cards.
Allowed values:
classicfullscreenfokuscards -
tracks_progressbooleantrue = buyers can mark lessons as done.
-
lessonsintegerLessons, drafts included.
-
participantsintegerBuyers and people with granted access, each e-mail address once.
-
drip_release_hourobjectLessons with release days or a date unlock at this hour, in this time zone (not UTC).
Show 2 fields Hide fields
-
hourinteger0 to 23.
-
time_zonestring can be nullThe seller's time zone, like Europe/Berlin.
-
-
productsarray of objectProducts that sell the course.
Show 3 fields Hide fields
-
idintegerThe ID.
-
namestringThe name.
-
statusstringThe status.
Allowed values:
livedraftarchived
-
-
itemsarray of objectModules and lessons in order.
Show 9 fields Hide fields
-
idintegerThe ID.
-
kindstringmodule or lesson.
Allowed values:
modulelesson -
titlestringThe title.
-
cover_image_urlstring can be left out can be nullModules only.
-
positionintegerPlace in its module or among the main items, 1 = first.
-
draftbooleanA draft module hides all items in it.
-
free_previewbooleantrue = everyone can open it as a free preview, also without a purchase.
-
releaseobject can be nullWhen buyers get the item. null = at once.
One of these variants:
type: days_after_purchase· 2 fields-
typestringThe rule type.
Allowed values:
days_after_purchase -
daysintegerDays after the purchase.
type: hours_after_purchase· 2 fields-
typestringThe rule type.
Allowed values:
hours_after_purchase -
hoursintegerHours after the purchase.
type: date· 2 fields-
typestringThe rule type.
Allowed values:
date -
datestring<date>Like 2026-01-31.
type: after_lesson· 4 fields-
typestringThe rule type.
Allowed values:
after_lesson -
lesson_idintegerThe lesson that the buyer must finish first.
-
lesson_titlestring can be nullThe title of that lesson.
-
enforcedbooleanfalse = the course does not track progress, so the rule has no effect.
-
-
itemsarray of objectThe items of a module, in order (modules and lessons). Empty for a lesson.
Show 9 fields Hide fields
-
-
admin_urlstring<uri>The page in the Tentary app.