Canvas User Observees API

The User Observees API from Canvas — 5 operation(s) for user observees.

Operations 8

GET /v1/users/{user_id}/observees List linked observees #
POST /v1/users/{user_id}/observees Add an observee with credentials #
GET /v1/users/{user_id}/observers List linked observers #
GET /v1/users/{user_id}/observees/{observee_id} Show an observee #
PUT /v1/users/{user_id}/observees/{observee_id} Add an observee #
DELETE /v1/users/{user_id}/observees/{observee_id} Remove an observee #
GET /v1/users/{user_id}/observers/{observer_id} Show an observer #
POST /v1/users/{user_id}/observer_pairing_codes Create observer pairing code #

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-user-observees-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-user-observees-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST User Observees 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: User Observees
  x-resource: user_observees
  externalDocs:
    url: https://canvas.instructure.com/doc/api/user_observees.html
paths:
  /v1/users/{user_id}/observees:
    get:
      tags:
      - User Observees
      operationId: list_linked_observees
      summary: List linked observees
      description: 'A paginated list of users that the given user is observing. This endpoint returns

        users linked to the observer at the account level (such that the observer is automatically

        enrolled in observees'' courses); it doesn''t return one-off observer enrollments from

        individual courses.


        *Note:* all users are allowed to list their own observees. Administrators can list

        other users'' observees.


        The returned observees will include an attribute "observation_link_root_account_ids", a list

        of ids for the root accounts the observer and observee are linked on. The observer will only be able to

        observe in courses associated with these root accounts.'
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - avatar_url
        required: false
        description: '- "avatar_url": Optionally include avatar_url.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
    post:
      tags:
      - User Observees
      operationId: add_observee_with_credentials
      summary: Add an observee with credentials
      description: 'Register the given user to observe another user, given the observee''s credentials.


        *Note:* all users are allowed to add their own observees, given the observee''s

        credentials or access token are provided. Administrators can add observees given credentials, access token or

        the {api:UserObserveesController#update observee''s id}.'
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                observee[unique_id]:
                  type: string
                  description: The login id for the user to observe.  Required if access_token is omitted.
                observee[password]:
                  type: string
                  description: The password for the user to observe. Required if access_token is omitted.
                access_token:
                  type: string
                  description: The access token for the user to observe.  Required if <tt>observee[unique_id]</tt> or <tt>observee[password]</tt> are omitted.
                pairing_code:
                  type: string
                  description: A generated pairing code for the user to observe. Required if the Observer pairing code feature flag is enabled
                root_account_id:
                  type: integer
                  format: int64
                  description: 'The ID for the root account to associate with the observation link.

                    Defaults to the current domain account.

                    If ''all'' is specified, a link will be created for each root account associated

                    to both the observer and observee.'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                observee[unique_id]:
                  type: string
                  description: The login id for the user to observe.  Required if access_token is omitted.
                observee[password]:
                  type: string
                  description: The password for the user to observe. Required if access_token is omitted.
                access_token:
                  type: string
                  description: The access token for the user to observe.  Required if <tt>observee[unique_id]</tt> or <tt>observee[password]</tt> are omitted.
                pairing_code:
                  type: string
                  description: A generated pairing code for the user to observe. Required if the Observer pairing code feature flag is enabled
                root_account_id:
                  type: integer
                  format: int64
                  description: 'The ID for the root account to associate with the observation link.

                    Defaults to the current domain account.

                    If ''all'' is specified, a link will be created for each root account associated

                    to both the observer and observee.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
  /v1/users/{user_id}/observers:
    get:
      tags:
      - User Observees
      operationId: list_linked_observers
      summary: List linked observers
      description: 'A paginated list of observers linked to a given user.


        *Note:* all users are allowed to list their own observers. Administrators can list

        other users'' observers.


        The returned observers will include an attribute "observation_link_root_account_ids", a list

        of ids for the root accounts the observer and observee are linked on. The observer will only be able to

        observe in courses associated with these root accounts.'
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - avatar_url
        required: false
        description: '- "avatar_url": Optionally include avatar_url.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
  /v1/users/{user_id}/observees/{observee_id}:
    get:
      tags:
      - User Observees
      operationId: show_observee
      summary: Show an observee
      description: 'Gets information about an observed user.


        *Note:* all users are allowed to view their own observees.'
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: observee_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
    put:
      tags:
      - User Observees
      operationId: add_observee
      summary: Add an observee
      description: Registers a user as being observed by the given user.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: observee_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                root_account_id:
                  type: integer
                  format: int64
                  description: 'The ID for the root account to associate with the observation link.

                    If not specified, a link will be created for each root account associated

                    to both the observer and observee.'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                root_account_id:
                  type: integer
                  format: int64
                  description: 'The ID for the root account to associate with the observation link.

                    If not specified, a link will be created for each root account associated

                    to both the observer and observee.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
    delete:
      tags:
      - User Observees
      operationId: remove_observee
      summary: Remove an observee
      description: Unregisters a user as being observed by the given user.
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: observee_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: root_account_id
        in: query
        schema:
          type: integer
          format: int64
        required: false
        description: If specified, only removes the link for the given root account
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
  /v1/users/{user_id}/observers/{observer_id}:
    get:
      tags:
      - User Observees
      operationId: show_observer
      summary: Show an observer
      description: 'Gets information about an observer.


        *Note:* all users are allowed to view their own observers.'
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: observer_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: User
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
  /v1/users/{user_id}/observer_pairing_codes:
    post:
      tags:
      - User Observees
      operationId: create_observer_pairing_code
      summary: Create observer pairing code
      description: 'If the user is a student, will generate a code to be used with self registration

        or observees APIs to link another user to this student.'
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PairingCode'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/user_observees.html
components:
  schemas:
    PairingCode:
      type: object
      properties:
        user_id:
          type: integer
          format: int64
          example: 2
          description: The ID of the user.
        code:
          type: string
          example: abc123
          description: The actual code to be sent to other APIs
        expires_at:
          type: string
          example: '2012-05-30T17:45:25Z'
          description: When the code expires
        workflow_state:
          type: string
          example: active
          description: The current status of the code
      description: A code used for linking a user to a student to observe them.
  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