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.
Hello,
I understand that Blueprint courses needs to be created manually rather than using SIS-provisioned courses. However, what tools or scripts can use to create automatically blank automatic courses and linking those courses to the blueprint?
In Moodle, you can create a php script for that and add it to the cron file in order to automatically create courses. Are there similar approaches for Canvas?
I have found the Canvas Blueprint manager from the Indiana University but I am not sure if this is an add-on from Canvas or the University programme it.
Many thanks for any advice that you can give.
Mari Cruz
Hi Mari,
You can create course shells different ways. My organization does not have an integration between Canvas and our SIS. So, I usually just use the SIS Import option for creating course shells.
I then use an API call to designate the courses I want to use as blueprints. I run a separate API call to associate the “child” courses with their respective blueprints. It’s a process, and not something that is done automatically.
I am using this process for the first time this spring. Excel and nested IF functions and provisioning reports are all involved. I’m sure there is a better way to do all of this, but I’m not a programmer. I am more than happy to share more detail with you if you are interested.
Thanks,
Amber
Many thanks for the information. I have never programmed an API call, so if we choose this solution, this is something we would have to look with the relevant IT teams.
Would it be possible to have more details of that API call or share the code?
I understand that SIS import option is the native functionality in Canvas using a csv file.
Regards,
Mari Cruz
Hi @m_garcia1
This is what I use to designate courses as blueprint courses without anything locked down. Text in bold would need to be updated with your specific information.:
curl "https://ncvps.instructure.com/api/v1/courses/24412" -X PUT -H "Authorization: Bearer XXXXXXX" -H "https://<your school>.instructure.com/api/v1/courses/<course_id>" -d "course[blueprint]=true" -d "course[use_blueprint_restrictions_by_object_type]=true"
This is what I use to associate courses with its respective blueprint:
curl -X PUT -H "Authorization: Bearer XXXXXXX" "https://<your school>.instructure.com/api/v1/courses/<blueprint_course_id>/blueprint_templates/default/update_associations" -d "course_ids_to_add[]=xxxxx"
And lastly, here is what I use to sync blueprint content:
curl -X POST -H "AAuthorization: Bearer XXXXXXX" "https://<your school>.instructure.com/api/v1/courses/<blueprint_course_id>/blueprint_templates/default/migrations"
Again, I use Excel and formulas to figure out what course ID needs to be associated to what blueprint. This semester I believe we have 93 blueprints with over 2500 associated courses (combined, not for each blueprint).
Let me know if you have any questions!
Thanks,
Amber
Many thanks for sharing this with me, @amber_batten . It looks like advance Sanskrit to me but I am sure that it our IT guys will find it useful.
P.D. I am still learning how the rewarding system works in the community, I have sent you points as I found the reply very useful 🙂
Hi @m_garcia1 ,
I have received the badges! Thank you. I don't think I've ever gotten one before, and now I have two! I'll have to look into those. If anyone has any questions, please feel free to message me. Maybe I'll learn a thing or two from you all! I can share my entire process with you, too. I'm actually going to submit a proposal for InstructureCon on this - to share what we do as well as to see if anyone can offer any input on our process. ![]()
Thank you, again!
Amber
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.