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.
Hey All,
I have trolled through the community and have found many admins like myself (who are not a programmers), who are wanting a default course shell that can be pushed to all the courses upon new shell creation. In my hunt I have found that there is a course copy API [Courses - Canvas LMS REST API Documentation]. This has been depreciated and is referred to the content migration API [Content Migrations - Canvas LMS REST API Documentation].
What I am curious about is who is using this and to what success? Pros/Cons? And do you think that the code can be incorporated with a SIS data push API where shells are created and populated?
Ultimately we would add to our shell creation/student population API a course copy request of a default course. Where we first can set all the navigation course tools/features to a hidden state. Secondly, it would also help us distribute pre-made assignments that make use of our Electronic Learning Outcomes (ELO) within the rubric criteria. Thirdly, we would be able to have a homepage to direct new and new to Canvas faculty to the instructional design & support and faculty development offices.
Hence all courses created are duplicates of the institution course template.
What I have found, but doesn't help:
API Use Case: Standardize Course Navigation
Solved! Go to Solution.
We are giving the Canvas Admins area a little bit of love (especially questions that are really, really old) and just want to check in with you. This will also bring this question new attention.
Were you able to find an answer to your question? I am going to go ahead and mark this question as answered because there hasn't been any more activity in a while so I assume that you have the information that you need. If you still have a question about this or if you have information that you would like to share with the community, by all means, please do come back and leave a comment. Also, if this question has been answered by one of the previous replies, please feel free to mark that answer as correct.
Robbie
harker, you have indeed been combing through the Community! I'm thinking that this InstructureCon 2015 presentation will help you accomplish exactly what you're after. What do you think?
harker I have written an algorithm to clone master courses into course shells.
I used a combination of the API calls you mentioned:
My preference is the "Copy course content" API call, as it gives you more control.
Our workflow accepts input of a CSV file, which allows staff to run a provisioning report, then add a column for the master course id. This way, we can have a master template for different departments. For example we might have a master template for the English department, or for Biology. The import file makes it easy for staff to control which master template gets written to which course.
This tool was created during this past semester, and will really see it's full potential this coming Spring semester. So far it seems to be working well. The biggest question I am asking now is, how many courses will use this approach vs. instructors asking for a specific iteration of a course? Will we really be able to bulk load courses like this? We are still fairly new to Canvas, and not sure how this question will be answered.
@garth , this is great! We will give this a try, as well. Thanks!
The Hammer of the gods presentation that stefaniesanders references is great. They demo using Postman to copy a course. They even give you the postman file to get you started. The interface has changed slightly for Postman but, you should be able to find things.
I am not a programmer. My workflow is usually find the thing I want to do in the live api (put_your_canvas_here.instructure.com/doc/api/live#!/) using BETA acct to test what I want to do, then I create a collection in Postman and test it in BETA and if I haven't broken anything run it on production. I now have several collections that I run and I don't know what I did without them. For course copy beginning of the term I run the initial SIS import, pull a provisional report to get the course #s, then use my postman collections for copying. I create collections depending on the copy needs. I use content_migrations with no problems.
Postman works great for getting started but, I am learning quickly that I need to get a lot more programming experience to make things even easier.
@ean_harker this is kind of funny... I literally just posted a question about this, as well. We have a template that is used across an entire sub-account. I would like a way for it to automatically populate the content every time a course is created in that sub-account. Our team is pretty small (like most others), and I would like a way to automate this. My concern with this API is that it is being deprecated, and will eventually not work!
We are giving the Canvas Admins area a little bit of love (especially questions that are really, really old) and just want to check in with you. This will also bring this question new attention.
Were you able to find an answer to your question? I am going to go ahead and mark this question as answered because there hasn't been any more activity in a while so I assume that you have the information that you need. If you still have a question about this or if you have information that you would like to share with the community, by all means, please do come back and leave a comment. Also, if this question has been answered by one of the previous replies, please feel free to mark that answer as correct.
Robbie
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
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.