Lessons
List lessons in a unit
edstem lessons UNIT defaults to list.
Filters are case-insensitive and match exactly, except
--module, which also accepts a substring of the module name. Passing a value that doesn’t match anything in the unit is a usage error that names the values that do exist, so you don’t have to guess:
lessons list returns an empty array, that unit has no Ed Lessons at all — not a filtering problem.
Show and read a lesson
show returns the lesson and its slides as structured data. read renders the same lesson as Markdown and never changes anything on Ed.
Mark lessons as read
mark-read is a mutation. Every word you pass after <unit> must appear in the lesson’s title or its module name (case-insensitive, all words required) for that lesson to be selected. Selecting the whole unit needs --all explicitly — queries alone never match everything, so a typo in a query can’t silently mark nothing instead of what you meant, and an empty query list without --all is a usage error rather than a silent no-op.
For each matching lesson, the CLI opens it, then walks its slides: a quiz slide is opened (recorded as viewed), and every other slide type is marked complete (recorded as completed). --delay <seconds> (default 0) waits between each slide update, useful if you’re marking a lot of lessons read and don’t want to hammer Ed. If a lesson fails partway through, the result for that lesson reports the error and marks it partial when at least one slide succeeded before the failure — lessons that succeeded earlier in the same run are unaffected.
Slides
Show a slide’s content, questions, responses, or quiz context
--section chooses what show returns:
Read a slide as Markdown
Submit a slide
Submitting is a two-step flow: save an answer for one question, then submit everything you’ve saved for the slide.--question and --choice come as a pair: --choice without --question and --question without at least one --choice are both usage errors, and so is --amend without --question. Call slides submit <slide> with no --question to submit every answer you’ve saved for that slide — that’s the call that finalizes the quiz slide.
Download lesson files
PDF slides and Ed-hosted attachments.