Canvas Outcomes API

The Outcomes API from Canvas — 2 operation(s) for outcomes.

Operations 3

GET /v1/outcomes/{id} Show an outcome #
PUT /v1/outcomes/{id} Update an outcome #
GET /v1/courses/{course_id}/outcome_alignments Get outcome alignments for a student or assignment #

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-outcomes-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-outcomes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Outcomes 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: Outcomes
  x-resource: outcomes
  externalDocs:
    url: https://canvas.instructure.com/doc/api/outcomes.html
paths:
  /v1/outcomes/{id}:
    get:
      tags:
      - Outcomes
      operationId: show_outcome
      summary: Show an outcome
      description: Returns the details of the outcome with the given id.
      parameters:
      - name: id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: add_defaults
        in: query
        schema:
          type: boolean
        required: false
        description: 'If defaults are requested, then color and mastery level defaults will be

          added to outcome ratings in the result. This will only take effect if

          the Account Level Mastery Scales FF is DISABLED'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Outcome'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcomes.html
    put:
      tags:
      - Outcomes
      operationId: update_outcome
      summary: Update an outcome
      description: 'Modify an existing outcome. Fields not provided are left as is;

        unrecognized fields are ignored.


        If any new ratings are provided, the combination of all new ratings

        provided completely replace any existing embedded rubric criterion; it is

        not possible to tweak the ratings of the embedded rubric criterion.


        A new embedded rubric criterion''s mastery_points default to the maximum

        points in the highest rating if not specified in the mastery_points

        parameter. Any new ratings lacking a description are given a default of "No

        description". Any new ratings lacking a point value are given a default of

        0.'
      parameters:
      - name: id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The new outcome title.
                display_name:
                  type: string
                  description: 'A friendly name shown in reports for outcomes with cryptic titles,

                    such as common core standards names.'
                description:
                  type: string
                  description: The new outcome description.
                vendor_guid:
                  type: string
                  description: A custom GUID for the learning standard.
                mastery_points:
                  type: integer
                  format: int64
                  description: The new mastery threshold for the embedded rubric criterion.
                ratings[description]:
                  type: array
                  items:
                    type: string
                  description: The description of a new rating level for the embedded rubric criterion.
                ratings[points]:
                  type: array
                  items:
                    type: integer
                  description: 'The points corresponding to a new rating level for the embedded rubric

                    criterion.'
                calculation_method:
                  type: string
                  enum:
                  - weighted_average
                  - decaying_average
                  - n_mastery
                  - latest
                  - highest
                  - average
                  description: 'The new calculation method. If the

                    Outcomes New Decaying Average Calculation Method FF is ENABLED

                    then "weighted_average" can be used and it is same as previous "decaying_average"

                    and new "decaying_average" will have improved version of calculation.'
                calculation_int:
                  type: integer
                  format: int64
                  description: The new calculation int.  Only applies if the calculation_method is "decaying_average" or "n_mastery"
                add_defaults:
                  type: boolean
                  description: 'If defaults are requested, then color and mastery level defaults will be

                    added to outcome ratings in the result. This will only take effect if

                    the Account Level Mastery Scales FF is DISABLED'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The new outcome title.
                display_name:
                  type: string
                  description: 'A friendly name shown in reports for outcomes with cryptic titles,

                    such as common core standards names.'
                description:
                  type: string
                  description: The new outcome description.
                vendor_guid:
                  type: string
                  description: A custom GUID for the learning standard.
                mastery_points:
                  type: integer
                  format: int64
                  description: The new mastery threshold for the embedded rubric criterion.
                ratings[description]:
                  type: array
                  items:
                    type: string
                  description: The description of a new rating level for the embedded rubric criterion.
                ratings[points]:
                  type: array
                  items:
                    type: integer
                  description: 'The points corresponding to a new rating level for the embedded rubric

                    criterion.'
                calculation_method:
                  type: string
                  enum:
                  - weighted_average
                  - decaying_average
                  - n_mastery
                  - latest
                  - highest
                  - average
                  description: 'The new calculation method. If the

                    Outcomes New Decaying Average Calculation Method FF is ENABLED

                    then "weighted_average" can be used and it is same as previous "decaying_average"

                    and new "decaying_average" will have improved version of calculation.'
                calculation_int:
                  type: integer
                  format: int64
                  description: The new calculation int.  Only applies if the calculation_method is "decaying_average" or "n_mastery"
                add_defaults:
                  type: boolean
                  description: 'If defaults are requested, then color and mastery level defaults will be

                    added to outcome ratings in the result. This will only take effect if

                    the Account Level Mastery Scales FF is DISABLED'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Outcome'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcomes.html
  /v1/courses/{course_id}/outcome_alignments:
    get:
      tags:
      - Outcomes
      operationId: get_outcome_alignments_for_student_or_assignment
      summary: Get outcome alignments for a student or assignment
      description: Returns outcome alignments for a student or assignment in a course.
      parameters:
      - name: course_id
        in: path
        schema:
          type: integer
          format: int64
        required: true
        description: The id of the course
      - name: student_id
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: 'The id of the student. Returns alignments filtered by student submissions.

          Can be combined with assignment_id to filter to a specific assignment.'
      - name: assignment_id
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: 'The id of the assignment. When provided without student_id, returns all

          outcome alignments for the assignment (requires manage_grades or

          view_all_grades permission). When provided with student_id, filters to

          that student''s submission.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OutcomeAlignment__outcomes'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcomes.html
