Skip to main content
POST
/
api
/
content
/
courses
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A Course is a structured learning module published to customers through the Members Portal. Courses are organised into sections (milestones) and lessons (individual content units). They can be used for internal training, community building, or self-learning offers. Courses belong to a Location and are assigned a Host (a customer or administrator) who is responsible for its content. You can control who can access a course using the Visibility field:
VisibilityMeaning
PublicVisible and accessible to everyone on the Members Portal
HiddenNot listed on the Members Portal but accessible via a direct link
PrivateOnly accessible to members who have been explicitly added
PaidRequires purchase via the linked TariffId pricing plan
Courses can optionally display a community discussion group (HasCommunityGroup), be featured on the portal home page (ShowInHomePage), and be grouped together under a GroupName for easier navigation.

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 Course-Create role.

Enums

ValueName
1Public
2Hidden
3Private
4Paid

Request Body

Required Fields

BusinessId
integer
required
ID of the Location this course belongs to.
HostId
integer
required
ID of the coworker or administrator who hosts this course.
Title
string
required
Course title displayed on the Members Portal.
DisplayOrder
integer
required
Position of the course in listing pages; lower numbers appear first.

Optional Fields

SummaryText
string
Short summary displayed under the course title on the Members Portal (up to ~400 characters).
FullDescription
string
Full course description shown in the ‘What’s this course about?’ section when customers open the course.
ShowOverview
boolean
Whether to display the overview section on the course page.
HasCommunityGroup
boolean
Whether the course has an associated community discussion group on the Members Portal.
OverviewText
string
Overview text displayed below the full description on the course page.
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.
NewLargeImageUrl
string
URL of a new banner/large image to upload (JPG/JPEG, PNG, or GIF, max 10 MB).
ClearLargeImageFile
boolean
Set to true to remove the existing banner/large image.
Active
boolean
Whether the course is active and available to customers.
GroupName
string
Optional group label used to cluster related courses together on the Members Portal.
ShowInHomePage
boolean
Whether the course is featured on the Members Portal home page.
Visibility
integer
Access control for the course: Public (1), Hidden from listing but accessible via link (2), Private/invite-only (3), or Paid via TariffId (4). See eCourseVisibility enum above.
TariffId
integer
ID of the pricing plan (tariff) required to access this course when Visibility is Paid.

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/content/courses" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "BusinessId": 0,
    "HostId": 0,
    "Title": "",
    "DisplayOrder": 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 course was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "Course 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
}