Complete modules for multiple users
Marks progress as complete for multiple users within a module of a series, with an optional backdated completion timestamp.
Prerequisites
- Authentication and setup: A valid access token.
- Invite users to a module: Every user must be invited to the module and belong to the series.
- Search users: Get the Mindtickle user ID for each user.
Endpoint
Section titled “Endpoint”POST /services/data/v4.0/mtobjects/Series/SID/Module/MODULE_ID/complete_progressReplace SID and MODULE_ID with the Mindtickle IDs of the series and the module.
Base URL: the standard REST host for your region. See Base URLs.
Headers: Authorization: Bearer ACCESS_TOKEN, Content-Type: application/json.
Path parameters
Section titled “Path parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
SID |
string | Required | Mindtickle ID for the series. |
MODULE_ID |
string | Required | Mindtickle ID for the module. |
Request
Section titled “Request”The body is an array of up to 50 objects with the following fields. Each object identifies 1 user and can include its own completion timestamp.
| Parameter | Type | Required | Description |
|---|---|---|---|
user_id |
string | Required | The Mindtickle ID of 1 user to mark as complete. Include up to 50 user objects in the request array. |
completed_on |
timestamp | Optional | Epoch timestamp indicating the date and time of completion. |
Request example
Section titled “Request example”A JSON array of user IDs and completion timestamps:
[ { "user_id": "123456789abcd101", "completed_on": 1747226601 }, { "user_id": "123456789abcd102", "completed_on": 1747226602 }]Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
requestId |
string | Unique ID for tracking the request. |
success |
boolean | Indicates a successful operation. |
completionStatus |
object | A key-value map containing the result for each user ID, each entry a success flag indicating whether the completion was marked successfully for that user. |
Response example
Section titled “Response example”{ "requestId": "req_101", "success": true, "completionStatus": { "user1": true, "user2": true }}Errors
Section titled “Errors”| Status | Error | Reason |
|---|---|---|
400 Bad Request |
Invalid User Id | The format or value of user ID is incorrect. |
400 Bad Request |
User not part of the module! | User is not eligible for the specified module. |
400 Bad Request |
User not part of the module for the series! | User is not linked to both module and series. |
400 Bad Request |
Completion date cannot be smaller than invitation date! | Logical validation failure. |
400 Bad Request |
Invalid request body | Malformed or missing request payload. |
400 Bad Request |
Request body must be an array of objects! | Input format is not as expected. |
400 Bad Request |
Invalid entry in the request! | One or more entries in the array are invalid. |
400 Bad Request |
Missing User Id | Required field is missing. |
400 Bad Request |
Invalid date in epoch timestamp! | Date format or logic is invalid. |
400 Bad Request |
Future completion time not allowed! | Completion timestamp must not be in the future. |
429 Too Many Requests |
Too Many Requests | Rate limit is exceeded, retry after the seconds given in the Retry-After header. |
429 Too Many Requests |
No valid users provided! | After validation, no user IDs were acceptable. Correct the user IDs before retrying; waiting alone will not resolve this validation error. |
404 Not Found |
Invalid Module ID! | Provided module ID does not exist. |
500 Internal Server Error |
Failed to complete progress for users | General server-side failure completing progress. |
500 Internal Server Error |
Unable to complete progress for users | Processing issue during update. |
500 Internal Server Error |
Unknown exception while completing progress!! | Catch-all for unhandled runtime exceptions. |
500 Internal Server Error |
Unable to check user invitation! | Unexpected failure when validating invitation. |
- Defaults: If
completed_onis omitted or left blank, the current date and time is used by default. - User IDs: Use the Search users API to get the Mindtickle user ID for a user.
- Backdated invitations: When migrating users or recording past progress, invite dates must align with completion dates. Completion APIs accept backdated completions as long as the learner’s invitation date is also backdated appropriately. See Backdated series invitations and Backdated module invitations.
- Supported module types: Course, quick update, and assessment.
- Limitations: The module must be published and must be part of the specified series, and all users must belong to the series.
- Limits: The bulk API is limited to 50 users per request.
- Scoring: This API marks users as 100% complete with a 100% score for the selected module. Partial or granular completion and scores cannot be recorded, and future-dated completions are not allowed.