Get user progress across course content blocks
Returns aggregate user progress across content blocks in a course layer. Scoped to your integration’s institution via Basic Auth credentials.
GET
/users/{id}/progressPath parameters
idstringrequiredUser ID
Query parameters
layerIdstringrequiredLayer ID of the course (same value as course.layerId on the course entity).
Responses
200User progress data
dataUserProgressResponserequiredShow propertiesHide properties
userIdstringrequiredlayerIdstringrequiredsummaryUserProgressSummaryrequiredShow propertiesHide properties
totalBlocksintegerrequiredcompletedintegerrequiredinProgressintegerrequirednotStartedintegerrequiredcompletionPercentageintegerrequiredmin 0 · max 100
blocksBlockProgress[]requiredShow propertiesHide properties
Array of
BlockProgressblockIdstringrequiredblockNamestringrequiredblockTypestringrequiredstatusstringrequiredAllowed:
NOT_STARTEDIN_PROGRESSFINISHEDREVIEWEDlockStatestringrequiredAllowed:
UNLOCKEDBLOCKEDstartedAtstring<date-time> | nullrequiredcompletedAtstring<date-time> | nullrequireduserDataobjectblockedReasonstringmetaResponseMetarequiredShow propertiesHide properties
requestIdstringrequiredtimestampstring<date-time>requiredversionstringrequiredAllowed:
v4401Unauthorized
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring403Forbidden
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring404Not Found
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring429Too Many Requests
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestring500Internal Server Error
typestringrequiredAllowed:
errorcodestringrequiredAllowed:
bad_requestunauthorizedforbiddenresource_not_foundconflictvalidation_failedidempotency_key_reusedrate_limit_exceededinternal_errortitlestringrequiredstatusintegerrequireddetailstringrequiredinstancestringerrorsobject[]Show propertiesHide properties
Array of
objectfieldstringmessagestringRequest
curl -X GET "https://fuxam.app/api/v4/users/string/progress?layerId=string"const response = await fetch("https://fuxam.app/api/v4/users/string/progress?layerId=string", {
method: "GET"
});import requests
response = requests.get(
"https://fuxam.app/api/v4/users/string/progress?layerId=string",
)Response
{
"data": {
"userId": "string",
"layerId": "string",
"summary": {
"totalBlocks": 0,
"completed": 0,
"inProgress": 0,
"notStarted": 0,
"completionPercentage": 0
},
"blocks": [
{
"blockId": "string",
"blockName": "string",
"blockType": "string",
"status": "NOT_STARTED",
"lockState": "UNLOCKED",
"startedAt": "2024-01-01T00:00:00Z",
"completedAt": "2024-01-01T00:00:00Z",
"userData": {},
"blockedReason": "string"
}
]
},
"meta": {
"requestId": "req_1234567890_abc",
"timestamp": "2026-06-02T07:00:00.000Z",
"version": "v4"
}
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}{
"type": "error",
"code": "resource_not_found",
"title": "Not Found",
"status": 404,
"detail": "Course not found",
"instance": "req_1234567890_abc",
"errors": [
{
"field": "string",
"message": "string"
}
]
}