Course
Get Student Overview
Get a consolidated activity overview for a student (fan) under the authenticated creator.
lastLoginAt: when the student last logged in (null if never logged in since tracking began).totalEnrolledCourses: published courses the student has active access to.totalCompletedCourses: enrolled courses the student has completed.totalCourseCertificatesAvailable: course certificates available to the student.courseVideoWatchTimes: per-course video watch time (video-chapter courses only). Watch time is calculated as the sum of (chapterProgress% x chapterDuration) across all video chapters.
Authorization
bearer AuthorizationBearer <token>
In: header
Path Parameters
userId*string
Unique identifier of the student (fan) to build the overview for.
Header Parameters
x-whitelabel-host*string
Host name of the dashboard, ex: mydomain.tagmango.com
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api-prod-new.tagmango.com/api/v1/external/courses/66c4964c11e7fef26751f3a7/overview" \ -H "x-whitelabel-host: string"{
"lastLoginAt": "2026-07-07T12:00:00.000Z",
"totalEnrolledCourses": 12,
"totalCompletedCourses": 4,
"totalCourseCertificatesAvailable": 3,
"courseVideoWatchTimes": [
{
"courseId": "66c4964c11e7fef26751f3a7",
"courseTitle": "Mastering TypeScript",
"totalVideoWatchTimeInSeconds": 5400
}
]
}{
"code": 400,
"type": "Bad Request",
"statusMessage": "BAD_REQUEST",
"success": false,
"message": "Invalid request",
"result": "Invalid request"
}{
"code": 401,
"type": "Unauthorized",
"statusMessage": "UNAUTHORIZED",
"message": "Invalid token",
"result": "Invalid token",
"success": false
}{
"code": 403,
"type": "Forbidden",
"statusMessage": "FORBIDDEN",
"errorCode": "WORKSHOP_MANGO_FORBIDDEN",
"message": "You can not access this api with a TagMango account, only available for whitelabel hosts",
"result": "You can not access this api with a TagMango account, only available for whitelabel hosts",
"success": false
}{
"code": 429,
"type": "Too Many Requests",
"statusMessage": "TOO_MANY_REQUESTS",
"message": "Request limit exceeded. try after 10 seconds",
"result": "Request limit exceeded. try after 10 seconds",
"success": false
}