How We Solved Canvas’s “Impossible” New Quizzes Data Extraction Problem
Canvas New Quizzes API data extraction
A few years back I was trying to get my money’s worth out of one of those old servo vending machines. You know the ones. You put your coins in, the little metal spiral turns around, and the chocolate bar shuffles forward, gets to the very edge, and just sits there. Taunting you.
You can see it. You paid for it. It is, by every reasonable measure, yours. But no amount of shaking, rocking, gentle percussive persuasion, or muttered threats gets it to actually fall.
That, in a nutshell, is what it’s like trying to get real data out of Canvas’s New Quizzes API.
You can see the data is in there. Question-level detail. Individual student responses. Documents your students uploaded as part of their submission. It’s all sitting right there on the edge, visible, technically yours, and completely stuck.
I didn’t expect to be writing about API architecture when I started this business. I got into ed-tech the same accidental way I got into most things in my life, someone had a problem, I said “how hard can it be,” and then found out exactly how hard it can be.
So what happened to Taxi Ride?
Sorry, wrong story. But you get the idea. Something that looks fine on the surface, that everyone assumes is working the way it’s supposed to, often isn’t. And nobody wants to be the one to say so.
A client came to us properly frustrated. They needed full question-by-question data out of New Quizzes for compliance and reporting reasons that, frankly, were not optional. They’d already been to three different vendors. Every single one came back with a version of “sorry, that data just isn’t accessible.”
Even Canvas, when pushed, gave the same answer with a bit more corporate gloss on it. New Quizzes, they’ll tell you, was built as a separate product line with its own API, and the level of granularity everyone actually wants, the individual question responses, the embedded documents inside a submission, sits behind endpoints that are either locked down, undocumented, or simply don’t return what you’d expect.
Now I’m not a software architect, but isn’t figuring out how systems actually talk to each other kind of the whole point of an API?
We had a choice at that point. Tell the client the same thing everyone else had told them, or actually go and find out for ourselves whether “can’t be done” was true, or just meant “hasn’t been done by anyone patient enough to try.”
What I have learnt is that “impossible” is usually just “inconvenient” wearing a nicer jacket.
So we pulled the machine apart. Not literally, my kids will tell you I am not to be trusted near actual machinery. But we went into the API structure the way you’d go into a studio session, track by track, checking every single layer instead of assuming the mix would just come together on its own.
We mapped every endpoint. We tracked how submissions were actually stored versus how they were exposed. We found where the student documents were being nested inside submission payloads that most integrations never bother to unpack, because unpacking them properly is fiddly, unglamorous work that doesn’t show up in a sales demo.
Turns out the chocolate bar wasn’t actually stuck. The machine was just never designed for anyone to bother reaching in and grabbing it properly.
What we built now does exactly what everyone said couldn’t be done. Full question-by-question extraction from New Quizzes. Every student response, mapped cleanly back to the right question, the right attempt, the right student. Documents embedded inside quiz submissions, pulled out intact and usable, not buried three layers deep in a JSON blob nobody wants to touch.
It isn’t glamorous work. Nobody’s going to put “unpacked a nested submission payload” on a highlight reel. But it’s the difference between an institution actually owning its own student data and an institution just hoping Canvas’s dashboard shows them enough to get by.
Why does this actually matter to you?
If you’re running reporting, compliance, accreditation, or research off Canvas data, and you’ve been told New Quizzes just doesn’t give up its data cleanly, you’ve been told the truth as far as most vendors know it. It’s a genuinely hard problem. Canvas didn’t build New Quizzes to be friendly to third-party extraction, and most vendors stopped pushing once they hit the same wall everyone else hits.
We didn’t stop there. Partly out of stubbornness, partly because our client genuinely couldn’t take “sorry” for an answer, and partly because I’ve never been particularly good at accepting that something is impossible just because a few smart people said so first.
This isn’t a workaround or a partial fix. It’s full extraction, question by question, documents and all, built specifically because the gap was real and nobody else had closed it.
If your team has quietly accepted that this data is just out of reach, it isn’t anymore. We’ve already done the shaking. The chocolate bar’s in your hand.
Get in touch and we’ll do the extraction for you – single, multiple or all your courses.
Canvas New Quizzes API data extraction
