Showing results for 
Search instead for 
Did you mean: 
Surveyor II

Automatising the creation and association of courses in Canvas


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

5 Replies

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.  



Surveyor II

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.


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 "" -X PUT -H "Authorization: Bearer XXXXXXX" -H "https://<your school><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><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><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!



Surveyor II

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.  Smiley Happy

Thank you, again!