Canvas Notification Preferences API

The Notification Preferences API from Canvas — 10 operation(s) for notification preferences.

Operations 10

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/users/{user_id}/communication_channels/{communication_channel_id}/notification_preferences List notification settings for a channel by id · List preferences #
Ask an LLM
“What notification frequencies are set on a user's Canvas email channel?”
“Can I see every notification preference for one communication channel id?”
Tell an agent
List notification preferences for user {user_id} on channel {communication_channel_id}.
Show how often channel {communication_channel_id} of user {user_id} gets each alert.
GET /v1/users/{user_id}/communication_channels/{type}/{address}/notification_preferences List notification settings for a channel by address · List preferences #
Ask an LLM
“Can I look up notification preferences using an email address instead of a channel id?”
“Which alerts go to a user's phone number, looked up by channel type and address?”
Tell an agent
List preferences for user {user_id} on the {type} channel at {address}.
Show the notification settings for {address} ({type}) belonging to {user_id}.
GET /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preference_categories List notification categories for a channel · List of preference categories #
Ask an LLM
“What notification categories exist for a user's communication channel?”
“Which groupings of alerts can I set preferences on by category?”
Tell an agent
List notification preference categories for user {user_id} channel {communication_channel_id}.
Get the alert categories available on channel {communication_channel_id} for {user_id}.
GET /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preferences/{notification} Get one notification setting by channel id · Get a preference #
Ask an LLM
“How often does a user get a specific notification on a given channel id?”
“Is a particular alert turned off for one communication channel?”
Tell an agent
Get the {notification} preference for user {user_id} on channel {communication_channel_id}.
Check the frequency of {notification} alerts on channel {communication_channel_id} for {user_id}.
GET /v1/users/{user_id}/communication_channels/{type}/{address}/notification_preferences/{notification} Get one notification setting by channel address · Get a preference #
Ask an LLM
“Can I check a single notification setting using the channel's email or phone address?”
“What frequency is one alert set to for a given address and channel type?”
Tell an agent
Get the {notification} setting for user {user_id} at {type} address {address}.
Look up how {address} ({type}) of {user_id} receives {notification}.
PUT /v1/users/self/communication_channels/{communication_channel_id}/notification_preferences/{notification} Change one notification setting by channel id · Update a preference #
Ask an LLM
“Can I make one notification arrive as a daily digest on my email channel?”
“How do I silence a single alert type on one of my channels?”
Tell an agent
Set {notification} on my channel {communication_channel_id} to {frequency}.
Change my {notification} alerts on channel {communication_channel_id} to never.
PUT /v1/users/self/communication_channels/{type}/{address}/notification_preferences/{notification} Change one notification setting by channel address · Update a preference #
Ask an LLM
“Can I update a single notification for my channel using its address rather than id?”
“Is it possible to set my text-message alert for one notification to weekly?”
Tell an agent
Set {notification} for my {type} address {address} to {frequency}.
Make {notification} immediate on my {type} channel {address}.
PUT /v1/users/self/communication_channels/{communication_channel_id}/notification_preference_categories/{category} Change all notifications in a category · Update preferences by category #
Ask an LLM
“Can I change a whole category of alerts, like all grading notices, at once?”
“Is there a way to set one frequency for every notification in a category?”
Tell an agent
Set the {category} category on my channel {communication_channel_id} to {frequency}.
Turn every {category} alert on channel {communication_channel_id} to daily.
PUT /v1/users/self/communication_channels/{communication_channel_id}/notification_preferences Change several notification settings by channel id · Update multiple preferences #
Ask an LLM
“Can I update many different notifications on one channel id in a single request?”
“What's the bulk way to rewrite my notification frequencies for a channel?”
Tell an agent
Update multiple notification preferences on my channel {communication_channel_id} to {frequency}.
Bulk set several alerts at once for channel {communication_channel_id}.
PUT /v1/users/self/communication_channels/{type}/{address}/notification_preferences Change several notification settings by address · Update multiple preferences #
Ask an LLM
“Can I bulk-change notifications for my email address without knowing the channel id?”
“Is a multi-notification update possible by channel type and address?”
Tell an agent
Update several notification frequencies for my {type} address {address} to {frequency}.
Bulk rewrite the alert settings on {type} channel {address}.

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-notification-preferences-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-notification-preferences-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Notification Preferences 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: Notification Preferences
  x-resource: notification_preferences
  externalDocs:
    url: https://canvas.instructure.com/doc/api/notification_preferences.html
