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 observee[unique_id] or observee[password] 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 observee[unique_id] or observee[password] 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 ". 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