openapi: 3.2.0 info: title: Canvas LMS REST Assignments API version: v1 summary: The complete Canvas LMS REST API, converted from the Swagger 1.2 documents Instructure publishes under https://canvas.instructure.com/doc/api/. description: The Canvas LMS REST API covers courses, assignments, quizzes, grades, users, enrollments, accounts, files, modules, rubrics, submissions, SIS imports, LTI, analytics and account administration. contact: name: Instructure Canvas url: https://canvas.instructure.com/doc/api/ license: name: AGPL-3.0 url: https://github.com/instructure/canvas-lms/blob/master/LICENSE servers: - url: https://canvas.instructure.com/api description: Instructure-hosted Canvas (canvas.instructure.com) - url: https://{canvas_host}/api description: Any Canvas instance; Canvas is multi-tenant and self-hostable, so the host is the institution's Canvas domain. variables: canvas_host: default: canvas.instructure.com description: Your institution's Canvas hostname, e.g. school.instructure.com security: - bearerAuth: [] - oauth2: [] tags: - name: Assignments x-resource: assignments externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html paths: /v1/courses/{course_id}/assignments/{id}: delete: tags: - Assignments operationId: delete_assignment summary: Delete an assignment description: Delete the given assignment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html get: tags: - Assignments operationId: get_single_assignment summary: Get a single assignment description: Returns the assignment with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - assignment_visibility - overrides - observed_users - can_edit - score_statistics - ab_guid - peer_review - academic_integrity_pledge required: false description: 'Associations to include with the assignment. The "assignment_visibility" option requires that the Differentiated Assignments course feature be turned on. If "observed_users" is passed, submissions for observed users will also be included. For "score_statistics" to be included, the "submission" option must also be set. The "peer_review" option returns peer review sub assignment data if it exists, regardless of the Peer Review Allocation and Grading feature state. If no peer review sub assignment exists, the feature must be enabled to receive a null value; otherwise the key is omitted. The "academic_integrity_pledge" option returns the account-level academic integrity pledge text a student must accept before submitting this assignment. The key is only present when the pledge is enabled for the account; when present but the pledge does not apply to this assignment (e.g. external tool assignments or Canvas Career courses) the value is null.' - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides to the assignment, defaults to true. - name: needs_grading_count_by_section in: query schema: type: boolean required: false description: Split up "needs_grading_count" by sections into the "needs_grading_count_by_section" key, defaults to false - name: all_dates in: query schema: type: boolean required: false description: All dates associated with the assignment, if applicable responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html put: tags: - Assignments operationId: edit_assignment summary: Edit an assignment description: Modify an existing assignment. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: assignment[name]: type: string description: The assignment name. assignment[position]: type: integer format: int64 description: 'The position of this assignment in the group when displaying assignment lists.' assignment[submission_types]: type: array items: type: string description: Only applies if the assignment doesn't have student submissions. deprecated: true assignment[allowed_extensions]: type: array items: type: string description: "Allowed extensions if submission_types includes \"online_upload\"\n\nExample:\n allowed_extensions: [\"docx\",\"ppt\"]" assignment[turnitin_enabled]: type: boolean description: 'Only applies when the Turnitin plugin is enabled for a course and the submission_types array includes "online_upload". Toggles Turnitin submissions for the assignment. Will be ignored if Turnitin is not available for the course.' assignment[vericite_enabled]: type: boolean description: 'Only applies when the VeriCite plugin is enabled for a course and the submission_types array includes "online_upload". Toggles VeriCite submissions for the assignment. Will be ignored if VeriCite is not available for the course.' assignment[turnitin_settings]: type: string description: 'Settings to send along to turnitin. See Assignment object definition for format.' assignment[sis_assignment_id]: type: string description: The sis id of the Assignment assignment[integration_data]: type: string description: Data used for SIS integrations. Requires admin-level token with the "Manage SIS" permission. JSON string required. assignment[integration_id]: type: string description: Unique ID from third party integrations assignment[peer_reviews]: type: boolean description: 'If submission_types does not include external_tool,discussion_topic, online_quiz, or on_paper, determines whether or not peer reviews will be turned on for the assignment.' assignment[automatic_peer_reviews]: type: boolean description: 'Whether peer reviews will be assigned automatically by Canvas or if teachers must manually assign peer reviews. Does not apply if peer reviews are not enabled.' assignment[notify_of_update]: type: boolean description: 'If true, Canvas will send a notification to students in the class notifying them that the content has changed.' assignment[group_category_id]: type: integer format: int64 description: 'If present, the assignment will become a group assignment assigned to the group.' assignment[grade_group_students_individually]: type: integer format: int64 description: 'If this is a group assignment, teachers have the options to grade students individually. If false, Canvas will apply the assignment''s score to each member of the group. If true, the teacher can manually assign scores to each member of the group.' assignment[external_tool_tag_attributes]: type: string description: 'Hash of external tool parameters if submission_types is ["external_tool"]. See Assignment object definition for format.' assignment[points_possible]: type: number description: The maximum points possible on the assignment. assignment[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points - not_graded description: 'The strategy used for grading the assignment. The assignment defaults to "points" if this field is omitted.' assignment[due_at]: type: string format: date-time description: 'The day/time the assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[lock_at]: type: string format: date-time description: 'The day/time the assignment is locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[unlock_at]: type: string format: date-time description: 'The day/time the assignment is unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[description]: type: string description: The assignment's description, supports HTML. assignment[assignment_group_id]: type: integer format: int64 description: 'The assignment group id to put the assignment in. Defaults to the top assignment group in the course.' assignment[assignment_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: 'List of overrides for the assignment. If the +assignment[assignment_overrides]+ key is absent, any existing overrides are kept as is. If the +assignment[assignment_overrides]+ key is present, existing overrides are updated or deleted (and new ones created, as necessary) to match the provided list.' assignment[only_visible_to_overrides]: type: boolean description: 'Whether this assignment is only visible to overrides (Only useful if ''differentiated assignments'' account setting is on)' assignment[published]: type: boolean description: 'Whether this assignment is published. (Only useful if ''draft state'' account setting is on) Unpublished assignments are not visible to students.' assignment[grading_standard_id]: type: integer format: int64 description: 'The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. This will update the grading_type for the course to ''letter_grade'' unless it is already ''gpa_scale''.' assignment[omit_from_final_grade]: type: boolean description: Whether this assignment is counted towards a student's final grade. assignment[hide_in_gradebook]: type: boolean description: Whether this assignment is shown in the gradebook. assignment[moderated_grading]: type: boolean description: Whether this assignment is moderated. assignment[grader_count]: type: integer format: int64 description: 'The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors.' assignment[final_grader_id]: type: integer format: int64 description: 'The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments.' assignment[grader_comments_visible_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' comments are visible to other provisional graders. Only relevant for moderated assignments.' assignment[graders_anonymous_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' identities are hidden from other provisional graders. Only relevant for moderated assignments.' assignment[graders_names_visible_to_final_grader]: type: boolean description: 'Boolean indicating if provisional grader identities are visible to the the final grader. Only relevant for moderated assignments.' assignment[anonymous_grading]: type: boolean description: 'Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities.' assignment[allowed_attempts]: type: integer format: int64 description: 'The number of submission attempts allowed for this assignment. Set to -1 or null for unlimited attempts.' assignment[annotatable_attachment_id]: type: integer format: int64 description: 'The Attachment ID of the document being annotated. Only applies when submission_types includes "student_annotation".' assignment[asset_processors]: type: array items: type: array items: {} description: 'Document processors for this assignment. New document processors can only be added via the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication. Deletion of document processors (passing an empty array) is allowed via API.' assignment[force_updated_at]: type: boolean description: If true, updated_at will be set even if no changes were made. assignment[peer_review][points_possible]: type: number description: The maximum points possible for peer reviews. assignment[peer_review][grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: 'The strategy used for grading peer reviews. Defaults to "points" if this field is omitted.' assignment[peer_review][due_at]: type: string format: date-time description: 'The day/time the peer reviews are due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.' assignment[peer_review][lock_at]: type: string format: date-time description: 'The day/time the peer reviews are locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.' assignment[peer_review][unlock_at]: type: string format: date-time description: 'The day/time the peer reviews are unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.' assignment[peer_review][peer_review_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: 'List of overrides for the peer reviews. When updating overrides: - Include "id" to update an existing override - Omit "id" to create a new override - Omit an override from the list to delete it' application/x-www-form-urlencoded: schema: type: object properties: assignment[name]: type: string description: The assignment name. assignment[position]: type: integer format: int64 description: 'The position of this assignment in the group when displaying assignment lists.' assignment[submission_types]: type: array items: type: string description: Only applies if the assignment doesn't have student submissions. deprecated: true assignment[allowed_extensions]: type: array items: type: string description: "Allowed extensions if submission_types includes \"online_upload\"\n\nExample:\n allowed_extensions: [\"docx\",\"ppt\"]" assignment[turnitin_enabled]: type: boolean description: 'Only applies when the Turnitin plugin is enabled for a course and the submission_types array includes "online_upload". Toggles Turnitin submissions for the assignment. Will be ignored if Turnitin is not available for the course.' assignment[vericite_enabled]: type: boolean description: 'Only applies when the VeriCite plugin is enabled for a course and the submission_types array includes "online_upload". Toggles VeriCite submissions for the assignment. Will be ignored if VeriCite is not available for the course.' assignment[turnitin_settings]: type: string description: 'Settings to send along to turnitin. See Assignment object definition for format.' assignment[sis_assignment_id]: type: string description: The sis id of the Assignment assignment[integration_data]: type: string description: Data used for SIS integrations. Requires admin-level token with the "Manage SIS" permission. JSON string required. assignment[integration_id]: type: string description: Unique ID from third party integrations assignment[peer_reviews]: type: boolean description: 'If submission_types does not include external_tool,discussion_topic, online_quiz, or on_paper, determines whether or not peer reviews will be turned on for the assignment.' assignment[automatic_peer_reviews]: type: boolean description: 'Whether peer reviews will be assigned automatically by Canvas or if teachers must manually assign peer reviews. Does not apply if peer reviews are not enabled.' assignment[notify_of_update]: type: boolean description: 'If true, Canvas will send a notification to students in the class notifying them that the content has changed.' assignment[group_category_id]: type: integer format: int64 description: 'If present, the assignment will become a group assignment assigned to the group.' assignment[grade_group_students_individually]: type: integer format: int64 description: 'If this is a group assignment, teachers have the options to grade students individually. If false, Canvas will apply the assignment''s score to each member of the group. If true, the teacher can manually assign scores to each member of the group.' assignment[external_tool_tag_attributes]: type: string description: 'Hash of external tool parameters if submission_types is ["external_tool"]. See Assignment object definition for format.' assignment[points_possible]: type: number description: The maximum points possible on the assignment. assignment[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points - not_graded description: 'The strategy used for grading the assignment. The assignment defaults to "points" if this field is omitted.' assignment[due_at]: type: string format: date-time description: 'The day/time the assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[lock_at]: type: string format: date-time description: 'The day/time the assignment is locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[unlock_at]: type: string format: date-time description: 'The day/time the assignment is unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[description]: type: string description: The assignment's description, supports HTML. assignment[assignment_group_id]: type: integer format: int64 description: 'The assignment group id to put the assignment in. Defaults to the top assignment group in the course.' assignment[assignment_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: 'List of overrides for the assignment. If the +assignment[assignment_overrides]+ key is absent, any existing overrides are kept as is. If the +assignment[assignment_overrides]+ key is present, existing overrides are updated or deleted (and new ones created, as necessary) to match the provided list.' assignment[only_visible_to_overrides]: type: boolean description: 'Whether this assignment is only visible to overrides (Only useful if ''differentiated assignments'' account setting is on)' assignment[published]: type: boolean description: 'Whether this assignment is published. (Only useful if ''draft state'' account setting is on) Unpublished assignments are not visible to students.' assignment[grading_standard_id]: type: integer format: int64 description: 'The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. This will update the grading_type for the course to ''letter_grade'' unless it is already ''gpa_scale''.' assignment[omit_from_final_grade]: type: boolean description: Whether this assignment is counted towards a student's final grade. assignment[hide_in_gradebook]: type: boolean description: Whether this assignment is shown in the gradebook. assignment[moderated_grading]: type: boolean description: Whether this assignment is moderated. assignment[grader_count]: type: integer format: int64 description: 'The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors.' assignment[final_grader_id]: type: integer format: int64 description: 'The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments.' assignment[grader_comments_visible_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' comments are visible to other provisional graders. Only relevant for moderated assignments.' assignment[graders_anonymous_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' identities are hidden from other provisional graders. Only relevant for moderated assignments.' assignment[graders_names_visible_to_final_grader]: type: boolean description: 'Boolean indicating if provisional grader identities are visible to the the final grader. Only relevant for moderated assignments.' assignment[anonymous_grading]: type: boolean description: 'Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities.' assignment[allowed_attempts]: type: integer format: int64 description: 'The number of submission attempts allowed for this assignment. Set to -1 or null for unlimited attempts.' assignment[annotatable_attachment_id]: type: integer format: int64 description: 'The Attachment ID of the document being annotated. Only applies when submission_types includes "student_annotation".' assignment[asset_processors]: type: array items: type: array items: {} description: 'Document processors for this assignment. New document processors can only be added via the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication. Deletion of document processors (passing an empty array) is allowed via API.' assignment[force_updated_at]: type: boolean description: If true, updated_at will be set even if no changes were made. assignment[peer_review][points_possible]: type: number description: The maximum points possible for peer reviews. assignment[peer_review][grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: 'The strategy used for grading peer reviews. Defaults to "points" if this field is omitted.' assignment[peer_review][due_at]: type: string format: date-time description: 'The day/time the peer reviews are due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.' assignment[peer_review][lock_at]: type: string format: date-time description: 'The day/time the peer reviews are locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.' assignment[peer_review][unlock_at]: type: string format: date-time description: 'The day/time the peer reviews are unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.' assignment[peer_review][peer_review_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: 'List of overrides for the peer reviews. When updating overrides: - Include "id" to update an existing override - Omit "id" to create a new override - Omit an override from the list to delete it' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments: get: tags: - Assignments operationId: list_assignments_assignments summary: List assignments description: Returns the paginated list of assignments for the current course or assignment group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - assignment_visibility - all_dates - overrides - observed_users - can_edit - score_statistics - ab_guid required: false description: 'Optional information to include with each assignment: submission:: The current user''s current +Submission+ assignment_visibility:: An array of ids of students who can see the assignment all_dates:: An array of +AssignmentDate+ structures, one for each override, and also a +base+ if the assignment has an "Everyone" / "Everyone Else" date overrides:: An array of +AssignmentOverride+ structures observed_users:: An array of submissions for observed users can_edit:: an extra Boolean value will be included with each +Assignment+ (and +AssignmentDate+ if +all_dates+ is supplied) to indicate whether the caller can edit the assignment or date. Moderated grading and closed grading periods may restrict a user''s ability to edit an assignment. score_statistics:: An object containing min, max, and mean score on this assignment. This will not be included for students if there are less than 5 graded assignments or if disabled by the instructor. Only valid if ''submission'' is also included. ab_guid:: An array of guid strings for academic benchmarks' - name: search_term in: query schema: type: string required: false description: The partial title of the assignments to match and return. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides for each assignment, defaults to true. - name: needs_grading_count_by_section in: query schema: type: boolean required: false description: Split up "needs_grading_count" by sections into the "needs_grading_count_by_section" key, defaults to false - name: bucket in: query schema: type: string enum: - past - overdue - undated - ungraded - unsubmitted - upcoming - future required: false description: If included, only return certain assignments depending on due date and submission status. - name: assignment_ids in: query schema: type: array items: type: string required: false description: if set, return only assignments specified - name: order_by in: query schema: type: string enum: - position - name - due_at required: false description: Determines the order of the assignments. Defaults to "position". - name: post_to_sis in: query schema: type: boolean required: false description: Return only assignments that have post_to_sis set or not set. - name: new_quizzes in: query schema: type: boolean required: false description: Return only New Quizzes assignments responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html post: tags: - Assignments operationId: create_assignment summary: Create an assignment description: 'Create a new assignment for this course. The assignment is created in the active state.' parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: assignment[name]: type: string description: The assignment name. assignment[position]: type: integer format: int64 description: 'The position of this assignment in the group when displaying assignment lists.' assignment[submission_types]: type: array items: type: string enum: - online_quiz - none - on_paper - discussion_topic - external_tool - online_upload - online_text_entry - online_url - media_recording - student_annotation description: "List of supported submission types for the assignment.\nUnless the assignment is allowing online submissions, the array should\nonly have one element.\n\nIf not allowing online submissions, your options are:\n \"online_quiz\"\n \"none\"\n \"on_paper\"\n \"discussion_topic\"\n \"external_tool\"\n\nIf you are allowing online submissions, you can have one or many\nallowed submission types:\n\n \"online_upload\"\n \"online_text_entry\"\n \"online_url\"\n \"media_recording\" (Only valid when the Kaltura plugin is enabled)\n \"student_annotation\"" assignment[allowed_extensions]: type: array items: type: string description: "Allowed extensions if submission_types includes \"online_upload\"\n\nExample:\n allowed_extensions: [\"docx\",\"ppt\"]" assignment[turnitin_enabled]: type: boolean description: 'Only applies when the Turnitin plugin is enabled for a course and the submission_types array includes "online_upload". Toggles Turnitin submissions for the assignment. Will be ignored if Turnitin is not available for the course.' assignment[vericite_enabled]: type: boolean description: 'Only applies when the VeriCite plugin is enabled for a course and the submission_types array includes "online_upload". Toggles VeriCite submissions for the assignment. Will be ignored if VeriCite is not available for the course.' assignment[turnitin_settings]: type: string description: 'Settings to send along to turnitin. See Assignment object definition for format.' assignment[integration_data]: type: string description: Data used for SIS integrations. Requires admin-level token with the "Manage SIS" permission. JSON string required. assignment[integration_id]: type: string description: Unique ID from third party integrations assignment[peer_reviews]: type: boolean description: 'If submission_types does not include external_tool,discussion_topic, online_quiz, or on_paper, determines whether or not peer reviews will be turned on for the assignment.' assignment[automatic_peer_reviews]: type: boolean description: 'Whether peer reviews will be assigned automatically by Canvas or if teachers must manually assign peer reviews. Does not apply if peer reviews are not enabled.' assignment[notify_of_update]: type: boolean description: 'If true, Canvas will send a notification to students in the class notifying them that the content has changed.' assignment[group_category_id]: type: integer format: int64 description: 'If present, the assignment will become a group assignment assigned to the group.' assignment[grade_group_students_individually]: type: integer format: int64 description: 'If this is a group assignment, teachers have the options to grade students individually. If false, Canvas will apply the assignment''s score to each member of the group. If true, the teacher can manually assign scores to each member of the group.' assignment[external_tool_tag_attributes]: type: string description: 'Hash of external tool parameters if submission_types is ["external_tool"]. See Assignment object definition for format.' assignment[points_possible]: type: number description: The maximum points possible on the assignment. assignment[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points - not_graded description: 'The strategy used for grading the assignment. The assignment defaults to "points" if this field is omitted.' assignment[due_at]: type: string format: date-time description: 'The day/time the assignment is due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[lock_at]: type: string format: date-time description: 'The day/time the assignment is locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[unlock_at]: type: string format: date-time description: 'The day/time the assignment is unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[description]: type: string description: The assignment's description, supports HTML. assignment[assignment_group_id]: type: integer format: int64 description: 'The assignment group id to put the assignment in. Defaults to the top assignment group in the course.' assignment[assignment_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: List of overrides for the assignment. assignment[only_visible_to_overrides]: type: boolean description: 'Whether this assignment is only visible to overrides (Only useful if ''differentiated assignments'' account setting is on)' assignment[published]: type: boolean description: 'Whether this assignment is published. (Only useful if ''draft state'' account setting is on) Unpublished assignments are not visible to students.' assignment[grading_standard_id]: type: integer format: int64 description: 'The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. This will update the grading_type for the course to ''letter_grade'' unless it is already ''gpa_scale''.' assignment[omit_from_final_grade]: type: boolean description: Whether this assignment is counted towards a student's final grade. assignment[hide_in_gradebook]: type: boolean description: Whether this assignment is shown in the gradebook. assignment[quiz_lti]: type: boolean description: 'Whether this assignment should use the Quizzes 2 LTI tool. Sets the submission type to ''external_tool'' and configures the external tool attributes to use the Quizzes 2 LTI tool configured for this course. Has no effect if no Quizzes 2 LTI tool is configured.' assignment[moderated_grading]: type: boolean description: Whether this assignment is moderated. assignment[grader_count]: type: integer format: int64 description: 'The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors.' assignment[final_grader_id]: type: integer format: int64 description: 'The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments.' assignment[grader_comments_visible_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' comments are visible to other provisional graders. Only relevant for moderated assignments.' assignment[graders_anonymous_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' identities are hidden from other provisional graders. Only relevant for moderated assignments.' assignment[graders_names_visible_to_final_grader]: type: boolean description: 'Boolean indicating if provisional grader identities are visible to the the final grader. Only relevant for moderated assignments.' assignment[anonymous_grading]: type: boolean description: 'Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities.' assignment[allowed_attempts]: type: integer format: int64 description: The number of submission attempts allowed for this assignment. Set to -1 for unlimited attempts. assignment[annotatable_attachment_id]: type: integer format: int64 description: 'The Attachment ID of the document being annotated. Only applies when submission_types includes "student_annotation".' assignment[asset_processors]: type: array items: type: array items: {} description: 'Document processors for this assignment. New document processors can only be added via the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication. Deletion of document processors (passing an empty array) is allowed via API.' assignment[peer_review][points_possible]: type: number description: The maximum points possible for peer reviews. assignment[peer_review][grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: 'The strategy used for grading peer reviews. Defaults to "points" if this field is omitted.' assignment[peer_review][due_at]: type: string format: date-time description: 'The day/time the peer reviews are due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.' assignment[peer_review][lock_at]: type: string format: date-time description: 'The day/time the peer reviews are locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.' assignment[peer_review][unlock_at]: type: string format: date-time description: 'The day/time the peer reviews are unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.' assignment[peer_review][peer_review_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: List of overrides for the peer reviews. required: - assignment[name] application/x-www-form-urlencoded: schema: type: object properties: assignment[name]: type: string description: The assignment name. assignment[position]: type: integer format: int64 description: 'The position of this assignment in the group when displaying assignment lists.' assignment[submission_types]: type: array items: type: string enum: - online_quiz - none - on_paper - discussion_topic - external_tool - online_upload - online_text_entry - online_url - media_recording - student_annotation description: "List of supported submission types for the assignment.\nUnless the assignment is allowing online submissions, the array should\nonly have one element.\n\nIf not allowing online submissions, your options are:\n \"online_quiz\"\n \"none\"\n \"on_paper\"\n \"discussion_topic\"\n \"external_tool\"\n\nIf you are allowing online submissions, you can have one or many\nallowed submission types:\n\n \"online_upload\"\n \"online_text_entry\"\n \"online_url\"\n \"media_recording\" (Only valid when the Kaltura plugin is enabled)\n \"student_annotation\"" assignment[allowed_extensions]: type: array items: type: string description: "Allowed extensions if submission_types includes \"online_upload\"\n\nExample:\n allowed_extensions: [\"docx\",\"ppt\"]" assignment[turnitin_enabled]: type: boolean description: 'Only applies when the Turnitin plugin is enabled for a course and the submission_types array includes "online_upload". Toggles Turnitin submissions for the assignment. Will be ignored if Turnitin is not available for the course.' assignment[vericite_enabled]: type: boolean description: 'Only applies when the VeriCite plugin is enabled for a course and the submission_types array includes "online_upload". Toggles VeriCite submissions for the assignment. Will be ignored if VeriCite is not available for the course.' assignment[turnitin_settings]: type: string description: 'Settings to send along to turnitin. See Assignment object definition for format.' assignment[integration_data]: type: string description: Data used for SIS integrations. Requires admin-level token with the "Manage SIS" permission. JSON string required. assignment[integration_id]: type: string description: Unique ID from third party integrations assignment[peer_reviews]: type: boolean description: 'If submission_types does not include external_tool,discussion_topic, online_quiz, or on_paper, determines whether or not peer reviews will be turned on for the assignment.' assignment[automatic_peer_reviews]: type: boolean description: 'Whether peer reviews will be assigned automatically by Canvas or if teachers must manually assign peer reviews. Does not apply if peer reviews are not enabled.' assignment[notify_of_update]: type: boolean description: 'If true, Canvas will send a notification to students in the class notifying them that the content has changed.' assignment[group_category_id]: type: integer format: int64 description: 'If present, the assignment will become a group assignment assigned to the group.' assignment[grade_group_students_individually]: type: integer format: int64 description: 'If this is a group assignment, teachers have the options to grade students individually. If false, Canvas will apply the assignment''s score to each member of the group. If true, the teacher can manually assign scores to each member of the group.' assignment[external_tool_tag_attributes]: type: string description: 'Hash of external tool parameters if submission_types is ["external_tool"]. See Assignment object definition for format.' assignment[points_possible]: type: number description: The maximum points possible on the assignment. assignment[grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points - not_graded description: 'The strategy used for grading the assignment. The assignment defaults to "points" if this field is omitted.' assignment[due_at]: type: string format: date-time description: 'The day/time the assignment is due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[lock_at]: type: string format: date-time description: 'The day/time the assignment is locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[unlock_at]: type: string format: date-time description: 'The day/time the assignment is unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z.' assignment[description]: type: string description: The assignment's description, supports HTML. assignment[assignment_group_id]: type: integer format: int64 description: 'The assignment group id to put the assignment in. Defaults to the top assignment group in the course.' assignment[assignment_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: List of overrides for the assignment. assignment[only_visible_to_overrides]: type: boolean description: 'Whether this assignment is only visible to overrides (Only useful if ''differentiated assignments'' account setting is on)' assignment[published]: type: boolean description: 'Whether this assignment is published. (Only useful if ''draft state'' account setting is on) Unpublished assignments are not visible to students.' assignment[grading_standard_id]: type: integer format: int64 description: 'The grading standard id to set for the course. If no value is provided for this argument the current grading_standard will be un-set from this course. This will update the grading_type for the course to ''letter_grade'' unless it is already ''gpa_scale''.' assignment[omit_from_final_grade]: type: boolean description: Whether this assignment is counted towards a student's final grade. assignment[hide_in_gradebook]: type: boolean description: Whether this assignment is shown in the gradebook. assignment[quiz_lti]: type: boolean description: 'Whether this assignment should use the Quizzes 2 LTI tool. Sets the submission type to ''external_tool'' and configures the external tool attributes to use the Quizzes 2 LTI tool configured for this course. Has no effect if no Quizzes 2 LTI tool is configured.' assignment[moderated_grading]: type: boolean description: Whether this assignment is moderated. assignment[grader_count]: type: integer format: int64 description: 'The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors.' assignment[final_grader_id]: type: integer format: int64 description: 'The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments.' assignment[grader_comments_visible_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' comments are visible to other provisional graders. Only relevant for moderated assignments.' assignment[graders_anonymous_to_graders]: type: boolean description: 'Boolean indicating if provisional graders'' identities are hidden from other provisional graders. Only relevant for moderated assignments.' assignment[graders_names_visible_to_final_grader]: type: boolean description: 'Boolean indicating if provisional grader identities are visible to the the final grader. Only relevant for moderated assignments.' assignment[anonymous_grading]: type: boolean description: 'Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities.' assignment[allowed_attempts]: type: integer format: int64 description: The number of submission attempts allowed for this assignment. Set to -1 for unlimited attempts. assignment[annotatable_attachment_id]: type: integer format: int64 description: 'The Attachment ID of the document being annotated. Only applies when submission_types includes "student_annotation".' assignment[asset_processors]: type: array items: type: array items: {} description: 'Document processors for this assignment. New document processors can only be added via the interactive LTI Deep Linking flow (in a browser), not via API token or JWT authentication. Deletion of document processors (passing an empty array) is allowed via API.' assignment[peer_review][points_possible]: type: number description: The maximum points possible for peer reviews. assignment[peer_review][grading_type]: type: string enum: - pass_fail - percent - letter_grade - gpa_scale - points description: 'The strategy used for grading peer reviews. Defaults to "points" if this field is omitted.' assignment[peer_review][due_at]: type: string format: date-time description: 'The day/time the peer reviews are due. Must be between the lock dates if there are lock dates. Accepts times in ISO 8601 format, e.g. 2025-08-20T12:10:00Z.' assignment[peer_review][lock_at]: type: string format: date-time description: 'The day/time the peer reviews are locked after. Must be after the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-25T12:10:00Z.' assignment[peer_review][unlock_at]: type: string format: date-time description: 'The day/time the peer reviews are unlocked. Must be before the due date if there is a due date. Accepts times in ISO 8601 format, e.g. 2025-08-15T12:10:00Z.' assignment[peer_review][peer_review_overrides]: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: List of overrides for the peer reviews. required: - assignment[name] responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignment_groups/{assignment_group_id}/assignments: get: tags: - Assignments operationId: list_assignments_assignment_groups summary: List assignments description: Returns the paginated list of assignments for the current course or assignment group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_group_id in: path schema: type: string required: true description: ID - name: include in: query schema: type: array items: type: string enum: - submission - assignment_visibility - all_dates - overrides - observed_users - can_edit - score_statistics - ab_guid required: false description: 'Optional information to include with each assignment: submission:: The current user''s current +Submission+ assignment_visibility:: An array of ids of students who can see the assignment all_dates:: An array of +AssignmentDate+ structures, one for each override, and also a +base+ if the assignment has an "Everyone" / "Everyone Else" date overrides:: An array of +AssignmentOverride+ structures observed_users:: An array of submissions for observed users can_edit:: an extra Boolean value will be included with each +Assignment+ (and +AssignmentDate+ if +all_dates+ is supplied) to indicate whether the caller can edit the assignment or date. Moderated grading and closed grading periods may restrict a user''s ability to edit an assignment. score_statistics:: An object containing min, max, and mean score on this assignment. This will not be included for students if there are less than 5 graded assignments or if disabled by the instructor. Only valid if ''submission'' is also included. ab_guid:: An array of guid strings for academic benchmarks' - name: search_term in: query schema: type: string required: false description: The partial title of the assignments to match and return. - name: override_assignment_dates in: query schema: type: boolean required: false description: Apply assignment overrides for each assignment, defaults to true. - name: needs_grading_count_by_section in: query schema: type: boolean required: false description: Split up "needs_grading_count" by sections into the "needs_grading_count_by_section" key, defaults to false - name: bucket in: query schema: type: string enum: - past - overdue - undated - ungraded - unsubmitted - upcoming - future required: false description: If included, only return certain assignments depending on due date and submission status. - name: assignment_ids in: query schema: type: array items: type: string required: false description: if set, return only assignments specified - name: order_by in: query schema: type: string enum: - position - name - due_at required: false description: Determines the order of the assignments. Defaults to "position". - name: post_to_sis in: query schema: type: boolean required: false description: Return only assignments that have post_to_sis set or not set. - name: new_quizzes in: query schema: type: boolean required: false description: Return only New Quizzes assignments responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/users/{user_id}/courses/{course_id}/assignments: get: tags: - Assignments operationId: list_assignments_for_user summary: List assignments for user description: 'Returns the paginated list of assignments for the specified user if the current user has rights to view. See {api:AssignmentsApiController#index List assignments} for valid arguments.' parameters: - name: user_id in: path schema: type: string required: true description: ID - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/duplicate: post: tags: - Assignments operationId: duplicate_assignment summary: Duplicate assignment description: Duplicate an assignment and return a json based on result_type argument. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: result_type: type: string enum: - Quiz description: 'Optional information: When the root account has the feature `newquizzes_on_quiz_page` enabled and this argument is set to "Quiz" the response will be serialized into a {file:quizzes.html#Quiz quiz format}; When this argument isn''t specified the response will be serialized into an assignment format;' application/x-www-form-urlencoded: schema: type: object properties: result_type: type: string enum: - Quiz description: 'Optional information: When the root account has the feature `newquizzes_on_quiz_page` enabled and this argument is set to "Quiz" the response will be serialized into a {file:quizzes.html#Quiz quiz format}; When this argument isn''t specified the response will be serialized into an assignment format;' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Assignment' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/users/{user_id}/group_members: get: tags: - Assignments operationId: list_group_members_for_student_on_assignment summary: List group members for a student on an assignment description: Returns student ids and names for the group. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/BasicUser' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/bulk_update: put: tags: - Assignments operationId: bulk_update_assignment_dates summary: Bulk update assignment dates description: 'Update due dates and availability dates for multiple assignments in a course. Accepts a JSON array of objects containing two keys each: +id+, the assignment id, and +all_dates+, an array of +AssignmentDate+ structures containing the base and/or override dates for the assignment, as returned from the {api:AssignmentsApiController#index List assignments} endpoint with +include[]=all_dates+. This endpoint cannot create or destroy assignment overrides; any existing assignment overrides that are not referenced in the arguments will be left alone. If an override is given, any dates that are not supplied with it will be defaulted. To clear a date, specify null explicitly. All referenced assignments will be validated before any are saved. A list of errors will be returned if any provided dates are invalid, and no changes will be saved. The bulk update is performed in a background job, use the {api:ProgressController#show Progress API} to check its status.' parameters: - name: course_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/overrides: get: tags: - Assignments operationId: list_assignment_overrides summary: List assignment overrides description: 'Returns the paginated list of overrides for this assignment that target sections/groups/students visible to the current user.' parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html post: tags: - Assignments operationId: create_assignment_override summary: Create an assignment override description: 'One of student_ids, group_id, or course_section_id must be present. At most one should be present; if multiple are present only the most specific (student_ids first, then group_id, then course_section_id) is used and any others are ignored.' parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: assignment_override[student_ids]: type: array items: type: integer description: 'The IDs of the override''s target students. If present, the IDs must each identify a user with an active student enrollment in the course that is not already targetted by a different adhoc override.' assignment_override[title]: type: string description: 'The title of the adhoc assignment override. Required if student_ids is present, ignored otherwise (the title is set to the name of the targetted group or section instead).' assignment_override[group_id]: type: integer format: int64 description: 'The ID of the override''s target group. If present, the following conditions must be met for the override to be successful: 1. the assignment MUST be a group assignment (a group_category_id is assigned to it) 2. the ID must identify an active group in the group set the assignment is in 3. the ID must not be targetted by a different override See {Appendix: Group assignments} for more info.' assignment_override[course_section_id]: type: integer format: int64 description: 'The ID of the override''s target section. If present, must identify an active section of the assignment''s course not already targetted by a different override.' assignment_override[due_at]: type: string format: date-time description: 'The day/time the overridden assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect due date. May be present but null to indicate the override removes any previous due date.' assignment_override[unlock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes unlocked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the unlock date. May be present but null to indicate the override removes any previous unlock date.' assignment_override[lock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes locked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the lock date. May be present but null to indicate the override removes any previous lock date.' application/x-www-form-urlencoded: schema: type: object properties: assignment_override[student_ids]: type: array items: type: integer description: 'The IDs of the override''s target students. If present, the IDs must each identify a user with an active student enrollment in the course that is not already targetted by a different adhoc override.' assignment_override[title]: type: string description: 'The title of the adhoc assignment override. Required if student_ids is present, ignored otherwise (the title is set to the name of the targetted group or section instead).' assignment_override[group_id]: type: integer format: int64 description: 'The ID of the override''s target group. If present, the following conditions must be met for the override to be successful: 1. the assignment MUST be a group assignment (a group_category_id is assigned to it) 2. the ID must identify an active group in the group set the assignment is in 3. the ID must not be targetted by a different override See {Appendix: Group assignments} for more info.' assignment_override[course_section_id]: type: integer format: int64 description: 'The ID of the override''s target section. If present, must identify an active section of the assignment''s course not already targetted by a different override.' assignment_override[due_at]: type: string format: date-time description: 'The day/time the overridden assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect due date. May be present but null to indicate the override removes any previous due date.' assignment_override[unlock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes unlocked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the unlock date. May be present but null to indicate the override removes any previous unlock date.' assignment_override[lock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes locked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the lock date. May be present but null to indicate the override removes any previous lock date.' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id}: get: tags: - Assignments operationId: get_single_assignment_override summary: Get a single assignment override description: Returns details of the the override with the given id. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html put: tags: - Assignments operationId: update_assignment_override summary: Update an assignment override description: 'All current overridden values must be supplied if they are to be retained; e.g. if due_at was overridden, but this PUT omits a value for due_at, due_at will no longer be overridden. If the override is adhoc and student_ids is not supplied, the target override set is unchanged. Target override sets cannot be changed for group or section overrides.' parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: assignment_override[student_ids]: type: array items: type: integer description: 'The IDs of the override''s target students. If present, the IDs must each identify a user with an active student enrollment in the course that is not already targetted by a different adhoc override. Ignored unless the override being updated is adhoc.' assignment_override[title]: type: string description: 'The title of an adhoc assignment override. Ignored unless the override being updated is adhoc.' assignment_override[due_at]: type: string format: date-time description: 'The day/time the overridden assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect due date. May be present but null to indicate the override removes any previous due date.' assignment_override[unlock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes unlocked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the unlock date. May be present but null to indicate the override removes any previous unlock date.' assignment_override[lock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes locked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the lock date. May be present but null to indicate the override removes any previous lock date.' application/x-www-form-urlencoded: schema: type: object properties: assignment_override[student_ids]: type: array items: type: integer description: 'The IDs of the override''s target students. If present, the IDs must each identify a user with an active student enrollment in the course that is not already targetted by a different adhoc override. Ignored unless the override being updated is adhoc.' assignment_override[title]: type: string description: 'The title of an adhoc assignment override. Ignored unless the override being updated is adhoc.' assignment_override[due_at]: type: string format: date-time description: 'The day/time the overridden assignment is due. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect due date. May be present but null to indicate the override removes any previous due date.' assignment_override[unlock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes unlocked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the unlock date. May be present but null to indicate the override removes any previous unlock date.' assignment_override[lock_at]: type: string format: date-time description: 'The day/time the overridden assignment becomes locked. Accepts times in ISO 8601 format, e.g. 2014-10-21T18:48:00Z. If absent, this override will not affect the lock date. May be present but null to indicate the override removes any previous lock date.' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html delete: tags: - Assignments operationId: delete_assignment_override summary: Delete an assignment override description: Deletes an override and returns its former details. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/groups/{group_id}/assignments/{assignment_id}/override: get: tags: - Assignments operationId: redirect_to_assignment_override_for_group summary: Redirect to the assignment override for a group description: 'Responds with a redirect to the override for the given group, if any (404 otherwise).' parameters: - name: group_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/sections/{course_section_id}/assignments/{assignment_id}/override: get: tags: - Assignments operationId: redirect_to_assignment_override_for_section summary: Redirect to the assignment override for a section description: 'Responds with a redirect to the override for the given section, if any (404 otherwise).' parameters: - name: course_section_id in: path schema: type: string required: true description: ID - name: assignment_id in: path schema: type: string required: true description: ID responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html /v1/courses/{course_id}/assignments/overrides: get: tags: - Assignments operationId: batch_retrieve_overrides_in_course summary: Batch retrieve overrides in a course description: 'Returns a list of specified overrides in this course, providing they target sections/groups/students visible to the current user. Returns null elements in the list for requests that were not found.' parameters: - name: course_id in: path schema: type: string required: true description: ID - name: assignment_overrides[id] in: query schema: type: array items: type: string required: true description: Ids of overrides to retrieve - name: assignment_overrides[assignment_id] in: query schema: type: array items: type: string required: true description: Ids of assignments for each override responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html post: tags: - Assignments operationId: batch_create_overrides_in_course summary: Batch create overrides in a course description: 'Creates the specified overrides for each assignment. Handles creation in a transaction, so all records are created or none are. One of student_ids, group_id, or course_section_id must be present. At most one should be present; if multiple are present only the most specific (student_ids first, then group_id, then course_section_id) is used and any others are ignored. Errors are reported in an errors attribute, an array of errors corresponding to inputs. Global errors will be reported as a single element errors array' parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: assignment_overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: 'Attributes for the new assignment overrides. See {api:AssignmentOverridesController#create Create an assignment override} for available attributes' required: - assignment_overrides application/x-www-form-urlencoded: schema: type: object properties: assignment_overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: 'Attributes for the new assignment overrides. See {api:AssignmentOverridesController#create Create an assignment override} for available attributes' required: - assignment_overrides responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html put: tags: - Assignments operationId: batch_update_overrides_in_course summary: Batch update overrides in a course description: 'Updates a list of specified overrides for each assignment. Handles overrides in a transaction, so either all updates are applied or none. See {api:AssignmentOverridesController#update Update an assignment override} for available attributes. All current overridden values must be supplied if they are to be retained; e.g. if due_at was overridden, but this PUT omits a value for due_at, due_at will no longer be overridden. If the override is adhoc and student_ids is not supplied, the target override set is unchanged. Target override sets cannot be changed for group or section overrides. Errors are reported in an errors attribute, an array of errors corresponding to inputs. Global errors will be reported as a single element errors array' parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: assignment_overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: Attributes for the updated overrides. required: - assignment_overrides application/x-www-form-urlencoded: schema: type: object properties: assignment_overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: Attributes for the updated overrides. required: - assignment_overrides responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentOverride' externalDocs: url: https://canvas.instructure.com/doc/api/assignments.html components: schemas: AssignmentOverride: type: object properties: id: type: integer example: 4 description: the ID of the assignment override assignment_id: type: integer example: 123 description: the ID of the assignment the override applies to (present if the override applies to an assignment) quiz_id: type: integer example: 123 description: the ID of the quiz the override applies to (present if the override applies to a quiz) context_module_id: type: integer example: 123 description: the ID of the module the override applies to (present if the override applies to a module) discussion_topic_id: type: integer example: 123 description: the ID of the discussion the override applies to (present if the override applies to an ungraded discussion) wiki_page_id: type: integer example: 123 description: the ID of the page the override applies to (present if the override applies to a page) attachment_id: type: integer example: 123 description: the ID of the file the override applies to (present if the override applies to a file) student_ids: type: array items: type: integer example: - 1 - 2 - 3 description: the IDs of the override's target students (present if the override targets an ad-hoc set of students) group_id: type: integer example: 2 description: the ID of the override's target group (present if the override targets a group and the assignment is a group assignment) course_section_id: type: integer example: 1 description: the ID of the overrides's target section (present if the override targets a section) title: type: string example: an assignment override description: the title of the override due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the overridden due at (present if due_at is overridden) all_day: type: boolean example: true description: the overridden all day flag (present if due_at is overridden) all_day_date: type: string format: date-time example: '2012-07-01' description: the overridden all day date (present if due_at is overridden) unlock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the overridden unlock at (present if unlock_at is overridden) lock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: the overridden lock at, if any (present if lock_at is overridden) NeedsGradingCount: type: object properties: section_id: type: string example: '123456' description: The section ID needs_grading_count: type: integer example: 5 description: Number of submissions that need grading description: Used by Assignment model Assignment: type: object properties: id: type: integer example: 4 description: the ID of the assignment name: type: string example: some assignment description: the name of the assignment description: type: string example:

