Canvas Courses API
The Courses API from Canvas — 25 operation(s) for courses.
The Courses API from Canvas — 25 operation(s) for courses.
openapi: 3.1.0
info:
title: Canvas LMS REST API ( subset) Courses API
description: 'Canvas LMS REST API uses OAuth 2.0 bearer tokens. Endpoints live under
/api/v1/ on the institution''s Canvas host (e.g.
https://canvas.instructure.com/api/v1/...). Responses are JSON with
ISO 8601 timestamps, and list endpoints support Link-header pagination.
This specification is a best-effort, hand-authored subset covering the
Courses resource, modeled from the publicly documented Courses API
page (https://canvas.instructure.com/doc/api/courses.html). Canvas has
many additional resources — assignments, quizzes, submissions, users,
enrollments, files, etc. — that are not enumerated here. Refer to the
Canvas API documentation for the full surface area.
'
version: v1
contact:
name: Instructure Canvas
url: https://canvas.instructure.com/doc/api/
servers:
- url: https://canvas.instructure.com/api/v1
description: Hosted Canvas instance (replace host for your institution).
security:
- bearerAuth: []
tags:
- name: Courses
paths:
/courses:
get:
tags:
- Courses
summary: List your courses
operationId: listCourses
parameters:
- in: query
name: enrollment_type
schema:
type: string
enum:
- teacher
- student
- ta
- observer
- designer
- in: query
name: enrollment_state
schema:
type: string
enum:
- active
- invited_or_pending
- completed
- in: query
name: state
schema:
type: array
items:
type: string
enum:
- unpublished
- available
- completed
- deleted
- in: query
name: include
schema:
type: array
items:
type: string
responses:
'200':
$ref: '#/components/responses/CourseList'
/users/{user_id}/courses:
parameters:
- $ref: '#/components/parameters/UserId'
get:
tags:
- Courses
summary: List courses for a user
responses:
'200':
$ref: '#/components/responses/CourseList'
/courses/{course_id}/users/{user_id}/progress:
parameters:
- $ref: '#/components/parameters/CourseId'
- $ref: '#/components/parameters/UserId'
get:
tags:
- Courses
summary: Get user progress in a course
responses:
'200':
$ref: '#/components/responses/CourseProgress'
/accounts/{account_id}/courses:
parameters:
- in: path
name: account_id
required: true
schema:
type: string
get:
tags:
- Courses
summary: List courses in an account
responses:
'200':
$ref: '#/components/responses/CourseList'
post:
tags:
- Courses
summary: Create a new course
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CourseCreate'
responses:
'200':
$ref: '#/components/responses/Course'
/accounts/{account_id}/courses/{id}:
parameters:
- in: path
name: account_id
required: true
schema:
type: string
- in: path
name: id
required: true
schema:
type: string
put:
tags:
- Courses
summary: Update courses (bulk)
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{id}:
parameters:
- in: path
name: id
required: true
schema:
type: string
get:
tags:
- Courses
summary: Get a single course
parameters:
- in: query
name: include
schema:
type: array
items:
type: string
responses:
'200':
$ref: '#/components/responses/Course'
put:
tags:
- Courses
summary: Update a course
responses:
'200':
$ref: '#/components/responses/Course'
delete:
tags:
- Courses
summary: Delete or conclude a course
parameters:
- in: query
name: event
required: true
schema:
type: string
enum:
- delete
- conclude
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/files:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: List course files
responses:
'200':
$ref: '#/components/responses/Generic'
post:
tags:
- Courses
summary: Upload a file to a course
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
name:
type: string
size:
type: integer
content_type:
type: string
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/students:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: List students in a course (deprecated - use users)
responses:
'200':
$ref: '#/components/responses/UserList'
/courses/{course_id}/users:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: List users in a course
parameters:
- in: query
name: enrollment_type
schema:
type: array
items:
type: string
- in: query
name: include
schema:
type: array
items:
type: string
responses:
'200':
$ref: '#/components/responses/UserList'
/courses/{course_id}/search_users:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Search users in a course
parameters:
- in: query
name: search_term
schema:
type: string
responses:
'200':
$ref: '#/components/responses/UserList'
/courses/{course_id}/recent_students:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: List recently logged-in students
responses:
'200':
$ref: '#/components/responses/UserList'
/courses/{course_id}/users/{id}:
parameters:
- $ref: '#/components/parameters/CourseId'
- in: path
name: id
required: true
schema:
type: string
get:
tags:
- Courses
summary: Get a single user in a course
responses:
'200':
$ref: '#/components/responses/User'
/courses/{course_id}/content_share_users:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: List content share users for a course
responses:
'200':
$ref: '#/components/responses/UserList'
/courses/{course_id}/preview_html:
parameters:
- $ref: '#/components/parameters/CourseId'
post:
tags:
- Courses
summary: Preview HTML in a course context
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/activity_stream:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Course activity stream
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/activity_stream/summary:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Course activity stream summary
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/todo:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Course TODO items
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/settings:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Get course settings
responses:
'200':
$ref: '#/components/responses/Generic'
put:
tags:
- Courses
summary: Update course settings
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/permissions:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Get course permissions
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/reset_content:
parameters:
- $ref: '#/components/parameters/CourseId'
post:
tags:
- Courses
summary: Reset a course
responses:
'200':
$ref: '#/components/responses/Course'
/courses/{course_id}/effective_due_dates:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Get effective due dates
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/course_copy:
parameters:
- $ref: '#/components/parameters/CourseId'
post:
tags:
- Courses
summary: Copy course content
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/course_copy/{id}:
parameters:
- $ref: '#/components/parameters/CourseId'
- in: path
name: id
required: true
schema:
type: string
get:
tags:
- Courses
summary: Get course copy status
responses:
'200':
$ref: '#/components/responses/Generic'
/courses/{course_id}/student_view_student:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Get student view student
responses:
'200':
$ref: '#/components/responses/User'
/courses/{course_id}/bulk_user_progress:
parameters:
- $ref: '#/components/parameters/CourseId'
get:
tags:
- Courses
summary: Get bulk user progress
responses:
'200':
$ref: '#/components/responses/Generic'
components:
schemas:
Progress:
type: object
properties:
requirement_count:
type: integer
requirement_completed_count:
type: integer
next_requirement_url:
type: string
nullable: true
completed_at:
type: string
format: date-time
nullable: true
additionalProperties: true
User:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
sortable_name:
type: string
short_name:
type: string
sis_user_id:
type: string
nullable: true
email:
type: string
format: email
nullable: true
login_id:
type: string
additionalProperties: true
CourseCreate:
type: object
properties:
course:
type: object
properties:
name:
type: string
course_code:
type: string
start_at:
type: string
format: date-time
end_at:
type: string
format: date-time
is_public:
type: boolean
additionalProperties: true
offer:
type: boolean
enroll_me:
type: boolean
Course:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
account_id:
type: integer
format: int64
uuid:
type: string
start_at:
type: string
format: date-time
nullable: true
end_at:
type: string
format: date-time
nullable: true
course_code:
type: string
workflow_state:
type: string
enum:
- unpublished
- available
- completed
- deleted
enrollment_term_id:
type: integer
nullable: true
sis_course_id:
type: string
nullable: true
integration_id:
type: string
nullable: true
public_syllabus:
type: boolean
storage_quota_mb:
type: integer
is_public:
type: boolean
additionalProperties: true
Generic:
type: object
additionalProperties: true
responses:
Course:
description: Single course.
content:
application/json:
schema:
$ref: '#/components/schemas/Course'
User:
description: Single user.
content:
application/json:
schema:
$ref: '#/components/schemas/User'
UserList:
description: List of users.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
CourseList:
description: List of courses.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Course'
Generic:
description: Generic JSON object response.
content:
application/json:
schema:
$ref: '#/components/schemas/Generic'
CourseProgress:
description: User progress in a course.
content:
application/json:
schema:
$ref: '#/components/schemas/Progress'
parameters:
UserId:
in: path
name: user_id
required: true
schema:
type: string
CourseId:
in: path
name: course_id
required: true
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'OAuth 2.0 access token. See
https://canvas.instructure.com/doc/api/file.oauth.html.
'