paths:
  /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preferences:
    get:
      tags:
      - Notification Preferences
      operationId: list_preferences_communication_channel_id
      summary: List preferences
      description: Fetch all preferences for the given communication channel
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: communication_channel_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NotificationPreference'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/{user_id}/communication_channels/{type}/{address}/notification_preferences:
    get:
      tags:
      - Notification Preferences
      operationId: list_preferences_type
      summary: List preferences
      description: Fetch all preferences for the given communication channel
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: type
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: address
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NotificationPreference'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preference_categories:
    get:
      tags:
      - Notification Preferences
      operationId: list_of_preference_categories
      summary: List of preference categories
      description: Fetch all notification preference categories for the given communication channel
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: communication_channel_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/notification_preferences.html
  /v1/users/{user_id}/communication_channels/{communication_channel_id}/notification_preferences/{notification}:
    get:
      tags:
      - Notification Preferences
      operationId: get_preference_communication_channel_id
      summary: Get a preference
      description: Fetch the preference for the given notification for the given communication channel
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: communication_channel_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: notification
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationPreference'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/{user_id}/communication_channels/{type}/{address}/notification_preferences/{notification}:
    get:
      tags:
      - Notification Preferences
      operationId: get_preference_type
      summary: Get a preference
      description: Fetch the preference for the given notification for the given communication channel
      parameters:
      - name: user_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: type
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: address
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: notification
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationPreference'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/self/communication_channels/{communication_channel_id}/notification_preferences/{notification}:
    put:
      tags:
      - Notification Preferences
      operationId: update_preference_communication_channel_id
      summary: Update a preference
      description: Change the preference for a single notification for a single communication channel
      parameters:
      - name: communication_channel_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: notification
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                notification_preferences[frequency]:
                  type: string
                  description: The desired frequency for this notification
              required:
              - notification_preferences[frequency]
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                notification_preferences[frequency]:
                  type: string
                  description: The desired frequency for this notification
              required:
              - notification_preferences[frequency]
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/self/communication_channels/{type}/{address}/notification_preferences/{notification}:
    put:
      tags:
      - Notification Preferences
      operationId: update_preference_type
      summary: Update a preference
      description: Change the preference for a single notification for a single communication channel
      parameters:
      - name: type
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: address
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: notification
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                notification_preferences[frequency]:
                  type: string
                  description: The desired frequency for this notification
              required:
              - notification_preferences[frequency]
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                notification_preferences[frequency]:
                  type: string
                  description: The desired frequency for this notification
              required:
              - notification_preferences[frequency]
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/self/communication_channels/{communication_channel_id}/notification_preference_categories/{category}:
    put:
      tags:
      - Notification Preferences
      operationId: update_preferences_by_category
      summary: Update preferences by category
      description: Change the preferences for multiple notifications based on the category for a single communication channel
      parameters:
      - name: communication_channel_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: category
        in: path
        schema:
          type: string
        required: true
        description: The name of the category. Must be parameterized (e.g. The category "Course Content" should be "course_content")
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                notification_preferences[frequency]:
                  type: string
                  description: The desired frequency for each notification in the category
              required:
              - notification_preferences[frequency]
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                notification_preferences[frequency]:
                  type: string
                  description: The desired frequency for each notification in the category
              required:
              - notification_preferences[frequency]
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/self/communication_channels/{communication_channel_id}/notification_preferences:
    put:
      tags:
      - Notification Preferences
      operationId: update_multiple_preferences_communication_channel_id
      summary: Update multiple preferences
      description: Change the preferences for multiple notifications for a single communication channel at once
      parameters:
      - name: communication_channel_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                notification_preferences[<X>][frequency]:
                  type: string
                  description: The desired frequency for <X> notification
              required:
              - notification_preferences[<X>][frequency]
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                notification_preferences[<X>][frequency]:
                  type: string
                  description: The desired frequency for <X> notification
              required:
              - notification_preferences[<X>][frequency]
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
  /v1/users/self/communication_channels/{type}/{address}/notification_preferences:
    put:
      tags:
      - Notification Preferences
      operationId: update_multiple_preferences_type
      summary: Update multiple preferences
      description: Change the preferences for multiple notifications for a single communication channel at once
      parameters:
      - name: type
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: address
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                notification_preferences[<X>][frequency]:
                  type: string
                  description: The desired frequency for <X> notification
              required:
              - notification_preferences[<X>][frequency]
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                notification_preferences[<X>][frequency]:
                  type: string
                  description: The desired frequency for <X> notification
              required:
              - notification_preferences[<X>][frequency]
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/notification_preferences.html
components:
  schemas:
    NotificationPreference:
      type: object
      properties:
        href:
          type: string
          example: https://canvas.instructure.com/users/1/communication_channels/email/student@example.edu/notification_preferences/new_announcement
        notification:
          type: string
          example: new_announcement
          description: The notification this preference belongs to
        category:
          type: string
          example: announcement
          description: The category of that notification
        frequency:
          type: string
          example: daily
          description: How often to send notifications to this communication channel for the given notification. Possible values are 'immediately', 'daily', 'weekly', and 'never'
  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