Do the following:

... description: the assignment description, in an HTML fragment created_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: The time at which this assignment was originally created updated_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: The time at which this assignment was last modified in any way due_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the due date for the assignment. returns null if not present. NOTE: If this assignment has assignment overrides, this field will be the due date as it applies to the user requesting information from the API.' lock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the lock date (assignment is locked after this date). returns null if not present. NOTE: If this assignment has assignment overrides, this field will be the lock date as it applies to the user requesting information from the API.' unlock_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'the unlock date (assignment is unlocked after this date) returns null if not present NOTE: If this assignment has assignment overrides, this field will be the unlock date as it applies to the user requesting information from the API.' has_overrides: type: boolean example: true description: whether this assignment has overrides all_dates: type: array items: $ref: '#/components/schemas/AssignmentDate' description: (Optional) all dates associated with the assignment, if applicable course_id: type: integer example: 123 description: the ID of the course the assignment belongs to html_url: type: string example: https://... description: the URL to the assignment's web page submissions_download_url: type: string example: https://example.com/courses/:course_id/assignments/:id/submissions?zip=1 description: the URL to download all submissions as a zip assignment_group_id: type: integer example: 2 description: the ID of the assignment's group due_date_required: type: boolean example: true description: Boolean flag indicating whether the assignment requires a due date based on the account level setting allowed_extensions: type: array items: type: string example: - docx - ppt description: Allowed file extensions, which take effect if submission_types includes 'online_upload'. max_name_length: type: integer example: 15 description: An integer indicating the maximum length an assignment's name may be turnitin_enabled: type: boolean example: true description: 'Boolean flag indicating whether or not Turnitin has been enabled for the assignment. NOTE: This flag will not appear unless your account has the Turnitin plugin available' vericite_enabled: type: boolean example: true description: 'Boolean flag indicating whether or not VeriCite has been enabled for the assignment. NOTE: This flag will not appear unless your account has the VeriCite plugin available' turnitin_settings: type: string description: 'Settings to pass along to turnitin to control what kinds of matches should be considered. originality_report_visibility can be ''immediate'', ''after_grading'', ''after_due_date'', or ''never'' exclude_small_matches_type can be null, ''percent'', ''words'' exclude_small_matches_value: - if type is null, this will be null also - if type is ''percent'', this will be a number between 0 and 100 representing match size to exclude as a percentage of the document size. - if type is ''words'', this will be number > 0 representing how many words a match must contain for it to be considered NOTE: This flag will not appear unless your account has the Turnitin plugin available' grade_group_students_individually: type: boolean example: false description: If this is a group assignment, boolean flag indicating whether or not students will be graded individually. external_tool_tag_attributes: type: string description: (Optional) assignment's settings for external tools if submission_types include 'external_tool'. Only url and new_tab are included (new_tab defaults to false). Use the 'External Tools' API if you need more information about an external tool. peer_reviews: type: boolean example: false description: Boolean indicating if peer reviews are required for this assignment automatic_peer_reviews: type: boolean example: false description: Boolean indicating peer reviews are assigned automatically. If false, the teacher is expected to manually assign peer reviews. peer_review_count: type: integer example: 0 description: 'Integer representing the amount of reviews each user is assigned. NOTE: This key is NOT present unless you have automatic_peer_reviews set to true.' peer_reviews_assign_at: type: string format: date-time example: '2012-07-01T23:59:00-06:00' description: 'String representing a date the reviews are due by. Must be a date that occurs after the default due date. If blank, or date is not after the assignment''s due date, the assignment''s due date will be used. NOTE: This key is NOT present unless you have automatic_peer_reviews set to true.' intra_group_peer_reviews: type: boolean example: 'false' description: Boolean representing whether or not members from within the same group on a group assignment can be assigned to peer review their own group's work group_category_id: type: integer example: 1 description: The ID of the assignment’s group set, if this is a group assignment. For group discussions, set group_category_id on the discussion topic, not the linked assignment. needs_grading_count: type: integer example: 17 description: if the requesting user has grading rights, the number of submissions that need grading. needs_grading_count_by_section: type: array items: $ref: '#/components/schemas/NeedsGradingCount' example: - section_id: '123456' needs_grading_count: 5 - section_id: '654321' needs_grading_count: 0 description: 'if the requesting user has grading rights and the ''needs_grading_count_by_section'' flag is specified, the number of submissions that need grading split out by section. NOTE: This key is NOT present unless you pass the ''needs_grading_count_by_section'' argument as true. ANOTHER NOTE: it''s possible to be enrolled in multiple sections, and if a student is setup that way they will show an assignment that needs grading in multiple sections (effectively the count will be duplicated between sections)' position: type: integer example: 1 description: the sorting order of the assignment in the group post_to_sis: type: boolean example: true description: (optional, present if Sync Grades to SIS feature is enabled) integration_id: type: string example: '12341234' description: (optional, Third Party unique identifier for Assignment) integration_data: type: object additionalProperties: true example: '5678': 0954 description: (optional, Third Party integration data for assignment) points_possible: type: number example: 12.0 description: the maximum points possible for the assignment submission_types: type: array items: type: string example: - online_text_entry description: 'the types of submissions allowed for this assignment list containing one or more of the following: ''discussion_topic'', ''online_quiz'', ''on_paper'', ''none'', ''external_tool'', ''online_text_entry'', ''online_url'', ''online_upload'', ''media_recording'', ''student_annotation''' has_submitted_submissions: type: boolean example: true description: If true, the assignment has been submitted to by at least one student grading_type: type: string example: points description: The type of grading the assignment receives; one of 'pass_fail', 'percent', 'letter_grade', 'gpa_scale', 'points' grading_standard_id: type: integer description: The id of the grading standard being applied to this assignment. Valid if grading_type is 'letter_grade' or 'gpa_scale'. published: type: boolean example: true description: Whether the assignment is published unpublishable: type: boolean example: false description: Whether the assignment's 'published' state can be changed to false. Will be false if there are student submissions for the assignment. only_visible_to_overrides: type: boolean example: false description: Whether the assignment is only visible to overrides. locked_for_user: type: boolean example: false description: Whether or not this is locked for the user. lock_info: type: string description: (Optional) Information for the user about the lock. Present when locked_for_user is true. lock_explanation: type: string example: This assignment is locked until September 1 at 12:00am description: (Optional) An explanation of why this is locked for the user. Present when locked_for_user is true. quiz_id: type: integer example: 620 description: (Optional) id of the associated quiz (applies only when submission_types is ['online_quiz']) anonymous_submissions: type: boolean example: false description: (Optional) whether anonymous submissions are accepted (applies only to quiz assignments) discussion_topic: type: string description: (Optional) the DiscussionTopic associated with the assignment, if applicable freeze_on_copy: type: boolean example: false description: '(Optional) Boolean indicating if assignment will be frozen when it is copied. NOTE: This field will only be present if the AssignmentFreezer plugin is available for your account.' frozen: type: boolean example: false description: '(Optional) Boolean indicating if assignment is frozen for the calling user. NOTE: This field will only be present if the AssignmentFreezer plugin is available for your account.' frozen_attributes: type: array items: type: string example: - title description: '(Optional) Array of frozen attributes for the assignment. Only account administrators currently have permission to change an attribute in this list. Will be empty if no attributes are frozen for this assignment. Possible frozen attributes are: title, description, lock_at, points_possible, grading_type, submission_types, assignment_group_id, allowed_extensions, group_category_id, notify_of_update, peer_reviews NOTE: This field will only be present if the AssignmentFreezer plugin is available for your account.' submission: type: string description: (Optional) If 'submission' is included in the 'include' parameter, includes a Submission object that represents the current user's (user who is requesting information from the api) current submission for the assignment. See the Submissions API for an example response. If the user does not have a submission, this key will be absent. use_rubric_for_grading: type: boolean example: true description: (Optional) If true, the rubric is directly tied to grading the assignment. Otherwise, it is only advisory. Included if there is an associated rubric. rubric_settings: type: object additionalProperties: true example: points_possible: '12' description: (Optional) An object describing the basic attributes of the rubric, including the point total. Included if there is an associated rubric. rubric: type: array items: $ref: '#/components/schemas/RubricCriteria' description: (Optional) A list of scoring criteria and ratings for each rubric criterion. Included if there is an associated rubric. assignment_visibility: type: array items: type: integer example: - 137 - 381 - 572 description: (Optional) If 'assignment_visibility' is included in the 'include' parameter, includes an array of student IDs who can see this assignment. overrides: type: array items: $ref: '#/components/schemas/AssignmentOverride' description: (Optional) If 'overrides' is included in the 'include' parameter, includes an array of assignment override objects. omit_from_final_grade: type: boolean example: true description: (Optional) If true, the assignment will be omitted from the student's final grade hide_in_gradebook: type: boolean example: true description: (Optional) If true, the assignment will not be shown in any gradebooks moderated_grading: type: boolean example: true description: Boolean indicating if the assignment is moderated. grader_count: type: integer example: 3 description: The maximum number of provisional graders who may issue grades for this assignment. Only relevant for moderated assignments. Must be a positive value, and must be set to 1 if the course has fewer than two active instructors. Otherwise, the maximum value is the number of active instructors in the course minus one, or 10 if the course has more than 11 active instructors. final_grader_id: type: integer example: 3 description: The user ID of the grader responsible for choosing final grades for this assignment. Only relevant for moderated assignments. grader_comments_visible_to_graders: type: boolean example: true description: Boolean indicating if provisional graders' comments are visible to other provisional graders. Only relevant for moderated assignments. graders_anonymous_to_graders: type: boolean example: true description: Boolean indicating if provisional graders' identities are hidden from other provisional graders. Only relevant for moderated assignments with grader_comments_visible_to_graders set to true. grader_names_visible_to_final_grader: type: boolean example: true description: Boolean indicating if provisional grader identities are visible to the final grader. Only relevant for moderated assignments. anonymous_grading: type: boolean example: true description: Boolean indicating if the assignment is graded anonymously. If true, graders cannot see student identities. allowed_attempts: type: integer example: 2 description: The number of submission attempts a student can make for this assignment. -1 is considered unlimited. post_manually: type: boolean example: true description: Whether the assignment has manual posting enabled. Only relevant for courses using New Gradebook. score_statistics: type: string description: (Optional) If 'score_statistics' and 'submission' are included in the 'include' parameter and statistics are available, includes the min, max, and mode for this assignment can_submit: type: boolean example: true description: (Optional) If retrieving a single assignment and 'can_submit' is included in the 'include' parameter, flags whether user has the right to submit the assignment (i.e. checks enrollment dates, submission types, locked status, attempts remaining, etc...). Including 'can submit' automatically includes 'submission' in the include parameter. Not available when observed_users are included. ab_guid: type: array items: type: string example: - ABCD - EFGH description: (Optional) The academic benchmark(s) associated with the assignment or the assignment's rubric. Only included if 'ab_guid' is included in the 'include' parameter. academic_integrity_pledge: type: string example: This submission reflects my own ideas and work description: (Optional) The account-level academic integrity pledge text a student must accept before submitting this assignment. Only present if 'academic_integrity_pledge' is included in the 'include' parameter AND the pledge is enabled for the account; otherwise the key is omitted. When present but the pledge does not apply to this particular assignment (e.g. external tool assignments or Canvas Career courses), the value is null. annotatable_attachment_id: type: integer description: The id of the attachment to be annotated by students. Relevant only if submission_types includes 'student_annotation'. anonymize_students: type: boolean example: false description: (Optional) Boolean indicating whether student names are anonymized require_lockdown_browser: type: boolean example: false description: (Optional) Boolean indicating whether the Respondus LockDown Browser® is required for this assignment. important_dates: type: boolean example: false description: (Optional) Boolean indicating whether this assignment has important dates. muted: type: boolean example: false description: (Optional, Deprecated) Boolean indicating whether notifications are muted for this assignment. anonymous_peer_reviews: type: boolean example: false description: Boolean indicating whether peer reviews are anonymous. anonymous_instructor_annotations: type: boolean example: false description: Boolean indicating whether instructor anotations are anonymous. graded_submissions_exist: type: boolean example: false description: Boolean indicating whether this assignment has graded submissions. is_quiz_assignment: type: boolean example: false description: Boolean indicating whether this is a quiz lti assignment. in_closed_grading_period: type: boolean example: false description: Boolean indicating whether this assignment is in a closed grading period. can_duplicate: type: boolean example: false description: Boolean indicating whether this assignment can be duplicated. original_course_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's course_id original_assignment_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's id original_lti_resource_link_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's lti_resource_link_id original_assignment_name: type: string example: some assignment description: If this assignment is a duplicate, it is the original assignment's name original_quiz_id: type: integer example: 4 description: If this assignment is a duplicate, it is the original assignment's quiz_id workflow_state: type: string example: unpublished description: String indicating what state this assignment is in. AssignmentDate: type: object properties: id: type: integer example: 1 description: (Optional, missing if 'base' is present) id of the assignment override this date represents base: type: boolean example: true description: (Optional, present if 'id' is missing) whether this date represents the assignment's or quiz's default due date title: type: string example: Summer Session due_at: type: string format: date-time example: '2013-08-28T23:59:00-06:00' description: The due date for the assignment. Must be between the unlock date and the lock date if there are lock dates unlock_at: type: string format: date-time example: '2013-08-01T00:00:00-06:00' description: The unlock date for the assignment. Must be before the due date if there is a due date. lock_at: type: string format: date-time example: '2013-08-31T23:59:00-06:00' description: The lock date for the assignment. Must be after the due date if there is a due date. description: Object representing a due date for an assignment or quiz. If the due date came from an assignment override, it will have an 'id' field. RubricRating__assignments: type: object properties: points: type: integer example: 10 id: type: string example: rat1 description: type: string example: Full marks long_description: type: string example: Student completed the assignment flawlessly. RubricCriteria: type: object properties: points: type: integer example: 10 id: type: string example: crit1 description: The id of rubric criteria. learning_outcome_id: type: string example: '1234' description: (Optional) The id of the learning outcome this criteria uses, if any. vendor_guid: type: string example: abdsfjasdfne3jsdfn2 description: (Optional) The 3rd party vendor's GUID for the outcome this criteria references, if any. description: type: string example: Criterion 1 long_description: type: string example: Criterion 1 more details criterion_use_range: type: boolean example: true ratings: type: array items: $ref: '#/components/schemas/RubricRating__assignments' ignore_for_scoring: type: boolean example: true BasicUser: type: object properties: id: type: string example: '123456' description: The user's ID name: type: string example: Dankey Kang description: The user's name securitySchemes: bearerAuth: type: http scheme: bearer description: 'Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html' oauth2: type: oauth2 description: Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauth_endpoints.html flows: authorizationCode: authorizationUrl: https://canvas.instructure.com/login/oauth2/auth tokenUrl: https://canvas.instructure.com/login/oauth2/token refreshUrl: https://canvas.instructure.com/login/oauth2/token scopes: {} externalDocs: description: Canvas LMS REST API Documentation url: https://canvas.instructure.com/doc/api/ x-generated-from: https://canvas.instructure.com/doc/api/api-docs.json x-provenance: method: derived derived_by: API Evangelist enrichment pipeline (Swagger 1.2 -> OpenAPI 3.1 conversion) source: openapi/_original/swagger-1.2/*.json (144 verbatim first-party Swagger 1.2 documents) source_url: https://canvas.instructure.com/doc/api/api-docs.json fetched: '2026-09-05' http_status: 200