Canvas Outcome Results API

The Outcome Results API from Canvas — 6 operation(s) for outcome results.

Operations 6

GET /v1/courses/{course_id}/outcome_results Get outcome results #
POST /v1/courses/{course_id}/assign_outcome_order Set outcome ordering for LMGB #
GET /v1/courses/{course_id}/outcome_rollups Get outcome result rollups #
GET /v1/courses/{course_id}/outcomes/{outcome_id}/contributing_scores Get contributing scores #
GET /v1/courses/{course_id}/outcome_mastery_distribution Get mastery distribution #
POST /v1/courses/{course_id}/enqueue_outcome_rollup_calculation Enqueue a delayed Outcome Rollup Calculation Job #

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-outcome-results-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-outcome-results-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Outcome Results 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: Outcome Results
  x-resource: outcome_results
  externalDocs:
    url: https://canvas.instructure.com/doc/api/outcome_results.html
paths:
  /v1/courses/{course_id}/outcome_results:
    get:
      tags:
      - Outcome Results
      operationId: get_outcome_results
      summary: Get outcome results
      description: 'Gets the outcome results for users and outcomes in the specified context.


        used in sLMGB'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: user_ids
        in: query
        schema:
          type: array
          items:
            type: integer
        required: false
        description: 'If specified, only the users whose ids are given will be included in the

          results. SIS ids can be used, prefixed by "sis_user_id:".

          It is an error to specify an id for a user who is not a student in

          the context.'
      - name: outcome_ids
        in: query
        schema:
          type: array
          items:
            type: integer
        required: false
        description: 'If specified, only the outcomes whose ids are given will be included in the

          results. it is an error to specify an id for an outcome which is not linked

          to the context.'
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: '[String, "alignments"|"outcomes"|"outcomes.alignments"|"outcome_groups"|"outcome_links"|"outcome_paths"|"users"]

          Specify additional collections to be side loaded with the result.

          "alignments" includes only the alignments referenced by the returned

          results.

          "outcomes.alignments" includes all alignments referenced by outcomes in the

          context.'
      - name: include_hidden
        in: query
        schema:
          type: boolean
        required: false
        description: 'If true, results that are hidden from the learning mastery gradebook and student rollup

          scores will be included'
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcome_results.html
  /v1/courses/{course_id}/assign_outcome_order:
    post:
      tags:
      - Outcome Results
      operationId: set_outcome_ordering_for_lmgb
      summary: Set outcome ordering for LMGB
      description: Saves the ordering of outcomes in LMGB for a user
      parameters:
      - 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/outcome_results.html
  /v1/courses/{course_id}/outcome_rollups:
    get:
      tags:
      - Outcome Results
      operationId: get_outcome_result_rollups
      summary: Get outcome result rollups
      description: 'Gets the outcome rollups for the users and outcomes in the specified

        context.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: aggregate
        in: query
        schema:
          type: string
          enum:
          - course
        required: false
        description: 'If specified, instead of returning one rollup for each user, all the user

          rollups will be combined into one rollup for the course that will contain

          the average (or median, see below) rollup score for each outcome.'
      - name: aggregate_stat
        in: query
        schema:
          type: string
          enum:
          - mean
          - median
        required: false
        description: 'If aggregate rollups requested, then this value determines what

          statistic is used for the aggregate. Defaults to "mean" if this value

          is not specified.'
      - name: user_ids
        in: query
        schema:
          type: array
          items:
            type: integer
        required: false
        description: 'If specified, only the users whose ids are given will be included in the

          results or used in an aggregate result. it is an error to specify an id

          for a user who is not a student in the context'
      - name: outcome_ids
        in: query
        schema:
          type: array
          items:
            type: integer
        required: false
        description: 'If specified, only the outcomes whose ids are given will be included in the

          results. it is an error to specify an id for an outcome which is not linked

          to the context.'
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: '[String, "courses"|"outcomes"|"outcomes.alignments"|"outcome_groups"|"outcome_links"|"outcome_paths"|"users"]

          Specify additional collections to be side loaded with the result.'
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - missing_user_rollups
            - missing_outcome_results
            - ''
        required: false
        description: 'Specify additional values to exclude.

          "missing_user_rollups" excludes rollups for users without results.

          "missing_outcome_results" excludes outcomes without results.'
      - name: sort_by
        in: query
        schema:
          type: string
          enum:
          - student
          - outcome
        required: false
        description: 'If specified, sorts outcome result rollups. "student" sorting will sort

          by a user''s sortable name. "outcome" sorting will sort by the given outcome''s

          rollup score. The latter requires specifying the "sort_outcome_id" parameter.

          By default, the sort order is ascending.'
      - name: sort_outcome_id
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: 'If outcome sorting requested, then this determines which outcome to use

          for rollup score sorting.'
      - name: sort_order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: 'If sorting requested, then this allows changing the default sort order of

          ascending to descending.'
      - 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 rollup. This will only take effect if

          the Account Level Mastery Scales FF is DISABLED'
      - name: contributing_scores
        in: query
        schema:
          type: boolean
        required: false
        description: '**DEPRECATED**: This parameter is deprecated. Use the separate

          GET /api/v1/courses/:course_id/outcomes/:outcome_id/contributing_scores

          endpoint instead to fetch contributing scores for a specific outcome.

          If contributing scores are requested, then each individual outcome score will

          also include all graded artifacts that contributed to the outcome score'
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcome_results.html
  /v1/courses/{course_id}/outcomes/{outcome_id}/contributing_scores:
    get:
      tags:
      - Outcome Results
      operationId: get_contributing_scores
      summary: Get contributing scores
      description: 'Gets the contributing scores for a specific outcome and set of users.

        Contributing scores are the individual assignment/quiz scores that

        contributed to the outcome score for each user.


        Returns all alignments for the outcome in the course context.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: outcome_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: user_ids
        in: query
        schema:
          type: array
          items:
            type: integer
        required: false
        description: 'If specified, only the users whose ids are given will be included in the

          results. It is an error to specify an id for a user who is not a student in

          the context.'
      - name: only_assignment_alignments
        in: query
        schema:
          type: boolean
        required: false
        description: If specified, only assignment alignments will be included in the results.
      - name: show_unpublished_assignments
        in: query
        schema:
          type: boolean
        required: false
        description: If true, unpublished assignments will be included in the results. Defaults to false.
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcome_results.html
  /v1/courses/{course_id}/outcome_mastery_distribution:
    get:
      tags:
      - Outcome Results
      operationId: get_mastery_distribution
      summary: Get mastery distribution
      description: 'Returns the distribution of student scores across mastery levels for all outcomes.

        This endpoint fetches data for ALL students (not paginated) to provide accurate

        distribution statistics for charts and analytics.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: 'Optionally restrict which results are included:

          - "missing_user_rollups": exclude students without any scores

          - "missing_outcome_results": exclude outcomes without any results'
      - name: outcome_ids
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: Optionally restrict to specific outcome IDs
      - name: student_ids
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: Optionally restrict to specific student IDs. If not provided, all students will be included.
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
        required: false
        description: 'Optionally include additional data:

          - "alignment_distributions": include contributing score distributions for alignments'
      - name: only_assignment_alignments
        in: query
        schema:
          type: boolean
        required: false
        description: 'If true and alignment_distributions is included, only include assignment alignments. Default: false.'
      - name: show_unpublished_assignments
        in: query
        schema:
          type: boolean
        required: false
        description: 'If true, include unpublished assignments in alignment distributions. Default: false.'
      - 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:
                type: string
                x-canvas-declared-type: MasteryDistributionResponse
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcome_results.html
  /v1/courses/{course_id}/enqueue_outcome_rollup_calculation:
    post:
      tags:
      - Outcome Results
      operationId: enqueue_delayed_outcome_rollup_calculation_job
      summary: Enqueue a delayed Outcome Rollup Calculation Job
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                student_uuid:
                  type: string
                  description: The student UUID for the rollup job. If provided, calculates for specific student.
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                student_uuid:
                  type: string
                  description: The student UUID for the rollup job. If provided, calculates for specific student.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: RollupJob
      externalDocs:
        url: https://canvas.instructure.com/doc/api/outcome_results.html
components:
  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