Canvas Assignments API

The Assignments API from Canvas — 12 operation(s) for assignments.

Operations 20

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

DELETE /v1/courses/{course_id}/assignments/{id} Delete an assignment · Delete an assignment #
Ask an LLM
“Can I permanently remove an assignment from a course?”
“What does deleting an assignment return?”
Tell an agent destructive · confirm first
Delete assignment {id} from course {course_id}.
Remove the assignment {id} in course {course_id}.
GET /v1/courses/{course_id}/assignments/{id} Get one assignment in a course · Get a single assignment #
Ask an LLM
“How can I look up the details of a single Canvas assignment?”
“Can I see how many submissions still need grading per section for one assignment?”
Tell an agent
Show assignment {id} in course {course_id}.
Get assignment {id} from course {course_id} with all of its dates included.
PUT /v1/courses/{course_id}/assignments/{id} Edit an assignment · Edit an assignment #
Ask an LLM
“Can I change the due date or point value of an existing assignment?”
“Is it possible to publish an assignment that is still a draft?”
Tell an agent
Change the due date of assignment {id} in course {course_id} to {due_at}.
Set assignment {id} in course {course_id} to be worth {points_possible} points.
GET /v1/courses/{course_id}/assignments List a course's assignments · List assignments #
Ask an LLM
“Which assignments in my course are overdue or still upcoming?”
“Can I search a course's assignments by name?”
Tell an agent
List all assignments in course {course_id}.
Find assignments in course {course_id} whose name contains {search_term}.
POST /v1/courses/{course_id}/assignments Create an assignment · Create an assignment #
Ask an LLM
“How do I add a new assignment to a course?”
“Can I create an assignment that only accepts certain file extensions?”
Tell an agent
Create an assignment called {name} in course {course_id}.
Add assignment {name} to course {course_id} worth {points_possible} points due {due_at}.
GET /v1/courses/{course_id}/assignment_groups/{assignment_group_id}/assignments List assignments in an assignment group · List assignments #
Ask an LLM
“Which assignments belong to one assignment group, like Homework or Exams?”
“Can I list just the assignments inside a single weighted category?”
Tell an agent
List assignments in assignment group {assignment_group_id} of course {course_id}.
Show group {assignment_group_id}'s assignments in course {course_id} ordered by {order_by}.
GET /v1/users/{user_id}/courses/{course_id}/assignments List a student's assignments in a course · List assignments for user #
Ask an LLM
“How can a parent or advisor see the assignments for one particular student?”
“Can I view assignments as they apply to a specific user in a course?”
Tell an agent
List assignments for user {user_id} in course {course_id}.
Show what student {user_id} has been assigned in course {course_id}.
POST /v1/courses/{course_id}/assignments/{assignment_id}/duplicate Duplicate an assignment · Duplicate assignment #
Ask an LLM
“Can I make a copy of an existing assignment?”
“What can the response look like after copying an assignment?”
Tell an agent
Duplicate assignment {assignment_id} in course {course_id}.
Copy assignment {assignment_id} in course {course_id} and return the result as {result_type}.
GET /v1/courses/{course_id}/assignments/{assignment_id}/users/{user_id}/group_members List a student's group mates on an assignment · List group members for a student on an assignment #
Ask an LLM
“Who is in the same group as a student for a group assignment?”
“Can I get the names of a student's teammates on one assignment?”
Tell an agent
List group members of student {user_id} on assignment {assignment_id} in course {course_id}.
Who are student {user_id}'s teammates for assignment {assignment_id} in course {course_id}.
PUT /v1/courses/{course_id}/assignments/bulk_update Bulk update assignment dates · Bulk update assignment dates #
Ask an LLM
“Can I shift due dates for many assignments at once?”
“Is there a way to change availability dates across a whole course in one request?”
Tell an agent
Bulk update due and availability dates for several assignments in course {course_id}.
Push back the due dates of multiple assignments in course {course_id} in one request.
GET /v1/courses/{course_id}/assignments/{assignment_id}/overrides List an assignment's overrides · List assignment overrides #
Ask an LLM
“Which sections or students have a different due date for this assignment?”
“How do I see all date exceptions set on one assignment?”
Tell an agent
List overrides for assignment {assignment_id} in course {course_id}.
Show every due date exception on assignment {assignment_id} in course {course_id}.
POST /v1/courses/{course_id}/assignments/{assignment_id}/overrides Create an assignment override · Create an assignment override #
Ask an LLM
“Can I give one student an extended due date on an assignment?”
“What target does an override need: students, a group, or a section?”
Tell an agent
Give students {student_ids} a due date of {due_at} on assignment {assignment_id} in course {course_id}.
Create an override for section {course_section_id} on assignment {assignment_id} in course {course_id}.
GET /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id} Get one assignment override · Get a single assignment override #
Ask an LLM
“How do I check the dates on a specific override?”
“Can I see which students a single assignment override targets?”
Tell an agent
Show override {id} on assignment {assignment_id} in course {course_id}.
Get the details of assignment {assignment_id}'s override {id} in course {course_id}.
PUT /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id} Update an assignment override · Update an assignment override #
Ask an LLM
“If I update an override and leave out the due date, is it cleared?”
“Can I add students to an existing assignment override?”
Tell an agent
Change override {id} on assignment {assignment_id} in course {course_id} to lock at {lock_at}.
Update override {id} on assignment {assignment_id} in course {course_id} to cover students {student_ids}.
DELETE /v1/courses/{course_id}/assignments/{assignment_id}/overrides/{id} Delete an assignment override · Delete an assignment override #
Ask an LLM
“Can I remove an extension I gave a section?”
“Does deleting an override return what it used to contain?”
Tell an agent destructive · confirm first
Delete override {id} from assignment {assignment_id} in course {course_id}.
Remove the date exception {id} on assignment {assignment_id} in course {course_id}.
GET /v1/groups/{group_id}/assignments/{assignment_id}/override Find a group's assignment override · Redirect to the assignment override for a group #
Ask an LLM
“Does a student group have its own due date for an assignment?”
“Can I jump to the override for a particular group without knowing its id?”
Tell an agent
Find the override for group {group_id} on assignment {assignment_id}.
Go to group {group_id}'s date override for assignment {assignment_id}.
GET /v1/sections/{course_section_id}/assignments/{assignment_id}/override Find a section's assignment override · Redirect to the assignment override for a section #
Ask an LLM
“Does a course section have a special due date for an assignment?”
“Can I locate a section's override using only the section and assignment ids?”
Tell an agent
Find the override for section {course_section_id} on assignment {assignment_id}.
Go to section {course_section_id}'s date override for assignment {assignment_id}.
GET /v1/courses/{course_id}/assignments/overrides Fetch several overrides in a course at once · Batch retrieve overrides in a course #
Ask an LLM
“Can I fetch many assignment overrides across different assignments in one call?”
“What comes back for an override id I can't see when batch fetching?”
Tell an agent
Fetch overrides {override_ids} for assignments {assignment_ids} in course {course_id}.
Batch look up overrides {override_ids} on assignments {assignment_ids} in course {course_id}.
POST /v1/courses/{course_id}/assignments/overrides Create many overrides in a course together · Batch create overrides in a course #
Ask an LLM
“Can I create due date exceptions for several assignments in one request?”
“Is batch override creation all or nothing?”
Tell an agent
Batch create overrides {assignment_overrides} in course {course_id}.
Create these new date exceptions {assignment_overrides} for multiple assignments in course {course_id}.
PUT /v1/courses/{course_id}/assignments/overrides Update many overrides in a course together · Batch update overrides in a course #
Ask an LLM
“Can I update overrides on several assignments in a single all-or-nothing transaction?”
“If one override update in a batch fails, are the others still applied?”
Tell an agent
Batch update overrides {assignment_overrides} in course {course_id}.
Apply these override changes {assignment_overrides} across course {course_id} all at once.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canvas:canvas-assignments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

canvas-assignments-api-openapi.yml Raw ↑
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:


# --- truncated at 32 KB (126 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canvas/refs/heads/main/openapi/canvas-assignments-api-openapi.yml