Complete a mission or AI Roleplay
Marks a mission or AI Roleplay module as complete for a specific learner.
Prerequisites
- Authentication and setup: A valid access token.
- Invite users to a module: The learner must be invited to the mission or AI Roleplay.
- Assign reviewers to users: An active reviewer is required. This assignment API supports human reviewers for missions and coaching sessions only. AI or Copilot reviewers cannot be assigned through a public API.
Endpoint
Section titled “Endpoint”POST /api/v1/cag/COMPANY_ID/series/SERIES_ID/entity/ENTITY_ID/learner/LEARNER_ID/_completeReplace COMPANY_ID, SERIES_ID, ENTITY_ID, and LEARNER_ID with the values in the path parameters table.
Base URL: the API3 host for your region, not the standard API base URL. See Base URLs.
Headers: Authorization: Bearer ACCESS_TOKEN, Content-Type: application/json.
Path parameters
Section titled “Path parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
COMPANY_ID |
string | Required | The company ID (CNAME) for your Mindtickle instance. |
SERIES_ID |
string | Required | Mindtickle series ID. |
ENTITY_ID |
string | Required | Mindtickle module ID for the module, either a mission or an AI Roleplay. |
LEARNER_ID |
string | Required | Mindtickle user ID for the learner. |
Request
Section titled “Request”The request body is optional. Sending an empty JSON object {} completes the module with the default score of 100.
| Parameter | Type | Required | Description |
|---|---|---|---|
score |
integer | Optional | The score to assign. Must be 0 or 100. Default: 100 (pass). |
Request example
Section titled “Request example”A JSON body specifying the score:
{ "score": 100}Response
Section titled “Response”The completion payload is returned under object.
| Field | Type | Description |
|---|---|---|
requestId |
string | Unique tracking identifier for the request. |
object |
object | The completion payload containing the module and learner details. |
object.entity_id |
string | The identifier of the module, either a mission or an AI Roleplay, that was completed. |
object.learner_id |
string | The identifier for the learner. |
object.series_id |
string | The series ID the module belongs to. |
object.score |
integer | The final score applied, 0 or 100. |
object.completed_at |
integer | Epoch timestamp, in seconds, when the completion occurred. |
Response example
Section titled “Response example”{ "requestId": "req_101", "stackTrace": null, "statusCode": 200, "statusMsg": null, "object": { "entity_id": "1234567890123456101", "learner_id": "123456789abcd102", "series_id": "1234567890123456103", "score": 100, "completed_at": 1778846250 }, "meta": {}}Errors
Section titled “Errors”The JSON statusCode is an application code, not necessarily the HTTP status. For HTTP 400 responses, application code 5 means the score must be 0 or 100; application code 33 means no active reviewer is associated with the assignment.
| Status | Error | Reason |
|---|---|---|
400 Bad Request |
Could not resolve a mission type for entityId=ID | The entity has no resolvable mission type. |
400 Bad Request |
Failed to resolve mission type: MESSAGE | The mission-type lookup failed for the provided entity ID. |
400 Bad Request |
score must be 0 or 100 | The provided score value is invalid. |
400 Bad Request |
No active reviewer associated for entityId=ID learnerId=ID | The learner does not have an assigned reviewer for this mission or AI Roleplay. |
400 Bad Request |
Could not resolve orgId for companyId=ID | The provided company identifier is invalid. |
400 Bad Request |
Reviewer sessionNo unresolved for reviewerId=ID | The system could not determine the session for the assigned reviewer. |
400 Bad Request |
Could not resolve NODE_TYPE node for entityId=ID | The evaluation activity node for the mission or AI Roleplay could not be resolved. |
500 Internal Server Error |
Unknown exception | A general server-side failure occurred. |
Error example, invalid score:
{ "requestId": "req_101", "stackTrace": null, "statusCode": 5, "statusMsg": "score must be 0 or 100"}Error example, no active reviewer:
{ "requestId": "req_101", "stackTrace": null, "statusCode": 33, "statusMsg": "No active reviewer associated for entityId=1234567890123456101 learnerId=123456789abcd102 \u2014 cannot complete mission"}- Completion flow: The API starts the learner session, initializes a draft, attaches media, submits the learner activity, and submits the reviewer evaluation for all active reviewers associated with the learner.
- Supported module types: The API completes missions and AI Roleplays. A single dispatcher endpoint resolves the module type from the entity ID and delegates to the matching completion flow, so you do not need to know the module type in advance.
- Mission, email and task evaluation: Learners submit a write-up, such as an email, or upload documents, media, and zipped files as a task. The review is done by the reviewers you appoint.
- Mission, screen capture: Learners record their narration or video over a screen-share demo. The review is done by the reviewers you appoint.
- Mission, voice-over slideshow: Learners record their narration over a slideshow. The review is done by the reviewers you appoint.
- Mission, video roleplay: Learners record their video directly through Mindtickle or upload a pre-recorded video. The review is done by the reviewers you appoint.
- AI Roleplay: Learners complete an AI Roleplay scenario. The review is done by the reviewers you appoint, including Mindtickle Copilot for AI-powered reviews.
- Email and task evaluation shortcut: For email and task evaluation missions specifically, you can also call
POST /api/v1/cag/COMPANY_ID/series/SERIES_ID/entity/ENTITY_ID/learner/LEARNER_ID/email/_complete, which completes the mission directly without the mission-type resolution step. - Silent completion: The API bypasses manual reviewer workflows by automatically starting and submitting reviewer evaluations for all active reviewers associated with the learner. The result is a silent completion: no pending review tasks are generated and no automated email notifications are triggered for either the learner or the reviewer.
- Draft and media: To keep data valid and prevent workflow failures, a draft is initialized and a static media placeholder is attached. The module then has the required artifact for status changes, and no external media upload is needed.
- Downstream effects: Recording the completion triggers series unlocking and certification eligibility immediately.
- Audit: Every completion processed through this API carries a
completion_origintag labeledexternal_completion_api, visible in analytics to distinguish these from organic submissions. - Learner view: The module transitions to a Completed status. The submission view displays a placeholder note,
Externally reported completion, instead of a standard media file. - Scoring: Only binary scoring,
0or100, is supported. Granular rubric-level grading is not available. - Reviewer assignments: An active reviewer must be assigned to the learner for the mission or AI Roleplay before you call this API.
- Progress states: The API is for final completion only. It does not support in-progress states.
- Media limits: While a static artifact is attached for data integrity, the API does not support uploading unique external videos or PDFs.
- Use case: The endpoint synchronizes data from external partner portals or third-party certification sites, so the platform remains the central system of record for all readiness data.