πŸš€ Heads up: Our API Docs Have Moved!
We have relocated to Instructure Developer Documentation Portal. πŸŽ‰ Please update your bookmarks. This page will automatically redirect after July 1, 2026.

Course

course_completed

Definition: The event is emitted when all of the module requirements in a course are met.

Trigger: Triggered when all the module requirements of a course have been met. Also gets triggered when a module has a set completion time or when the completion time gets updated.

Payload Example:

{
  "metadata": {
    "client_ip": "93.184.216.34",
    "context_account_id": "21070000000000079",
    "context_id": "21070000000000565",
    "context_role": "StudentEnrollment",
    "context_sis_source_id": "2017.100.101.101-1",
    "context_type": "Course",
    "developer_key_id": "170000000056",
    "event_name": "course_completed",
    "event_time": "2019-11-01T19:11:26.615Z",
    "hostname": "oxana.instructure.com",
    "http_method": "GET",
    "producer": "canvas",
    "referrer": null,
    "request_id": "1dd9dc6f-2fb0-4c19-a6c5-7ee1bf3ed295",
    "root_account_id": "21070000000000001",
    "root_account_lti_guid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs.oxana.instructure.com",
    "root_account_uuid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs",
    "session_id": "ef686f8ed684abf78cbfa1f6a58112b5",
    "time_zone": "America/New_York",
    "url": "https://oxana.instructure.com/api/v1/courses/565/modules?include%5B%5D=items&per_page=99",
    "user_account_id": "21070000000000001",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    "user_id": "21070000000000123",
    "user_login": "inewton@example.com",
    "user_sis_id": "456-T45"
  },
  "body": {
    "course": {
      "account_id": "79",
      "id": "565",
      "name": "Computer Science I",
      "sis_source_id": "2017.100.101.101-1"
    },
    "progress": {
      "completed_at": "2019-11-05T13:38:00.218Z",
      "next_requirement_url": "http://oxana.instructure.com/courses/565/modules/items/12345",
      "requirement_completed_count": 6,
      "requirement_count": 6
    },
    "user": {
      "email": "inewton@example.com",
      "id": "123",
      "name": "Isaac Newton"
    }
  }
}

Event Body Schema

Field Description
course file.data_service_canvas_course.html
progress file.data_service_canvas_course.html
user file.data_service_canvas_course.html

course_created

Definition: The event is emitted anytime a new course is created by an end user or API request.

Trigger: Triggered when a new course is created (or copied).

Payload Example:

{
  "metadata": {
    "client_ip": "93.184.216.34",
    "developer_key_id": "170000000056",
    "event_name": "course_created",
    "event_time": "2019-11-05T13:38:00.218Z",
    "hostname": "oxana.instructure.com",
    "http_method": "POST",
    "producer": "canvas",
    "referrer": null,
    "request_id": "1dd9dc6f-2fb0-4c19-a6c5-7ee1bf3ed295",
    "root_account_id": "21070000000000001",
    "root_account_lti_guid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs.oxana.instructure.com",
    "root_account_uuid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs",
    "session_id": "ef686f8ed684abf78cbfa1f6a58112b5",
    "time_zone": "America/Denver",
    "url": "https://oxana.instructure.com/api/v1/accounts/438/courses",
    "user_account_id": "21070000000000001",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    "user_id": "21070000000000001",
    "user_login": "oxana@example.com",
    "user_sis_id": "456-T45"
  },
  "body": {
    "account_id": "21070000000000438",
    "course_id": "21070000000000056",
    "created_at": "2019-11-05T13:38:00.218Z",
    "name": "Linear Algebra",
    "updated_at": "2019-11-05T13:38:00.218Z",
    "uuid": "a1b2c3c4z9x8a1s2q5w6p9o8i7u6y5t6a2s3d4f5",
    "workflow_state": "available"
  }
}

Event Body Schema

Field Description
account_id The Account id of the updated course.
course_id The Canvas id of the updated course.
created_at The time at which this course was created.
name The name the updated course.
updated_at The time at which this course was last modified in any way.
uuid The unique id of the course.
workflow_state The state of the course (available, claimed, completed, created, deleted).

course_progress

Definition: The event is emitted when a course module requirement is met.

Trigger: Triggered when a user makes progress in a course by completing a module requirement, unless the completed requirement is the last remaining requirement in the course (in this case, a course_completed event is emitted). The following setup should be enabled in Canvas in order for this event to get triggered:

  1. Module is set to be published
  2. Module has at least one requirement enabled
  3. Student completed at least one requirement in Module

Note that these events have a 2-minute debounce, meaning that a single course_progress event will be emitted per student per course 2 minutes after the student has finished completing requirements.

Payload Example:

{
  "metadata": {
    "event_name": "course_progress",
    "event_time": "2019-11-01T19:11:13.590Z",
    "job_id": "1020020528469291",
    "job_tag": "ContextModuleProgression#evaluate!",
    "producer": "canvas",
    "root_account_id": "21070000000000001",
    "root_account_lti_guid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs.oxana.instructure.com",
    "root_account_uuid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs"
  },
  "body": {
    "course": {
      "account_id": "1",
      "id": "1234567",
      "name": "Diff Equations",
      "sis_source_id": "2017.102.102.102-2"
    },
    "progress": {
      "completed_at": null,
      "next_requirement_url": "http:/oxana.instructure.com/courses/1234567/modules/items/12345",
      "requirement_completed_count": 101,
      "requirement_count": 123
    },
    "user": {
      "email": "user@domain.tld",
      "id": "1122",
      "name": "Gottfried Leibniz"
    }
  }
}

Event Body Schema

Field Description
course file.data_service_canvas_course.html
progress file.data_service_canvas_course.html
user file.data_service_canvas_course.html

course_section_created

Definition: The event is emitted anytime a new course section is created by an end user or API request.

Trigger: Triggered when a new section is created in a course.

Payload Example:

{
  "metadata": {
    "client_ip": "93.184.216.34",
    "context_account_id": "21070000000000079",
    "context_id": "21070000000000565",
    "context_sis_source_id": "2017.100.101.101-1",
    "context_type": "Course",
    "developer_key_id": "170000000056",
    "event_name": "course_section_created",
    "event_time": "2019-11-05T20:42:54.587Z",
    "hostname": "oxana.instructure.com",
    "http_method": "POST",
    "producer": "canvas",
    "referrer": null,
    "request_id": "1dd9dc6f-2fb0-4c19-a6c5-7ee1bf3ed295",
    "root_account_id": "21070000000000011",
    "root_account_lti_guid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs.oxana.instructure.com",
    "root_account_uuid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs",
    "session_id": "ef686f8ed684abf78cbfa1f6a58112b5",
    "time_zone": "America/New_York",
    "url": "https://oxana.instructure.com/api/v1/courses/2198496/sections?grant_type=authorization_code&access_token=111~sGvKF4Yzr2AqdwShKj7CwwopgwJuMFONBqWu44Upk1F4jgkFvpXc9HY20PCU5r0&course_section%5Bname%5D=Winter%185572%4Business%1Writing&course_section%5Bsis_section_id%5D=WRIT-684-L0_16169&course_section%5Bstart_at%5D=1326-0-2T0.15510549083388048%3A0.38873681067928767%3A0.039724554014499924&course_section%5Bend_at%5D=766-2-2T0.7605609524181581%3A0.995511619163594%3A0.013954836230862355&course_section%5Brestrict_enrollments_to_section_dates%5D=true&enable_sis_reactivation=false",
    "user_account_id": "21070000000000011",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    "user_id": "21070000000000001",
    "user_login": "oxana@example.com",
    "user_sis_id": "456-T45"
  },
  "body": {
    "accepting_enrollments": true,
    "can_manually_enroll": null,
    "course_id": "565",
    "course_section_id": "1234567",
    "default_section": true,
    "end_at": "2020-06-17T04:00:00Z",
    "enrollment_term_id": "1234",
    "integration_id": "1234",
    "name": "Winter 2020 Linear Algebra",
    "nonxlist_course_id": "1234",
    "restrict_enrollments_to_section_dates": true,
    "root_account_id": "121",
    "sis_batch_id": "1234",
    "sis_source_id": "MATH-123-A12_12345",
    "start_at": "2020-01-03T05:00:00Z",
    "stuck_sis_fields": [
      "[\"course_id\"",
      " \"name\"]"
    ],
    "workflow_state": "active"
  }
}

Event Body Schema

Field Description
accepting_enrollments True if this section is open for enrollment. False or null otherwise.
can_manually_enroll Deprecated, will always be null.
course_id The Canvas id of the course that this section belongs to.
course_section_id The local Canvas id of the created course section.
default_section True if this is the default section for the course. False or null otherwise.
end_at Section end date in ISO8601 format.
enrollment_term_id The Canvas id of the enrollment term.
integration_id The integration id of the section.
name The name of this section.
nonxlist_course_id The unique identifier of the original course of a cross-listed section.
restrict_enrollments_to_section_dates True when 'Users can only participate in the course between these dates' is checked.
root_account_id Canvas id of the root account that this section is in.
sis_batch_id The SIS Batch id of the section.
sis_source_id Correlated id for the record for this course in the SIS system (assuming SIS integration is configured).
start_at Section start date in ISO8601 format.
stuck_sis_fields Array of strings of field names with the SIS stickiness field set, indicating they will not be replaced by SIS imports.
workflow_state The workflow state of the section.

course_section_updated

Definition: The event is emitted anytime a course section is updated by an end user or API request. Only changes to the fields included in the body of the event payload will emit the updated event.

Trigger: Triggered when a course section has been modified.

Payload Example:

{
  "metadata": {
    "client_ip": "93.184.216.34",
    "context_account_id": "21070000000000079",
    "context_id": "21070000001234567",
    "context_sis_source_id": "MATH-123-A12_12345",
    "context_type": "CourseSection",
    "developer_key_id": "170000000056",
    "event_name": "course_section_updated",
    "event_time": "2019-11-01T19:11:15.599Z",
    "hostname": "oxana.instructure.com",
    "http_method": "POST",
    "producer": "canvas",
    "referrer": null,
    "request_id": "1dd9dc6f-2fb0-4c19-a6c5-7ee1bf3ed295",
    "root_account_id": "21070000000000001",
    "root_account_lti_guid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs.oxana.instructure.com",
    "root_account_uuid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs",
    "session_id": "ef686f8ed684abf78cbfa1f6a58112b5",
    "time_zone": "America/Denver",
    "url": "https://oxana.instructure.com/api/v1/sections/sis_section_id:MATH-123-A12_12345/crosslist/sis_course_id:AAOE190823",
    "user_account_id": "21070000000000001",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    "user_id": "21070000000000001",
    "user_login": "oxana@example.com",
    "user_sis_id": "456-T45"
  },
  "body": {
    "accepting_enrollments": true,
    "can_manually_enroll": null,
    "course_id": "1234560",
    "course_section_id": "1234567",
    "default_section": true,
    "end_at": "2020-06-17T04:00:00Z",
    "enrollment_term_id": "1234",
    "integration_id": "1234",
    "name": "Winter 2020 Linear Algebra",
    "nonxlist_course_id": "1234",
    "restrict_enrollments_to_section_dates": true,
    "root_account_id": "1",
    "sis_batch_id": "1234",
    "sis_source_id": "MATH-123-A12_12345",
    "start_at": "2020-01-03T05:00:00Z",
    "stuck_sis_fields": [
      "course_id",
      "name"
    ],
    "workflow_state": "active"
  }
}

Event Body Schema

Field Description
accepting_enrollments True if this section is open for enrollment. False or null otherwise.
can_manually_enroll Deprecated, will always be null.
course_id The Canvas id of the course that this section belongs to.
course_section_id The local Canvas id of the created course section.
default_section True if this is the default section for the course.
end_at Section end date in ISO8601 format.
enrollment_term_id The Canvas id of the enrollment term.
integration_id The integration id of the section.
name The name of this section.
nonxlist_course_id The unique identifier of the original course of a cross-listed section.
restrict_enrollments_to_section_dates True when 'Users can only participate in the course between these dates' is checked.
root_account_id Canvas id of the root account that this section is in.
sis_batch_id The SIS Batch id of the section.
sis_source_id Correlated id for the record for this course in the SIS system (assuming SIS integration is configured).
start_at Section start date in ISO8601 format.
stuck_sis_fields Array of strings of field names with the SIS stickiness field set, indicating they will not be replaced by SIS imports.
workflow_state The workflow state of the section.

course_updated

Definition: The event is emitted anytime a course is updated by an end user or API request. Only changes to the fields included in the body of the event payload will emit the updated event.

Trigger: Triggered when the course is renamed, deleted, or other properties (except for syllabus) of a course are modified.

Payload Example:

{
  "metadata": {
    "event_name": "course_updated",
    "event_time": "2019-11-05 07:38:00 -0800",
    "job_id": "1020020528469291",
    "job_tag": "SIS::CSV::ImportRefactored#run_parallel_importer",
    "producer": "canvas",
    "root_account_id": "21070000000000001",
    "root_account_lti_guid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs.oxana.instructure.com",
    "root_account_uuid": "VicYj3cu5BIFpoZhDVU4DZumnlBrWi1grgJEzADs"
  },
  "body": {
    "account_id": "12340000000012",
    "course_id": "12340000000056",
    "created_at": "2019-11-05T13:38:00.218Z",
    "name": "Linear Algebra",
    "updated_at": "2019-11-05 07:38:00 -0800",
    "uuid": "a1b2c3c4z9x8a1s2q5w6p9o8i7u6y5t6a2s3d4f5",
    "workflow_state": "available"
  }
}

Event Body Schema

Field Description
account_id The Account id of the updated course.
course_id The Canvas id of the updated course.
created_at The time at which this course was created.
name The name the updated course.
updated_at The time at which this course was last modified in any way.
uuid The unique id of the course.
workflow_state The state of the course (available, claimed, completed, created, deleted).

Note: Timestamps will be in ISO8601 format, including an offset. Be sure to take that into account when parsing, since it’s unspecified which offset timestamps will use, and the offset may even change between different timestamps within a single event.