The Instructure Community will enter a read-only state on November 22, 2025 as we prepare to migrate to our new Community platform in early December. Read our blog post for more info about this change.
Found this content helpful? Log in or sign up to leave a like!
We have someone in our organization developing a customer application for building Canvas quizzes. As the admin, I've provided them an API Developer Key with scopes enforced. The application supports classic quizzes, but they also want to build for Canvas New Quizzes. Some of the New Quizzes REST API endpoints they are using are:
I'm not seeing these in the API Developer Key scopes. Are they not available?
If I turn off enforce scopes, which I would rather not do, would they be able to hit those endpoints?
I'm seeing the same behavior you are. Usually, at this point, I'd dig into the source code for Canvas, but New Quizzes isn't open source, so I can't say anything definitively. Here's my best shot, though.
As a note on the internals of New Quizzes as I understand them (I'm not an Instructure employee, but I've spent enough time reading the Canvas codebase to understand a lot of how it works), New Quizzes isn't technically a part of Canvas; it's an LTI that has a number of special UI considerations in Canvas to make it seem like it's an integral part of Canvas. However, despite the tight integration with Canvas, the entirety of New Quizzes is hosted on a separate system. What Canvas is doing when you call the New Quizzes API is likely proxying those calls to the actual New Quizzes service (hence why the API endpoints are incongruent with the rest of the Canvas API). You can verify this by making an External Tool assignment in Canvas and selecting "Quizzes 2" from the list of LTIs---even if the New Quizzes feature flag is disabled in your Canvas instance, you'll have created a New Quizzes quiz.
I was able to take a look at the code that generates the list of scopes in the Developer Keys UI, and that did give a promising lead. From what it looks like, that modal makes a call to /api/v1/accounts/self/scopes?group_by=controller. By downloading the JSON that endpoint returns, I was able to find some evidence that at least one New Quizzes scope is included in the list of scopes:
| 767 | |
| controller | "quizzes_next/quizzes_api" |
| action | "index" |
| verb | "GET" |
| path | "/api/v1/courses/:course_id/all_quizzes" |
| scope | "url:GET|/api/v1/courses/:course_id/all_quizzes" |
| resource | "quizzes" |
| resource_name | "Quizzes" |
Canvas sometimes internally refers to New Quizzes as Quizzes Next, so this looks promising. However, it's troubling that the path and scope for this are not listed on the documentation for the New Quizzes API and that this is the only scope that looks relevant. Looking at the code in Canvas that generates the list of valid scopes, it looks like this is automatically generated by walking through the API routes defined in the router.rb file in Canvas. Looking at router.rb, this assumption seems to be correct.
Given the differences in how New Quizzes works versus the rest of Canvas, here's a few possibilities (entirely speculation; not based on actual testing):
Either way, all of these possibilities point to a bug in Canvas itself, and Instructure support or your CSM are going to be the ones that can actually get this in front of one of the Canvas developers.
I hope this helps you build that case with them.
I have used the All Quizzes endpoint before and it allows you to get the quiz information for both Classic Quizzes and New Quizzes. The data included is similar to the data from the List quizzes in a course for Classic Quizzes.
I agree with you that about contacting Instructure Support to see what information they can share. I also don't see specific scopes for the new New Quizzes endpoints. Hopefully it is something they still have in their queue to add, but it doesn't hurt to confirm in case they aren't aware this is missing from the enforced scopes currently.
@Choachy If you don't enforce scopes, most likely they would have access to those New Quizzes endpoints as long as the user account used for the Authorization has those permissions. However, I agree with you that this isn't ideal since it gives full access to all the same permissions as the user account that Authorizes it rather than just the ones you want the integration to have access to use. You could try to adjust the permissions as much as possible to limit access, but this won't be as granular as enforced scopes necessarily.
Thanks @JamesSekcienski and @DecoyLex for thinking through this with me. I feel better to know that I was missing something. Since they added the New Quizzes endpoints to the REST API, I've used them a bit, but this is the first time I've needed them in the Dev Key scopes.
Like each of you suggested, I'll submit a case to Canvas Support and see what they have to say about them missing from the scopes, and I'll forward that case to our CSM. When I hear something, I'll come back here and share the update.
Thanks so much for taking time to look at this and the detailed reply. I appreciate having other eyes and minds on this. I'm going to reply to you and @JamesSekcienski below. Thanks again.
I opened a case with Canvas Support about this and this was the reply:
Upon reviewing the information shared with us by the product team, I found that the API work is still being evaluated and prioritized, so we don't have a precise timeline. Scoped API keys are on the product team's radar, along with additional API endpoints. Rest assured, once there are any updates, we will highlight this in our documentations.
Regarding overall New Quiz updates and roadmap for the next quarter, please check our New Quiz hub page here.
So, it's what we already know. They are not in the scopes, but at least are on their radar for implementation.
Hello. I am not sure if you found a resolution for this. We are a proctoring company and were using the classic/new quiz api successfully by enabling the /quizzes and /all_quizzes scopes. But recently when we were installing our LTI for a client, we were seeing that the new quizzes are not coming through anymore. Was something changed recently?
We tired using the /all_quizzes api but that does not send us the exam duration and access code which are needed for proctoring. Can Canvas either revert back the changes or at least make new quiz scope available when you configure a API key.
Thank you and any response will be appreciated.
Vishal
Just wanted to note that the release on September 21, 2024 will add new quizzes endpoints to developer key scopes.
Canvas Release Notes (2024-09-21) - Instructure Community - 612521 (canvaslms.com)
Community helpTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign inTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign in