Canvas Analytics API

The Analytics API from Canvas — 18 operation(s) for analytics.

Operations 18

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

GET /v1/accounts/{account_id}/analytics/terms/{term_id}/activity Get department page views for a term · Get department-level participation data #
Ask an LLM
“How much page-view activity did a department see during a specific term?”
“Can I break a department's term activity down by day and by category?”
Tell an agent
Get participation data for account {account_id} in term {term_id}.
Show daily page views across account {account_id}'s courses for term {term_id}.
GET /v1/accounts/{account_id}/analytics/current/activity Get department page views for current courses · Get department-level participation data #
Ask an LLM
“How active are students in a department's currently running courses?”
“What page-view categories show up for a department's active courses?”
Tell an agent
Get participation data for account {account_id}'s current courses.
Show page views by category for courses running now in account {account_id}.
GET /v1/accounts/{account_id}/analytics/completed/activity Get department page views for completed courses · Get department-level participation data #
Ask an LLM
“How much activity did a department's concluded courses get?”
“Can I see daily page views for courses that have already ended in a department?”
Tell an agent
Get participation data for account {account_id}'s completed courses.
Show page views for concluded courses in account {account_id}.
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/grades Get a department's grade distribution for a term · Get department-level grade data #
Ask an LLM
“What did the grade distribution look like across a department for one term?”
“How are student grades spread across a department's courses in a given term?”
Tell an agent
Get the grade distribution for account {account_id} in term {term_id}.
Show how grades were spread in account {account_id} during term {term_id}.
GET /v1/accounts/{account_id}/analytics/current/grades Get a department's grade distribution for current courses · Get department-level grade data #
Ask an LLM
“What is the current grade distribution across a department's active courses?”
“How are students doing right now across a whole department?”
Tell an agent
Get the grade distribution for account {account_id}'s current courses.
Show current grades spread across active courses in account {account_id}.
GET /v1/accounts/{account_id}/analytics/completed/grades Get a department's grade distribution for completed courses · Get department-level grade data #
Ask an LLM
“What were the final grade distributions for a department's concluded courses?”
“How did students finish across a department's completed courses?”
Tell an agent
Get the grade distribution for account {account_id}'s completed courses.
Show grades from concluded courses in account {account_id}.
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics Get department statistics for a term · Get department-level statistics #
Ask an LLM
“How many courses, teachers and students did a department have in a term?”
“What summary numbers does Canvas give for a department and term?”
Tell an agent
Get statistics for account {account_id} in term {term_id}.
Summarize course and enrollment counts for account {account_id} in term {term_id}.
GET /v1/accounts/{account_id}/analytics/current/statistics Get department statistics for current courses · Get department-level statistics #
Ask an LLM
“What are the headline numbers for a department's active courses?”
“How many students are in a department's currently running courses?”
Tell an agent
Get statistics for account {account_id}'s current courses.
Summarize counts for courses running now in account {account_id}.
GET /v1/accounts/{account_id}/analytics/completed/statistics Get department statistics for completed courses · Get department-level statistics #
Ask an LLM
“What are the summary numbers for a department's concluded courses?”
“How many courses has a department completed, with their student counts?”
Tell an agent
Get statistics for account {account_id}'s completed courses.
Summarize counts for concluded courses in account {account_id}.
GET /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics_by_subaccount Get per-subaccount statistics for a term · Get department-level statistics, broken down by subaccount #
Ask an LLM
“How do subaccounts compare on course and student counts in one term?”
“Can I see department statistics split by subaccount for a specific term?”
Tell an agent
Get statistics by subaccount for account {account_id} in term {term_id}.
Compare account {account_id}'s subaccounts for term {term_id}.
GET /v1/accounts/{account_id}/analytics/current/statistics_by_subaccount Get per-subaccount statistics for current courses · Get department-level statistics, broken down by subaccount #
Ask an LLM
“Which subaccounts have the most active courses right now?”
“Can I split a department's current-course statistics by subaccount?”
Tell an agent
Get statistics by subaccount for account {account_id}'s current courses.
Compare account {account_id}'s subaccounts on courses running now.
GET /v1/accounts/{account_id}/analytics/completed/statistics_by_subaccount Get per-subaccount statistics for completed courses · Get department-level statistics, broken down by subaccount #
Ask an LLM
“How do subaccounts compare on concluded courses?”
“Can I split completed-course statistics by subaccount?”
Tell an agent
Get statistics by subaccount for account {account_id}'s completed courses.
Compare account {account_id}'s subaccounts on concluded courses.
GET /v1/courses/{course_id}/analytics/activity Get a course's daily page views and participation · Get course-level participation data #
Ask an LLM
“How much activity has a course had each day since it started?”
“Can I chart a course's page views and participations by date?”
Tell an agent
Get daily participation data for course {course_id}.
Show page views by day for the whole history of course {course_id}.
GET /v1/courses/{course_id}/analytics/assignments Get assignment analytics for a course · Get course-level assignment data #
Ask an LLM
“How many students turned in each assignment on time versus late?”
“What does the grade breakdown look like for every assignment in a course?”
Tell an agent
Get assignment analytics for course {course_id}.
Show on-time and late submission counts per assignment in course {course_id}.
GET /v1/courses/{course_id}/analytics/student_summaries Get per-student activity summaries for a course · Get course-level student summary data #
Ask an LLM
“Which students in a course have the fewest page views or participations?”
“Can I sort a course's student summaries by a column?”
Tell an agent
Get student summaries for course {course_id}.
Sort course {course_id}'s student summaries by {sort_column}.
GET /v1/courses/{course_id}/analytics/users/{student_id}/activity Get one student's hourly activity in a course · Get user-in-a-course-level participation data #
Ask an LLM
“When has a particular student been active in a course, hour by hour?”
“How often has one student participated in a course?”
Tell an agent
Get activity data for student {student_id} in course {course_id}.
Show hourly page views for student {student_id} in course {course_id}.
GET /v1/courses/{course_id}/analytics/users/{student_id}/assignments Get one student's assignment results in a course · Get user-in-a-course-level assignment data #
Ask an LLM
“How did one student do on each assignment compared with the class?”
“Which assignments did a specific student submit late?”
Tell an agent
Get assignment data for student {student_id} in course {course_id}.
Show student {student_id}'s grades and submission status in course {course_id}.
GET /v1/courses/{course_id}/analytics/users/{student_id}/communication Get messaging counts between a student and instructors · Get user-in-a-course-level messaging data #
Ask an LLM
“How many messages has an instructor exchanged with a student in a course?”
“Can I see student-to-instructor message counts by day?”
Tell an agent
Get messaging data for student {student_id} in course {course_id}.
Show daily instructor and student message counts for student {student_id} in course {course_id}.

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-analytics-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-analytics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Analytics 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: Analytics
  x-resource: analytics
  externalDocs:
    url: https://canvas.instructure.com/doc/api/analytics.html
