Skip to main content
POST
/
api
/
content
/
courselessons
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A CourseLesson is an individual learning unit within a Course. Lessons are the building blocks that customers complete to work through a course’s content. Each lesson belongs to a Course and optionally to a CourseSection that groups related lessons together. Lessons have two key behavioural settings: UnlockType — controls when a lesson becomes available to enrolled members:
ValueMeaning
ImmediateAvailable as soon as the member enrols
SequentialUnlocked only after the previous lesson is completed
TimedUnlocked after a number of days specified by UnlockAfterDays
CompletionType — defines what action marks the lesson as done:
ValueMeaning
NoneNo completion tracking
VisitedMarked complete when the member opens the lesson
ButtonMember must click a completion button
VideoMember must finish watching the embedded video (must be hosted on YouTube)

Authentication

This endpoint requires OAuth2 authentication. Include a valid bearer token in the Authorization header. The authenticated user must be a full unrestricted administrator or have the CourseLesson-Create role.

Enums

ValueName
1Immediate
2Sequential
3Timed
ValueName
1None
2Visited
3Button
4Video

Request Body

Required Fields

CourseId
integer
required
ID of the course this lesson belongs to.
Title
string
required
Lesson title displayed to members.
DisplayOrder
integer
required
Position of the lesson within its section (or the course if unsectioned); lower numbers appear first.
UnlockAfterDays
integer
required
Number of days after enrolment before the lesson unlocks; only used when UnlockType is Timed (3).

Optional Fields

SectionId
integer
ID of the course section this lesson belongs to (optional; lessons without a section appear ungrouped).
InstructorId
integer
ID of the coworker attributed as instructor for this lesson (optional; overrides the course-level host for this lesson).
SummaryText
string
Short summary shown in the lesson listing.
LessonContents
string
Full HTML or rich-text body of the lesson displayed to members when they open it.
Active
boolean
Whether the lesson is active and visible to enrolled members.
UnlockType
integer
When the lesson becomes available: Immediate (1), after the previous lesson is done — Sequential (2), or after a set number of days — Timed (3). See eLessonUnlockType enum above.
NewImageUrl
string
URL of a new thumbnail image to upload (JPG/JPEG, PNG, or GIF, max 10 MB).
ClearImageFile
boolean
Set to true to remove the existing thumbnail image.
CompletionType
integer
How completion is tracked: None (1), Visited (2), completion Button (3), or Video watched (4). Video completion requires the lesson to embed a YouTube-hosted video.. See eLessonCompletionType enum above.

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/content/courselessons" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "CourseId": 0,
    "Title": "",
    "DisplayOrder": 0,
    "UnlockAfterDays": 0
}'

Response

200

Status
integer
HTTP status code. 200 on success.
Message
string
A human-readable message confirming the creation.
Value
object
Contains the Id of the newly created record.
WasSuccessful
boolean
true if the courselesson was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "CourseLesson was successfully created.",
  "Value": {
    "Id": 87654321
  },
  "OpenInDialog": false,
  "OpenInWindow": false,
  "RedirectURL": null,
  "JavaScript": null,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "UpdatedBy": "admin@example.com",
  "Errors": null,
  "WasSuccessful": true
}

400

Message
string
A summary of the validation error(s), in the format PropertyName: error message.
Value
any
null on validation failure.
Errors
object[]
Array of validation errors.
WasSuccessful
boolean
false when the request fails validation.
Example Response
{
  "Message": "Title: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "Title"
    }
  ],
  "WasSuccessful": false
}