Courses
Update lesson
/ v1 / lessons / {lesson_id} Changes the fields that you send.
contentreplaces all blocks. CallGET /v1/lessons/{lesson_id}first and send back the blocks that should stay, with theirfile_id.module_idandpositionmove the lesson.
The fields have the same names and formats as in GET /v1/lessons/{lesson_id}. To delete a lesson, use POST /v1/delete.
Authorization
-
Authorizationstring header requiredBearer tnt_…· A personal API key (tnt_...). Create it in the Tentary app on the page AI & API. Introduction
Path parameters
-
lesson_idinteger requiredThe id from get_course_outline.
min
1Example:309
Body application/json
-
module_idintegerMove the lesson into this module of the same course.
min
1 -
titlestringTitle that buyers see.
min length
1max length255 -
positionintegerPlace among the items of the same module: 1 = first. Default: last.
min
1 -
draftbooleantrue = buyers do not see it. New items are drafts unless draft is false. draft true removes the release rule.
-
releaseobject can be nullWhen buyers get the item. null = at once (also left out on create; left out on update = no change). One rule: days or hours after purchase, a date, or after another lesson is done (only if the course tracks progress). Days and dates unlock at drip_release_hour of get_course_outline. Needs draft false. The answers add lesson_title and enforced to after_lesson (read only; enforced false = the course does not track progress, so the rule has no effect).
Show 5 fields Hide fields
-
typestring requiredAllowed values:
days_after_purchasehours_after_purchasedateafter_lesson -
daysintegermin
1max9999 -
hoursintegermin
1max9999 -
datestringLike 2026-12-01.
pattern
^[0-9]{4}-[0-9]{2}-[0-9]{2}$ -
lesson_idintegerafter_lesson: a lesson of the same course.
min
1
-
-
free_previewbooleanEveryone can watch this lesson as a free preview, also without purchase.
-
contentarray of objectWhat buyers see in the lesson, in order: the content blocks of products, without folders. Images, videos, audio and files come from upload_file. Replaces all content.
max items
100Show 8 fields Hide fields
-
typestring requiredtext: formatted text. image: shows the image. video: an uploaded video in the player (streamed, converted some minutes after its first use). audio: an audio player. file: a download. video_embed: a YouTube, Vimeo or Loom video. button: a link button. image, video, audio and file need file_id. Type, name and description are stored with the file: one file shows the same way in every product and lesson.
Allowed values:
textimagevideoaudiofilevideo_embedbutton -
htmlstringtext: the text as HTML (p, h1-h4, strong, em, ul, ol, li, a, img, blockquote). Placeholders for the buyer: %FIRST_NAME%, %FULL_NAME%, %EMAIL%, %PRODUCT_TITLE%, %VARIANT_TITLE%, %ORDER_ID%, %ACCESS_LINK[Text]%, %ACCESS_LINK_BUTTON[Text]%, %SELLER_NAME%, %SELLER_SUPPORT_EMAIL%; bookings also %ORDER_BOOKING_FROM%, %ORDER_BOOKING_TO%, %ORDER_BOOKING_ZOOM_LINK%.
max length
65535 -
urlstringvideo_embed: YouTube, Vimeo or Loom link. button: the link target.
max length
2048 -
labelstringbutton: the button text.
max length
250 -
file_idintegerimage, video, audio, file: a file from upload_file, or a file_id from get_product or get_lesson content.
min
1 -
namestringimage, video, audio, file: the name of the file (file: shown above the download).
min length
1max length250 -
descriptionstringfile: plain text under the download. audio: the title above the player.
max length
65535 -
folderstring can be nullOptional folder name. Blocks with the same folder show together. Not in lessons.
max length
250
-
Response
Fields of the answer with status 200. Errors always have the same format, see Errors.
-
idintegerThe ID.
-
course_idintegerThe course of the lesson.
-
course_namestringThe course name.
-
module_idinteger can be nullThe module of the lesson.
-
titlestringThe title.
-
positionintegerPlace in its module, 1 = first.
-
draftbooleantrue = buyers do not see it.
-
free_previewbooleantrue = everyone can watch it as a free preview.
-
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.
-
-
contentarray of objectContent blocks, in order.
One of these variants:
type: text· 2 fieldsFormatted text.
-
typestringThe block type.
Allowed values:
text -
htmlstringThe text as HTML.
type: image, video· 5 fieldsAn uploaded image or video.
-
typestringThe block type.
Allowed values:
imagevideo -
file_idintegerThe file ID (from upload_file).
-
namestringThe name.
-
file_typestringFile extension, like pdf.
-
size_bytesinteger can be nullFile size in bytes.
type: audio, file· 6 fieldsAn audio player or a download.
-
typestringThe block type.
Allowed values:
audiofile -
file_idintegerThe file ID (from upload_file).
-
namestringThe name.
-
descriptionstringfile: text under the download. audio: title above the player.
-
file_typestringFile extension, like pdf.
-
size_bytesinteger can be nullFile size in bytes.
type: video_embed· 2 fields-
typestringThe block type.
Allowed values:
video_embed -
urlstringYouTube, Vimeo or Loom link.
type: button· 3 fieldsA link button.
-
typestringThe block type.
Allowed values:
button -
labelstringThe text that buyers see.
-
urlstringThe link.
-
-
admin_urlstring<uri>The page in the Tentary app.