paths:
  /v1/accounts/{account_id}/analytics/terms/{term_id}/activity:
    get:
      tags:
      - Analytics
      operationId: get_department_level_participation_data_terms
      summary: Get department-level participation data
      description: 'Returns page view hits summed across all courses in the department. Two

        groupings of these counts are returned; one by day (+by_date+), the other

        by category (+by_category+). The possible categories are announcements,

        assignments, collaborations, conferences, discussions, files, general,

        grades, groups, modules, other, pages, and quizzes.


        This and the other department-level endpoints have three variations which

        all return the same style of data but for different subsets of courses. All

        share the prefix /api/v1/accounts//analytics. The possible

        suffixes are:


        * /current: includes all available courses in the default term

        * /completed: includes all concluded courses in the default term

        * /terms/: includes all available or concluded courses in the

        given term.


        Courses not yet offered or which have been deleted are never included.


        /current and /completed are intended for use when the account has only one

        term. /terms/ is intended for use when the account has multiple

        terms.


        The action follows the suffix.'
      parameters:
      - name: account_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: term_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/analytics.html
  /v1/accounts/{account_id}/analytics/current/activity:
    get:
      tags:
      - Analytics
      operationId: get_department_level_participation_data_current
      summary: Get department-level participation data
      description: 'Returns page view hits summed across all courses in the department. Two

        groupings of these counts are returned; one by day (+by_date+), the other

        by category (+by_category+). The possible categories are announcements,

        assignments, collaborations, conferences, discussions, files, general,

        grades, groups, modules, other, pages, and quizzes.


        This and the other department-level endpoints have three variations which

        all return the same style of data but for different subsets of courses. All

        share the prefix /api/v1/accounts//analytics. The possible

        suffixes are:


        * /current: includes all available courses in the default term

        * /completed: includes all concluded courses in the default term

        * /terms/: includes all available or concluded courses in the

        given term.


        Courses not yet offered or which have been deleted are never included.


        /current and /completed are intended for use when the account has only one

        term. /terms/ is intended for use when the account has multiple

        terms.


        The action follows the suffix.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/completed/activity:
    get:
      tags:
      - Analytics
      operationId: get_department_level_participation_data_completed
      summary: Get department-level participation data
      description: 'Returns page view hits summed across all courses in the department. Two

        groupings of these counts are returned; one by day (+by_date+), the other

        by category (+by_category+). The possible categories are announcements,

        assignments, collaborations, conferences, discussions, files, general,

        grades, groups, modules, other, pages, and quizzes.


        This and the other department-level endpoints have three variations which

        all return the same style of data but for different subsets of courses. All

        share the prefix /api/v1/accounts//analytics. The possible

        suffixes are:


        * /current: includes all available courses in the default term

        * /completed: includes all concluded courses in the default term

        * /terms/: includes all available or concluded courses in the

        given term.


        Courses not yet offered or which have been deleted are never included.


        /current and /completed are intended for use when the account has only one

        term. /terms/ is intended for use when the account has multiple

        terms.


        The action follows the suffix.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/terms/{term_id}/grades:
    get:
      tags:
      - Analytics
      operationId: get_department_level_grade_data_terms
      summary: Get department-level grade data
      description: 'Returns the distribution of grades for students in courses in the

        department. Each data point is one student''s current grade in one course;

        if a student is in multiple courses, he contributes one value per course,

        but if he''s enrolled multiple times in the same course (e.g. a lecture

        section and a lab section), he only constributes on value for that course.


        Grades are binned to the nearest integer score; anomalous grades outside

        the 0 to 100 range are ignored. The raw counts are returned, not yet

        normalized by the total count.


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: term_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/analytics.html
  /v1/accounts/{account_id}/analytics/current/grades:
    get:
      tags:
      - Analytics
      operationId: get_department_level_grade_data_current
      summary: Get department-level grade data
      description: 'Returns the distribution of grades for students in courses in the

        department. Each data point is one student''s current grade in one course;

        if a student is in multiple courses, he contributes one value per course,

        but if he''s enrolled multiple times in the same course (e.g. a lecture

        section and a lab section), he only constributes on value for that course.


        Grades are binned to the nearest integer score; anomalous grades outside

        the 0 to 100 range are ignored. The raw counts are returned, not yet

        normalized by the total count.


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/completed/grades:
    get:
      tags:
      - Analytics
      operationId: get_department_level_grade_data_completed
      summary: Get department-level grade data
      description: 'Returns the distribution of grades for students in courses in the

        department. Each data point is one student''s current grade in one course;

        if a student is in multiple courses, he contributes one value per course,

        but if he''s enrolled multiple times in the same course (e.g. a lecture

        section and a lab section), he only constributes on value for that course.


        Grades are binned to the nearest integer score; anomalous grades outside

        the 0 to 100 range are ignored. The raw counts are returned, not yet

        normalized by the total count.


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics:
    get:
      tags:
      - Analytics
      operationId: get_department_level_statistics_terms
      summary: Get department-level statistics
      description: 'Returns numeric statistics about the department and term (or filter).


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: term_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/analytics.html
  /v1/accounts/{account_id}/analytics/current/statistics:
    get:
      tags:
      - Analytics
      operationId: get_department_level_statistics_current
      summary: Get department-level statistics
      description: 'Returns numeric statistics about the department and term (or filter).


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/completed/statistics:
    get:
      tags:
      - Analytics
      operationId: get_department_level_statistics_completed
      summary: Get department-level statistics
      description: 'Returns numeric statistics about the department and term (or filter).


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/terms/{term_id}/statistics_by_subaccount:
    get:
      tags:
      - Analytics
      operationId: get_department_level_statistics_broken_down_by_subaccount_terms
      summary: Get department-level statistics, broken down by subaccount
      description: 'Returns numeric statistics about the department subaccounts and term (or filter).


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: term_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/analytics.html
  /v1/accounts/{account_id}/analytics/current/statistics_by_subaccount:
    get:
      tags:
      - Analytics
      operationId: get_department_level_statistics_broken_down_by_subaccount_current
      summary: Get department-level statistics, broken down by subaccount
      description: 'Returns numeric statistics about the department subaccounts and term (or filter).


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_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/analytics.html
  /v1/accounts/{account_id}/analytics/completed/statistics_by_subaccount:
    get:
      tags:
      - Analytics
      operationId: get_department_level_statistics_broken_down_by_subaccount_completed
      summary: Get department-level statistics, broken down by subaccount
      description: 'Returns numeric statistics about the department subaccounts and term (or filter).


        Shares the same variations on endpoint as the participation data.'
      parameters:
      - name: account_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/analytics.html
  /v1/courses/{course_id}/analytics/activity:
    get:
      tags:
      - Analytics
      operationId: get_course_level_participation_data
      summary: Get course-level participation data
      description: 'Returns page view hits and participation numbers grouped by day through the

        entire history of the course. Page views is returned as a hash, where the

        hash keys are dates in the format "YYYY-MM-DD". The page_views result set

        includes page views broken out by access category. Participations is

        returned as an array of dates in the format "YYYY-MM-DD".'
      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/analytics.html
  /v1/courses/{course_id}/analytics/assignments:
    get:
      tags:
      - Analytics
      operationId: get_course_level_assignment_data
      summary: Get course-level assignment data
      description: 'Returns a list of assignments for the course sorted by due date. For

        each assignment returns basic assignment information, the grade breakdown,

        and a breakdown of on-time/late status of homework submissions.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: async
        in: query
        schema:
          type: boolean
        required: false
        description: 'If async is true, then the course_assignments call can happen asynch-

          ronously and MAY return a response containing a progress_url key instead

          of an assignments array. If it does, then it is the caller''s

          responsibility to poll the API again to see if the progress is complete.

          If the data is ready (possibly even on the first async call) then it

          will be passed back normally, as documented in the example response.'
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/analytics.html
  /v1/courses/{course_id}/analytics/student_summaries:
    get:
      tags:
      - Analytics
      operationId: get_course_level_student_summary_data
      summary: Get course-level student summary data
      description: 'Returns a summary of per-user access information for all students in

        a course. This includes total page views, total participations, and a

        breakdown of on-time/late status for all homework submissions in the course.


        Each student''s summary also includes the maximum number of page views and

        participations by any student in the course, which may be useful for some

        visualizations (since determining maximums client side can be tricky with

        pagination).'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: sort_column
        in: query
        schema:
          type: string
          enum:
          - name
          - name_descending
          - score
          - score_descending
          - participations
          - participations_descending
          - page_views
          - page_views_descending
        required: false
        description: The order results in which results are returned.  Defaults to "name".
      - name: student_id
        in: query
        schema:
          type: string
        required: false
        description: If set, returns only the specified student.
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/analytics.html
  /v1/courses/{course_id}/analytics/users/{student_id}/activity:
    get:
      tags:
      - Analytics
      operationId: get_user_in_a_course_level_participation_data
      summary: Get user-in-a-course-level participation data
      description: 'Returns page view hits grouped by hour, and participation details through the

        entire history of the course.


        `page_views` are returned as a hash, where the keys are iso8601 dates, bucketed by the hour.

        `participations` are returned as an array of hashes, sorted oldest to newest.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: student_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/analytics.html
  /v1/courses/{course_id}/analytics/users/{student_id}/assignments:
    get:
      tags:
      - Analytics
      operationId: get_user_in_a_course_level_assignment_data
      summary: Get user-in-a-course-level assignment data
      description: 'Returns a list of assignments for the course sorted by due date. For

        each assignment returns basic assignment information, the grade breakdown

        (including the student''s actual grade), and the basic submission

        information for the student''s submission if it exists.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: student_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/analytics.html
  /v1/courses/{course_id}/analytics/users/{student_id}/communication:
    get:
      tags:
      - Analytics
      operationId: get_user_in_a_course_level_messaging_data
      summary: Get user-in-a-course-level messaging data
      description: 'Returns messaging "hits" grouped by day through the entire history of the

        course. Returns a hash containing the number of instructor-to-student messages,

        and student-to-instructor messages, where the hash keys are dates

        in the format "YYYY-MM-DD". Message hits include Conversation messages and

        comments on homework submissions.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: student_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/analytics.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