> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one Course

> Retrieve a single Course record by its Id.

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:

| Visibility | Meaning                                                           |
| ---------- | ----------------------------------------------------------------- |
| Public     | Visible and accessible to everyone on the Members Portal          |
| Hidden     | Not listed on the Members Portal but accessible via a direct link |
| Private    | Only accessible to members who have been explicitly added         |
| Paid       | Requires 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

<Note>
  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-Read`** role.
</Note>

## Path Parameters

<ParamField path="id" type="integer" required>
  The Id of the Course record to retrieve.
</ParamField>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/content/courses/87654321" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/content/courses/87654321',
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const record = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/content/courses/87654321',
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  record = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="BusinessId" type="integer">
  ID of the Location this course belongs to.
</ResponseField>

<ResponseField name="BusinessName" type="string">
  Location name.
</ResponseField>

<ResponseField name="BusinessAddress" type="string">
  Location address.
</ResponseField>

<ResponseField name="BusinessTownCity" type="string">
  Location town or city.
</ResponseField>

<ResponseField name="BusinessPostalCode" type="string">
  Location postal code.
</ResponseField>

<ResponseField name="HostId" type="integer">
  ID of the coworker or administrator who hosts this course.
</ResponseField>

<ResponseField name="HostFullName" type="string">
  Host full name.
</ResponseField>

<ResponseField name="HostCompanyName" type="string">
  Host company name.
</ResponseField>

<ResponseField name="HostTeamNames" type="string">
  Comma-separated list of teams the host belongs to.
</ResponseField>

<ResponseField name="Title" type="string">
  Course title displayed on the Members Portal.
</ResponseField>

<ResponseField name="SummaryText" type="string">
  Short summary displayed under the course title on the Members Portal (up to \~400 characters).
</ResponseField>

<ResponseField name="FullDescription" type="string">
  Full course description shown in the 'What's this course about?' section when customers open the course.
</ResponseField>

<ResponseField name="ShowOverview" type="boolean">
  Whether to display the overview section on the course page.
</ResponseField>

<ResponseField name="HasCommunityGroup" type="boolean">
  Whether the course has an associated community discussion group on the Members Portal.
</ResponseField>

<ResponseField name="OverviewText" type="string">
  Overview text displayed below the full description on the course page.
</ResponseField>

<ResponseField name="ImageFileName" type="string">
  Stored filename of the course thumbnail image (read-only; use `NewImageUrl` to set).
</ResponseField>

<ResponseField name="NewImageUrl" type="string">
  URL of a new thumbnail image to upload (JPG/JPEG, PNG, or GIF, max 10 MB).
</ResponseField>

<ResponseField name="ClearImageFile" type="boolean">
  Set to true to remove the existing thumbnail image.
</ResponseField>

<ResponseField name="LargeImageFileName" type="string">
  Stored filename of the course banner/large image (read-only; use `NewLargeImageUrl` to set).
</ResponseField>

<ResponseField name="NewLargeImageUrl" type="string">
  URL of a new banner/large image to upload (JPG/JPEG, PNG, or GIF, max 10 MB).
</ResponseField>

<ResponseField name="ClearLargeImageFile" type="boolean">
  Set to true to remove the existing banner/large image.
</ResponseField>

<ResponseField name="Active" type="boolean">
  Whether the course is active and available to customers.
</ResponseField>

<ResponseField name="GroupName" type="string">
  Optional group label used to cluster related courses together on the Members Portal.
</ResponseField>

<ResponseField name="DisplayOrder" type="integer">
  Position of the course in listing pages; lower numbers appear first.
</ResponseField>

<ResponseField name="ShowInHomePage" type="boolean">
  Whether the course is featured on the Members Portal home page.
</ResponseField>

<ResponseField name="Visibility" type="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 values: `1` = Public, `2` = Hidden, `3` = Private, `4` = Paid.
</ResponseField>

<ResponseField name="TariffId" type="integer">
  ID of the pricing plan (tariff) required to access this course when Visibility is Paid.
</ResponseField>

<ResponseField name="TariffName" type="string">
  Pricing plan name.
</ResponseField>

<ResponseField name="TariffInvoiceEvery" type="integer">
  Billing frequency of the pricing plan (in months).
</ResponseField>

<ResponseField name="TariffInvoiceEveryWeeks" type="integer">
  Billing frequency of the pricing plan (in weeks).
</ResponseField>

<ResponseField name="TariffPrice" type="number">
  Price of the pricing plan.
</ResponseField>

<ResponseField name="TariffCurrencyCode" type="string">
  Currency code of the pricing plan (e.g. USD, GBP).
</ResponseField>

<ResponseField name="Id" type="integer">
  Unique record identifier.
</ResponseField>

<ResponseField name="UniqueId" type="string">
  UUID of the record.
</ResponseField>

<ResponseField name="CreatedOn" type="string">
  Date and time the record was created (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedOn" type="string">
  Date and time the record was last updated (ISO 8601).
</ResponseField>

<ResponseField name="UpdatedBy" type="string">
  Email of the user who last updated this record.
</ResponseField>

<ResponseField name="IsNew" type="boolean">
  Whether the record was recently created.
</ResponseField>

<ResponseField name="SystemId" type="string">
  External system identifier.
</ResponseField>

```json Example Response theme={null}
{
  "BusinessId": 0,
  "BusinessName": null,
  "BusinessAddress": null,
  "BusinessTownCity": null,
  "BusinessPostalCode": null,
  "HostId": 0,
  "HostFullName": null,
  "HostCompanyName": null,
  "HostTeamNames": null,
  "Title": "",
  "SummaryText": null,
  "FullDescription": null,
  "ShowOverview": false,
  "HasCommunityGroup": false,
  "OverviewText": null,
  "ImageFileName": null,
  "NewImageUrl": null,
  "ClearImageFile": null,
  "LargeImageFileName": null,
  "NewLargeImageUrl": null,
  "ClearLargeImageFile": null,
  "Active": false,
  "GroupName": null,
  "DisplayOrder": 0,
  "ShowInHomePage": false,
  "Visibility": 0,
  "TariffId": null,
  "TariffName": null,
  "TariffInvoiceEvery": null,
  "TariffInvoiceEveryWeeks": null,
  "TariffPrice": null,
  "TariffCurrencyCode": null,
  "Id": 87654321,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "CreatedOn": "2025-01-10T08:00:00Z",
  "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "UpdatedBy": "admin@example.com",
  "IsNew": false,
  "SystemId": null,
  "ToStringText": "Course Example",
  "LocalizationDetails": null,
  "CustomFields": null
}
```
