Canvas Content Migrations API
The Content Migrations API from Canvas — 25 operation(s) for content migrations.
Operations 37
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
GET
/v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues
List issues raised by an account content migration · List migration issues
#
Ask an LLM
“What problems came up during an import into my Canvas account?”
“Which warnings did an account-level content migration leave behind?”
Tell an agent
List the migration issues for migration {content_migration_id} in account {account_id}.
Show every problem flagged on account {account_id}'s import {content_migration_id}.
GET
/v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues
List issues raised by a course content migration · List migration issues
#
Ask an LLM
“What went wrong when I imported content into my course?”
“Can I see all the errors from a course copy or import?”
Tell an agent
List the migration issues for course {course_id} migration {content_migration_id}.
Show the import problems from migration {content_migration_id} into course {course_id}.
GET
/v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues
List issues raised by a group content migration · List migration issues
#
Ask an LLM
“Which errors did a content import into a student group produce?”
“Are there any unresolved warnings on a group's content migration?”
Tell an agent
List the migration issues for group {group_id} migration {content_migration_id}.
Show every problem flagged on group {group_id}'s import {content_migration_id}.
GET
/v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues
List issues raised by a user content migration · List migration issues
#
Ask an LLM
“What problems came up importing files into a user's personal space?”
“Can I list the warnings from a user-level content migration?”
Tell an agent
List the migration issues for user {user_id} migration {content_migration_id}.
Show every problem flagged on user {user_id}'s import {content_migration_id}.
GET
/v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Get one issue from an account content migration · Get a migration issue
#
Ask an LLM
“What are the details of a single issue from an account-level import?”
“Can I look up one specific migration issue on my account by its ID?”
Tell an agent
Get issue {id} from migration {content_migration_id} in account {account_id}.
Show me the details of account {account_id} migration issue {id} on import {content_migration_id}.
PUT
/v1/accounts/{account_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Resolve or reopen an account migration issue · Update a migration issue
#
Ask an LLM
“How do I mark an issue from an account-level import as resolved?”
“Can I change the workflow state of a migration issue on my account?”
Tell an agent
Set issue {id} on account {account_id} migration {content_migration_id} to {workflow_state}.
Mark account {account_id} migration {content_migration_id} issue {id} as resolved.
GET
/v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Get one issue from a course content migration · Get a migration issue
#
Ask an LLM
“What exactly does one error from my course import say?”
“Can I fetch a single course migration issue by its ID?”
Tell an agent
Get issue {id} from migration {content_migration_id} in course {course_id}.
Show me the details of course {course_id} migration issue {id} on import {content_migration_id}.
PUT
/v1/courses/{course_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Resolve or reopen a course migration issue · Update a migration issue
#
Ask an LLM
“How do I mark a course import problem as resolved once I've fixed it?”
“Can I reactivate a course migration issue I resolved by mistake?”
Tell an agent
Set issue {id} on course {course_id} migration {content_migration_id} to {workflow_state}.
Mark course {course_id} migration {content_migration_id} issue {id} as resolved.
GET
/v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Get one issue from a group content migration · Get a migration issue
#
Ask an LLM
“What are the details of one problem from a group's content import?”
“Can I fetch a single group migration issue by its ID?”
Tell an agent
Get issue {id} from migration {content_migration_id} in group {group_id}.
Show me the details of group {group_id} migration issue {id} on import {content_migration_id}.
PUT
/v1/groups/{group_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Resolve or reopen a group migration issue · Update a migration issue
#
Ask an LLM
“How do I mark a problem from a group's content import as resolved?”
“Can I change the state of a group migration issue?”
Tell an agent
Set issue {id} on group {group_id} migration {content_migration_id} to {workflow_state}.
Mark group {group_id} migration {content_migration_id} issue {id} as resolved.
GET
/v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Get one issue from a user content migration · Get a migration issue
#
Ask an LLM
“What does a single issue from a user's personal import say?”
“Can I fetch one user-level migration issue by its ID?”
Tell an agent
Get issue {id} from migration {content_migration_id} for user {user_id}.
Show me the details of user {user_id} migration issue {id} on import {content_migration_id}.
PUT
/v1/users/{user_id}/content_migrations/{content_migration_id}/migration_issues/{id}
Resolve or reopen a user migration issue · Update a migration issue
#
Ask an LLM
“How do I mark an issue from a user's personal import as resolved?”
“Can I set the workflow state of a user-level migration issue?”
Tell an agent
Set issue {id} on user {user_id} migration {content_migration_id} to {workflow_state}.
Mark user {user_id} migration {content_migration_id} issue {id} as resolved.
GET
/v1/accounts/{account_id}/content_migrations
List content migrations run on an account · List content migrations
#
Ask an LLM
“Which imports have been run against my Canvas account?”
“Can I see the history of account-level content migrations?”
Tell an agent
List the content migrations for account {account_id}.
Show all imports that have run on account {account_id}.
POST
/v1/accounts/{account_id}/content_migrations
Start a content import into an account · Create a content migration
#
Ask an LLM
“How do I import a question bank or package into my account rather than a course?”
“Can I start an account-level content migration from a file URL?”
Tell an agent
Start a {migration_type} content migration into account {account_id}.
Import the file at {file_url} into account {account_id} as a {migration_type} migration.
GET
/v1/courses/{course_id}/content_migrations
List content migrations run on a course · List content migrations
#
Ask an LLM
“What imports and course copies have been run into my course?”
“Can I check whether a previous course copy finished?”
Tell an agent
List the content migrations for course {course_id}.
Show all imports and copies that have run into course {course_id}.
POST
/v1/courses/{course_id}/content_migrations
Copy or import content into a course · Create a content migration
#
Ask an LLM
“How do I copy everything from last term's course into a new one?”
“Can I shift assignment dates to a new term while importing course content?”
Tell an agent
Copy course {source_course_id} into course {course_id}.
Start a {migration_type} import into course {course_id} from {file_url}.
GET
/v1/groups/{group_id}/content_migrations
List content migrations run on a group · List content migrations
#
Ask an LLM
“Which content imports have been run into a student group?”
“Can I see the migration history for a group?”
Tell an agent
List the content migrations for group {group_id}.
Show all imports that have run into group {group_id}.
POST
/v1/groups/{group_id}/content_migrations
Start a content import into a group · Create a content migration
#
Ask an LLM
“How do I upload a zip of files into a group's files area?”
“Can I import content into a group instead of a course?”
Tell an agent
Start a {migration_type} content migration into group {group_id}.
Import the file at {file_url} into group {group_id} as a {migration_type} migration.
GET
/v1/users/{user_id}/content_migrations
List content migrations run for a user · List content migrations
#
Ask an LLM
“What imports have been run into a user's personal files?”
“Can I list a user's own content migrations?”
Tell an agent
List the content migrations for user {user_id}.
Show all imports that have run for user {user_id}.
POST
/v1/users/{user_id}/content_migrations
Start a content import into a user's files · Create a content migration
#
Ask an LLM
“How do I import a zip file into a user's personal files?”
“Can I start a content migration scoped to a single user?”
Tell an agent
Start a {migration_type} content migration for user {user_id}.
Import the file at {file_url} into user {user_id}'s files as a {migration_type} migration.
GET
/v1/accounts/{account_id}/content_migrations/{id}
Get the status of an account content migration · Get a content migration
#
Ask an LLM
“Has a particular import into my account finished yet?”
“What is the current state of one account-level migration?”
Tell an agent
Get content migration {id} in account {account_id}.
Check the progress of account {account_id} import {id}.
PUT
/v1/accounts/{account_id}/content_migrations/{id}
Update or retry an account content migration · Update a content migration
#
Ask an LLM
“How do I retry an account import after its file upload failed?”
“Can I change settings on an account migration that's already been created?”
Tell an agent
Update content migration {id} in account {account_id}.
Resubmit the upload for account {account_id} import {id}.
GET
/v1/courses/{course_id}/content_migrations/{id}
Get the status of a course content migration · Get a content migration
#
Ask an LLM
“Did my course copy finish, or is it still running?”
“What's the workflow state of one import into my course?”
Tell an agent
Get content migration {id} in course {course_id}.
Check the progress of course {course_id} import {id}.
PUT
/v1/courses/{course_id}/content_migrations/{id}
Choose items or retry a course content migration · Update a content migration
#
Ask an LLM
“How do I pick which items to bring over in a selective course import?”
“Can I resend a file for a course import whose first upload failed?”
Tell an agent
Update content migration {id} in course {course_id} with the items I selected.
Retry the file upload for course {course_id} import {id}.
GET
/v1/groups/{group_id}/content_migrations/{id}
Get the status of a group content migration · Get a content migration
#
Ask an LLM
“Has the content import into my group completed?”
“What is the state of a single group-level migration?”
Tell an agent
Get content migration {id} in group {group_id}.
Check the progress of group {group_id} import {id}.
PUT
/v1/groups/{group_id}/content_migrations/{id}
Update or retry a group content migration · Update a content migration
#
Ask an LLM
“How do I retry a group import after the upload went wrong?”
“Can I adjust a group migration after creating it?”
Tell an agent
Update content migration {id} in group {group_id}.
Resubmit the upload for group {group_id} import {id}.
GET
/v1/users/{user_id}/content_migrations/{id}
Get the status of a user content migration · Get a content migration
#
Ask an LLM
“Has the import into a user's personal files finished?”
“What is the state of one user-level migration?”
Tell an agent
Get content migration {id} for user {user_id}.
Check the progress of user {user_id} import {id}.
PUT
/v1/users/{user_id}/content_migrations/{id}
Update or retry a user content migration · Update a content migration
#
Ask an LLM
“How do I retry a user's personal import after the upload failed?”
“Can I change a user-level migration after it was created?”
Tell an agent
Update content migration {id} for user {user_id}.
Resubmit the upload for user {user_id} import {id}.
GET
/v1/accounts/{account_id}/content_migrations/migrators
List import types available to an account · List Migration Systems
#
Ask an LLM
“Which migration types can I use when importing into my account?”
“What import formats does my account support?”
Tell an agent
List the available migration systems for account {account_id}.
Show which import types account {account_id} supports.
GET
/v1/courses/{course_id}/content_migrations/migrators
List import types available to a course · List Migration Systems
#
Ask an LLM
“What migration types can I choose from when importing into a course?”
“Does my course support Common Cartridge or QTI imports?”
Tell an agent
List the available migration systems for course {course_id}.
Show which import types course {course_id} supports.
GET
/v1/groups/{group_id}/content_migrations/migrators
List import types available to a group · List Migration Systems
#
Ask an LLM
“Which migration types are allowed for imports into a group?”
“What import formats can a group accept?”
Tell an agent
List the available migration systems for group {group_id}.
Show which import types group {group_id} supports.
GET
/v1/users/{user_id}/content_migrations/migrators
List import types available to a user · List Migration Systems
#
Ask an LLM
“Which migration types can be used for a user's personal imports?”
“What import formats are available at the user level?”
Tell an agent
List the available migration systems for user {user_id}.
Show which import types user {user_id} supports.
GET
/v1/accounts/{account_id}/content_migrations/{id}/selective_data
Browse content selectable in an account import · List items for selective import
#
Ask an LLM
“What content can I choose from in an account-level selective import?”
“Can I see the tree of importable items for an account migration?”
Tell an agent
List the selectable items for account {account_id} migration {id}.
Show the {type} items available to import in account {account_id} migration {id}.
GET
/v1/courses/{course_id}/content_migrations/{id}/selective_data
Browse content selectable in a course import · List items for selective import
#
Ask an LLM
“Which assignments, pages and modules can I pick in a selective course import?”
“How do I get the copy parameters for just some items of a course migration?”
Tell an agent
List the selectable items for course {course_id} migration {id}.
Show only the {type} items I can import in course {course_id} migration {id}.
GET
/v1/groups/{group_id}/content_migrations/{id}/selective_data
Browse content selectable in a group import · List items for selective import
#
Ask an LLM
“What content can I choose from in a group's selective import?”
“Can I see the importable item tree for a group migration?”
Tell an agent
List the selectable items for group {group_id} migration {id}.
Show the {type} items available to import in group {group_id} migration {id}.
GET
/v1/users/{user_id}/content_migrations/{id}/selective_data
Browse content selectable in a user import · List items for selective import
#
Ask an LLM
“What items can be picked in a user-level selective import?”
“Can I see the importable item tree for a user's migration?”
Tell an agent
List the selectable items for user {user_id} migration {id}.
Show the {type} items available to import in user {user_id} migration {id}.
GET
/v1/courses/{course_id}/content_migrations/{id}/asset_id_mapping
Map source to copied asset IDs after a course copy · Get asset id mapping
#
Ask an LLM
“After a course copy, how do I find the new ID of each copied assignment or page?”
“Can I get the old-to-new ID mapping from a blueprint sync?”
Tell an agent
Get the asset ID mapping for course {course_id} migration {id}.
Show which destination IDs the copied quizzes and modules got in course {course_id} from migration {id}.
Documentation
📖
Documentation
https://canvas.instructure.com/doc/api/
📖
Authentication
https://canvas.instructure.com/doc/api/file.oauth.html
📖
APIReference
https://canvas.instructure.com/doc/api/
📖
RateLimits
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/rate-limits/canvas-rate-limits.yml
Specifications
SDKs
Other Resources
🔗
Pagination
https://canvas.instructure.com/doc/api/file.pagination.html
🔗
Swagger
https://canvas.instructure.com/doc/api/api-docs.json
🔗
OAuthScopes
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/scopes/canvas-scopes.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/errors/canvas-problem-types.yml
🔗
DataModel
https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/data-model/canvas-data-model.yml