I'm not a Canvas admin, just a designer. In short, this is too much work for my level of involvement. I'll continue the slow/messy methods in the OP.
I tried [Canvas instance]/api/v1/courses/[courseID]/modules
which gave me a block of code including the following for every module in the course:
...,{"id":854296,"name":"[ModuleTitle]","position":8,"unlock_at":null,"require_sequential_progress":false,"requirement_type":"all","publish_final_grade":false,"prerequisite_module_ids":[],"published":true,"items_count":7,"items_url":"https://canvas.iastate.edu/api/v1/courses/[courseID]/modules/[moduleCode]/items"},...
So with a lot of clever search+replace regex, I could obtain a list of modules.
Then for EACH module, I used the URL following "items_url" to obtain a similarly complex block of code for the items in a module - e.g.,
https://canvas.[defaultInstance]/api/v1/courses/[courseID]/modules/[moduleCode]/items
... which yields as similarly complex block of code, requiring more clever search+replace functions in a text processor.
It might be worth figuring out the search+replace strings if I had to do it hundreds of times, but not if I have to do it only 10-20 times.