Canvas LMS · Arazzo Workflow

Canvas LMS Create Assignment and Grade Submission

Version 1.0.0

Create an assignment, find a student's submission, and post a grade plus comment.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub Learning ManagementEducationEdTechLMSLTIHigher EducationK-12Open-SourceAGPLCanvasArazzoWorkflows

Provider

canvas-lms

Workflows

create-assignment-and-grade-submission
Create an assignment then grade a specific student's submission for it.
Creates an assignment in the course, reads the target student's submission record for the new assignment, and posts a grade plus an optional comment to that submission.
3 steps inputs: courseId, name, pointsPossible, postedGrade, textComment, userId outputs: assignmentId, grade, score
1
createAssignment
Create the assignment in the course with the supplied name and point value.
2
getSubmission
Read the target student's submission record for the newly created assignment.
3
gradeSubmission
Post the supplied grade and optional feedback comment to the student's submission.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Canvas LMS Create Assignment and Grade Submission
  summary: Create an assignment, find a student's submission, and post a grade plus comment.
  description: >-
    A teacher grading flow for Canvas. The workflow creates an assignment in a
    course, fetches the supplied student's submission for that assignment, and
    posts a grade and feedback comment to that submission. Because Canvas
    auto-creates a placeholder submission record per student per assignment, the
    submission can be read and graded immediately after the assignment is
    created. Every step spells out its request inline so the flow can be read and
    executed without opening the underlying OpenAPI description.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-4740.30
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-4740.30
      capability_name: Marking & Grading Operations
      spec: canvas-lms-submissions-api-openapi.yml
      confidence: 0.85
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: assignmentsApi
  url: ../openapi/canvas-lms-assignments-api-openapi.yml
  type: openapi
- name: submissionsApi
  url: ../openapi/canvas-lms-submissions-api-openapi.yml
  type: openapi
workflows:
- workflowId: create-assignment-and-grade-submission
  summary: Create an assignment then grade a specific student's submission for it.
  description: >-
    Creates an assignment in the course, reads the target student's submission
    record for the new assignment, and posts a grade plus an optional comment to
    that submission.
  inputs:
    type: object
    required:
    - courseId
    - name
    - pointsPossible
    - userId
    - postedGrade
    properties:
      courseId:
        type: string
        description: The Canvas course id.
      name:
        type: string
        description: The name of the assignment to create.
      pointsPossible:
        type: number
        description: The maximum number of points the assignment is worth.
      userId:
        type: string
        description: The Canvas user id of the student whose submission will be graded.
      postedGrade:
        type: string
        description: The grade to post (points, percent, or letter depending on grading_type).
      textComment:
        type: string
        description: Optional feedback comment to attach to the submission.
  steps:
  - stepId: createAssignment
    description: >-
      Create the assignment in the course with the supplied name and point
      value.
    operationId: createAssignment
    parameters:
    - name: course_id
      in: path
      value: $inputs.courseId
    requestBody:
      contentType: application/json
      payload:
        assignment:
          name: $inputs.name
          points_possible: $inputs.pointsPossible
          submission_types:
          - online_text_entry
          published: true
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      assignmentId: $response.body#/id
  - stepId: getSubmission
    description: >-
      Read the target student's submission record for the newly created
      assignment.
    operationId: getSubmission
    parameters:
    - name: course_id
      in: path
      value: $inputs.courseId
    - name: assignment_id
      in: path
      value: $steps.createAssignment.outputs.assignmentId
    - name: user_id
      in: path
      value: $inputs.userId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      submissionUserId: $response.body#/user_id
      workflowState: $response.body#/workflow_state
  - stepId: gradeSubmission
    description: >-
      Post the supplied grade and optional feedback comment to the student's
      submission.
    operationId: gradeSubmission
    parameters:
    - name: course_id
      in: path
      value: $inputs.courseId
    - name: assignment_id
      in: path
      value: $steps.createAssignment.outputs.assignmentId
    - name: user_id
      in: path
      value: $inputs.userId
    requestBody:
      contentType: application/json
      payload:
        submission:
          posted_grade: $inputs.postedGrade
        comment:
          text_comment: $inputs.textComment
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      grade: $response.body#/grade
      score: $response.body#/score
      gradedState: $response.body#/workflow_state
  outputs:
    assignmentId: $steps.createAssignment.outputs.assignmentId
    grade: $steps.gradeSubmission.outputs.grade
    score: $steps.gradeSubmission.outputs.score

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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 workflow
curl "https://apis.io/api/v1/arazzo/canvas-lms-create-assignment-and-grade-submission-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?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.