How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Canvas Courses API

The Courses resource of the Canvas LMS REST API — 31 operations covering course creation, settings, users and enrollment counts, course copy, blueprint associations, effective due dates, bulk course updates, conclude/delete and course reset. Split from the first-party contract Instructure publishes at https://canvas.instructure.com/doc/api/courses.json.

Canvas Courses API is one of 4 APIs that Canvas publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Courses. The published artifact set on APIs.io includes an OpenAPI specification and an API reference.

This API exposes 31 operations across 27 paths, and defines 2 schemas. It is described by OpenAPI 3.1.0, at version v1.

Requests are made against 2 base URLs: https://canvas.instructure.com/api, https://{canvas_host}/api.

31 operations 27 paths 2 schemas 1 DELETE20 GET7 POST3 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.1.0
API Version
v1
Base URL
https://canvas.instructure.com/api/v1
Authentication
HTTP Bearer, OAuth 2.0
License
Resource Areas
1

Authentication & Security 2

Canvas Courses API declares 2 security schemes for authenticating requests. It accepts HTTP bearer tokens (bearerAuth). It supports OAuth 2.0 (oauth2) using the authorizationCode flow. By default, every request must be authenticated.

  • bearerAuth — Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html
  • oauth2 — Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauthendpoints.html

Paths & Operations 31

Across 27 paths, the API surfaces 31 operations — 1 DELETE, 20 GET, 7 POST, 3 PUT. Each is listed below with its method, path, parameters, and response codes.

Courses 31
POST
/v1/accounts/{account_id}/courses
Create a new course
create_new_course 1 param body → 200
PUT
/v1/accounts/{account_id}/courses
Update courses
update_courses 1 param body → 200
GET
/v1/courses
List your courses
list_your_courses 7 params → 200
GET
/v1/users/{user_id}/courses
List courses for a user
list_courses_for_user 6 params → 200
GET
/v1/courses/{course_id}/users/{user_id}/progress
Get user progress
get_user_progress 2 params → 200
POST
/v1/courses/{course_id}/files
Upload a file
upload_file 1 param → 200
GET
/v1/courses/{course_id}/students
List students
list_students 1 param → 200
GET
/v1/courses/{course_id}/users
List users in course
list_users_in_course_users 11 params → 200
GET
/v1/courses/{course_id}/search_users
List users in course
list_users_in_course_search_users 11 params → 200
GET
/v1/courses/{course_id}/recent_students
List recently logged in students
list_recently_logged_in_students 1 param → 200
GET
/v1/courses/{course_id}/users/{id}
Get single user
get_single_user 2 params → 200
GET
/v1/courses/{course_id}/content_share_users
Search for content share users
search_for_content_share_users 2 params → 200
POST
/v1/courses/{course_id}/preview_html
Preview processed html
preview_processed_html 1 param body → 200
GET
/v1/courses/{course_id}/activity_stream
Course activity stream
course_activity_stream 1 param → 200
GET
/v1/courses/{course_id}/activity_stream/summary
Course activity stream summary
course_activity_stream_summary 1 param → 200
GET
/v1/courses/{course_id}/todo
Course TODO items
course_todo_items 1 param → 200
DELETE
/v1/courses/{id}
Delete/Conclude a course
delete_conclude_course 2 params → 200
GET
/v1/courses/{id}
Get a single course
get_single_course_courses 3 params → 200
PUT
/v1/courses/{id}
Update a course
update_course 1 param body → 200
GET
/v1/courses/{course_id}/settings
Get course settings
get_course_settings 1 param → 200
PUT
/v1/courses/{course_id}/settings
Update course settings
update_course_settings 1 param body → 200
GET
/v1/courses/{course_id}/student_view_student
Return test student for course
return_test_student_for_course 1 param → 200
GET
/v1/accounts/{account_id}/courses/{id}
Get a single course
get_single_course_accounts 4 params → 200
POST
/v1/courses/{course_id}/reset_content
Reset a course
reset_course 1 param → 200
GET
/v1/courses/{course_id}/effective_due_dates
Get effective due dates
get_effective_due_dates 2 params → 200
GET
/v1/courses/{course_id}/permissions
Permissions
permissions_courses 2 params → 200
GET
/v1/courses/{course_id}/bulk_user_progress
Get bulk user progress
get_bulk_user_progress 1 param → 200
POST
/v1/courses/{id}/dismiss_migration_limitation_message
Remove quiz migration alert
remove_quiz_migration_alert 1 param → 200
POST
/v1/courses/{course_id}/restore/{version_id}
Restore course syllabus version
restore_course_syllabus_version 2 params → 200
GET
/v1/courses/{course_id}/course_copy/{id}
Get course copy status
get_course_copy_status 2 params → 200
POST
/v1/courses/{course_id}/course_copy
Copy course content
copy_course_content 1 param body → 200

Schemas 2

The contract defines 2 schemas that model the data the API accepts and returns. The most detailed are Course (51 properties), CourseProgress (4 properties). Each schema is shown below with its type and property counts.

CourseProgress
object
4 properties
Course
object
51 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

canvas-courses-api-openapi.yml Raw ↑

Other APIs Canvas publishes across the network.

Canvas LMS REST API
Canvas LMS GraphQL API
Canvas LTI Integrations
Where this information came from

This is an independent, third-party profile of Canvas Courses API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.