components:
  schemas:
    Outcome:
      type: object
      properties:
        id:
          type: integer
          example: 1
          description: the ID of the outcome
        url:
          type: string
          example: /api/v1/outcomes/1
          description: the URL for fetching/updating the outcome. should be treated as opaque
        context_id:
          type: integer
          example: 1
          description: the context owning the outcome. may be null for global outcomes
        context_type:
          type: string
          example: Account
        title:
          type: string
          example: Outcome title
          description: title of the outcome
        display_name:
          type: string
          example: My Favorite Outcome
          description: Optional friendly name for reporting
        description:
          type: string
          example: Outcome description
          description: description of the outcome. omitted in the abbreviated form.
        vendor_guid:
          type: string
          example: customid9000
          description: A custom GUID for the learning standard.
        points_possible:
          type: integer
          example: 5
          description: maximum points possible. included only if the outcome embeds a rubric criterion. omitted in the abbreviated form.
        mastery_points:
          type: integer
          example: 3
          description: points necessary to demonstrate mastery outcomes. included only if the outcome embeds a rubric criterion. omitted in the abbreviated form.
        calculation_method:
          type: string
          example: decaying_average
          description: the method used to calculate a students score
        calculation_int:
          type: integer
          example: 65
          description: this defines the variable value used by the calculation_method. included only if calculation_method uses it
        ratings:
          type: array
          items:
            type: string
            x-canvas-declared-type: RubricRating
          description: possible ratings for this outcome. included only if the outcome embeds a rubric criterion. omitted in the abbreviated form.
        can_edit:
          type: boolean
          example: true
          description: whether the current user can update the outcome
        can_unlink:
          type: boolean
          example: true
          description: whether the outcome can be unlinked
        assessed:
          type: boolean
          example: true
          description: whether this outcome has been used to assess a student
        has_updateable_rubrics:
          type: boolean
          example: true
          description: whether updates to this outcome will propagate to unassessed rubrics that have imported it
    OutcomeAlignment__outcomes:
      type: object
      properties:
        id:
          type: integer
          example: 1
          description: the id of the aligned learning outcome.
        assignment_id:
          type: integer
          example: 2
          description: the id of the aligned assignment (null for live assessments).
        assessment_id:
          type: integer
          example: 3
          description: the id of the aligned live assessment (null for assignments).
        submission_types:
          type: string
          example: online_text_entry,online_url
          description: a string representing the different submission types of an aligned assignment.
        url:
          type: string
          example: /courses/1/assignments/5
          description: the URL for the aligned assignment.
        title:
          type: string
          example: Unit 1 test
          description: the title of the aligned assignment.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Canvas OAuth2 access token sent as "Authorization: Bearer <token>". 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