Skip to main content
All course endpoints require customer authentication. Customers can only access courses they have purchased.

GET /courses

List the authenticated customer’s enrolled courses.

Authentication

Requires Bearer token (auth:customer_api).

Headers

Query Parameters

Example Request

Response

Success (200)


GET /courses/

Get details of a specific course enrollment, including module listing.

Authentication

Requires Bearer token (auth:customer_api).

Path Parameters

Example Request

Response

Success (200)

Error Responses


GET /courses//progress

Get detailed progress for a course enrollment, including per-module completion status and estimated remaining time.

Authentication

Requires Bearer token (auth:customer_api).

Path Parameters

Example Request

Response

Success (200)

The estimated_remaining_time is in minutes and is calculated from the duration_minutes of incomplete modules.

Error Responses


GET /courses//modules/

Get the full content of a specific course module.

Authentication

Requires Bearer token (auth:customer_api).

Path Parameters

Example Request

Response

Success (200)

Error Responses

If the course has sequential_modules enabled in its settings, you must complete all previous modules before accessing later ones. Attempting to skip ahead will return a 403 error.

POST /courses//modules//complete

Mark a course module as completed and update progress.

Authentication

Requires Bearer token (auth:customer_api).

Path Parameters

Example Request

Response

Success (200)

When the last module is completed:
Marking a module as complete is idempotent. Completing an already-completed module will not change the progress or return an error.

Error Responses


Legacy Course Endpoints

The following endpoints are maintained for backward compatibility. They use the customer/courses prefix and are handled by the OrderController.

GET /customer/courses

List the customer’s course enrollments. Same functionality as GET /courses.

GET /customer/courses/

Get a specific course enrollment. Same functionality as GET /courses/{id}.

GET /customer/courses//modules/

Get a course module with pagination-style navigation (previous/next module links). Returns the module content alongside a navigation object.

Response

POST /customer/courses//modules//complete

Mark a course module as completed. Same functionality as POST /courses/{courseId}/modules/{moduleId}/complete.
New integrations should use the /courses/* endpoints instead of /customer/courses/*. The legacy endpoints remain available for backward compatibility.