Enrollment Terms API
API for viewing enrollment terms. For all actions, the specified account must be a root account and the caller must have permission to manage the account (when called on non-root accounts, the errorwill be indicate the appropriate root account).
An EnrollmentTerm object looks like:
{
// The unique identifier for the enrollment term.
"id": 1,
// The SIS id of the term. Only included if the user has permission to view SIS
// information.
"sis_term_id": "Sp2014",
// the unique identifier for the SIS import. This field is only included if the
// user has permission to manage SIS information.
"sis_import_id": 34,
// The name of the term.
"name": "Spring 2014",
// The datetime of the start of the term.
"start_at": "2014-01-06T08:00:00-05:00",
// The datetime of the end of the term.
"end_at": "2014-05-16T05:00:00-04:00",
// The state of the term. Can be 'active' or 'deleted'.
"workflow_state": "active",
// Term date overrides for specific enrollment types
"overrides": {"StudentEnrollment":{"start_at":"2014-01-07T08:00:00-05:00","end_at":"2014-05-14T05:00:00-04:0"}},
// The number of courses in the term (available via include)
"course_count": 80
}
An EnrollmentTermsList object looks like:
{
// a paginated list of all terms in the account
"enrollment_terms": []
}
Create enrollment term TermsController#create
POST /api/v1/accounts/:account_id/terms
url:POST|/api/v1/accounts/:account_id/terms
Create a new enrollment term for the specified account.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
enrollment_term[name] | string |
The name of the term. |
|
enrollment_term[start_at] | DateTime |
The day/time the term starts. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. |
|
enrollment_term[end_at] | DateTime |
The day/time the term ends. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. |
|
enrollment_term[sis_term_id] | string |
The unique SIS identifier for the term. |
|
enrollment_term[overrides][enrollment_type][start_at] | DateTime |
The day/time the term starts, overridden for the given enrollment type. enrollment_type can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment |
|
enrollment_term[overrides][enrollment_type][end_at] | DateTime |
The day/time the term ends, overridden for the given enrollment type. enrollment_type can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment |
Update enrollment term TermsController#update
PUT /api/v1/accounts/:account_id/terms/:id
url:PUT|/api/v1/accounts/:account_id/terms/:id
Update an existing enrollment term for the specified account.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
enrollment_term[name] | string |
The name of the term. |
|
enrollment_term[start_at] | DateTime |
The day/time the term starts. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. |
|
enrollment_term[end_at] | DateTime |
The day/time the term ends. Accepts times in ISO 8601 format, e.g. 2015-01-10T18:48:00Z. |
|
enrollment_term[sis_term_id] | string |
The unique SIS identifier for the term. |
|
enrollment_term[overrides][enrollment_type][start_at] | DateTime |
The day/time the term starts, overridden for the given enrollment type. enrollment_type can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment |
|
enrollment_term[overrides][enrollment_type][end_at] | DateTime |
The day/time the term ends, overridden for the given enrollment type. enrollment_type can be one of StudentEnrollment, TeacherEnrollment, TaEnrollment, or DesignerEnrollment |
|
override_sis_stickiness | boolean |
Default is true. If false, any fields containing “sticky” changes will not be updated. See SIS CSV Format documentation for information on which fields can have SIS stickiness |
Delete enrollment term TermsController#destroy
DELETE /api/v1/accounts/:account_id/terms/:id
url:DELETE|/api/v1/accounts/:account_id/terms/:id
Delete the specified enrollment term.
Returns an EnrollmentTerm objectList enrollment terms TermsApiController#index
GET /api/v1/accounts/:account_id/terms
url:GET|/api/v1/accounts/:account_id/terms
An object with a paginated list of all of the terms in the account.
Request Parameters:
Parameter | Type | Description | |
---|---|---|---|
workflow_state[] | string |
If set, only returns terms that are in the given state. Defaults to ‘active’.
Allowed values: |
|
include[] | string |
Array of additional information to include.
Allowed values: |
|
term_name | string |
If set, only returns terms that match the given search keyword. Search keyword is matched against term name. |
Example Request:
curl -H 'Authorization: Bearer <token>' \
https://<canvas>/api/v1/accounts/1/terms?include[]=overrides
Example Response:
{
"enrollment_terms": [
{
"id": 1,
"name": "Fall 20X6"
"start_at": "2026-08-31T20:00:00Z",
"end_at": "2026-12-20T20:00:00Z",
"created_at": "2025-01-02T03:43:11Z",
"workflow_state": "active",
"grading_period_group_id": 1,
"sis_term_id": null,
"overrides": {
"StudentEnrollment": {
"start_at": "2026-09-03T20:00:00Z",
"end_at": "2026-12-19T20:00:00Z"
},
"TeacherEnrollment": {
"start_at": null,
"end_at": "2026-12-30T20:00:00Z"
}
}
}
]
}
Retrieve enrollment term TermsApiController#show
GET /api/v1/accounts/:account_id/terms/:id
url:GET|/api/v1/accounts/:account_id/terms/:id
Retrieves the details for an enrollment term in the account. Includes overrides by default.
Example Request:
curl -H 'Authorization: Bearer <token>' \
https://<canvas>/api/v1/accounts/1/terms/2