Need help with your APIs? I offer API discovery, governance & evangelism services. Explore services →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Canvas Courses API

The Courses API from Canvas — 25 operation(s) for courses.

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.

This API exposes 30 operations across 25 paths, and defines 5 schemas. It is described by OpenAPI 3.1.0, at version v1.

Requests are made against a single base URL, https://canvas.instructure.com/api/v1.

30 operations 25 paths 5 schemas 1 DELETE21 GET5 POST3 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.1.0
API Version
v1
Server
https://canvas.instructure.com/api/v1
Authentication
HTTP Bearer
Resource Areas
1

Authentication & Security 1

Canvas Courses API declares 1 security scheme for authenticating requests. It accepts HTTP bearer tokens (JWT) (bearerAuth). By default, every request must be authenticated.

  • bearerAuth — OAuth 2.0 access token. See https://canvas.instructure.com/doc/api/file.oauth.html.

Paths & Operations 30

Across 25 paths, the API surfaces 30 operations — 1 DELETE, 21 GET, 5 POST, 3 PUT. Each is listed below with its method, path, parameters, and response codes.

Courses 30
GET
/courses
List your courses
listCourses 4 params → 200
GET
/users/{user_id}/courses
List courses for a user
1 param → 200
GET
/courses/{course_id}/users/{user_id}/progress
Get user progress in a course
2 params → 200
GET
/accounts/{account_id}/courses
List courses in an account
1 param → 200
POST
/accounts/{account_id}/courses
Create a new course
1 param body → 200
PUT
/accounts/{account_id}/courses/{id}
Update courses (bulk)
2 params → 200
GET
/courses/{id}
Get a single course
2 params → 200
PUT
/courses/{id}
Update a course
1 param → 200
DELETE
/courses/{id}
Delete or conclude a course
2 params → 200
GET
/courses/{course_id}/files
List course files
1 param → 200
POST
/courses/{course_id}/files
Upload a file to a course
1 param body → 200
GET
/courses/{course_id}/students
List students in a course (deprecated - use users)
1 param → 200
GET
/courses/{course_id}/users
List users in a course
3 params → 200
GET
/courses/{course_id}/search_users
Search users in a course
2 params → 200
GET
/courses/{course_id}/recent_students
List recently logged-in students
1 param → 200
GET
/courses/{course_id}/users/{id}
Get a single user in a course
2 params → 200
GET
/courses/{course_id}/content_share_users
List content share users for a course
1 param → 200
POST
/courses/{course_id}/preview_html
Preview HTML in a course context
1 param → 200
GET
/courses/{course_id}/activity_stream
Course activity stream
1 param → 200
GET
/courses/{course_id}/activity_stream/summary
Course activity stream summary
1 param → 200
GET
/courses/{course_id}/todo
Course TODO items
1 param → 200
GET
/courses/{course_id}/settings
Get course settings
1 param → 200
PUT
/courses/{course_id}/settings
Update course settings
1 param → 200
GET
/courses/{course_id}/permissions
Get course permissions
1 param → 200
POST
/courses/{course_id}/reset_content
Reset a course
1 param → 200
GET
/courses/{course_id}/effective_due_dates
Get effective due dates
1 param → 200
POST
/courses/{course_id}/course_copy
Copy course content
1 param → 200
GET
/courses/{course_id}/course_copy/{id}
Get course copy status
2 params → 200
GET
/courses/{course_id}/student_view_student
Get student view student
1 param → 200
GET
/courses/{course_id}/bulk_user_progress
Get bulk user progress
1 param → 200

Schemas 5

The contract defines 5 schemas that model the data the API accepts and returns. The most detailed are Course (14 properties), User (7 properties), Progress (4 properties), CourseCreate (3 properties). Each schema is shown below with its type and property counts.

Progress
object
4 properties
User
object
7 properties
CourseCreate
object
3 properties
Course
object
14 properties
Generic
object

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