Set content status
Mark a learner as not-started, started, completed or not-completed on content.
PUT https://cotlet.dev/api/v1/thought-industries/contents/{content_id}/status
Updates an existing learner through the bulk import with a status column, using the name already on the profile. status is not-started, started, completed or not-completed. completion_date records a date for the content, and the app accepts it only when no completion date exists for that learner and content. The change shows in the Content Actions Log as a status change. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| learner string required | string | Learner email or learner_id from list_learners. |
| content_id string required | string | Course or other content ID from list_courses. |
| status enum required | enum | not-started, started, completed or not-completed. |
| completion_date date | date | Completion date, only when none is recorded yet. |
Request
curl -X PUT https://cotlet.dev/api/v1/thought-industries/contents/content_8c41d2/status \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"learner":"learner","status":"not-started"}' result = client.call("thought-industries", "set_content_status", {"learner":"learner","content_id":"content_8c41d2","status":"not-started"}) const result = await cotlet.call('thought-industries', 'set_content_status', {"learner":"learner","content_id":"content_8c41d2","status":"not-started"}); cotlet call thought-industries set_content_status --data '{"learner":"learner","content_id":"content_8c41d2","status":"not-started"}' Example response
{
"learner": "tom.becker@example.com",
"content": "Safety basics",
"status": "completed",
"completion_date": "2026-10-14T00:00:00.000Z"
}