Save Module Progress
B2B Learn
Save Module Progress
Save module watch progress.
Auth: portal API key + X-Learner-Email header. 404 "Not enrolled in this
course" if the header learner has no enrollment.
Request body: {completed, position_sec}. `completed` marks module_num
watched; modules can be completed in ANY order -- there is no forced
sequence, so a learner may watch module 3 before module 1 and both count.
`position_sec` is optional and only appends a video_events row (playback
telemetry); it does not itself affect completion.
Upserts module_progress (completed_at set once true, never unset by a
later completed=false call) and, when position_sec is given, appends a
video_events row. Owner-pinned; NEVER touches the billing consume/meter
path (learner playback is free).
Returns 200 {completion_pct: float}. Also lazily issues the certificate
if this progress update completes eligibility (see get_certificate).
POST
Save Module Progress
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Response
Successful Response