Canvas LTI 1.3 API

Canvas supports Learning Tools Interoperability (LTI) 1.3 integrations, enabling third-party tools to embed securely within the Canvas LMS. The LTI implementation covers deep linking, Names and Roles Provisioning Service, and Assignment and Grades services following 1EdTech specifications.

OpenAPI Specification

instructure-canvas-lti-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Canvas LMS LTI API
  description: Canvas LTI 1.3 API endpoints including Dynamic Registration, IMS Names
    and Roles, Line Items, Data Services, and Security endpoints.
  version: 1.0.0
  contact:
    name: Instructure Support
    url: https://developerdocs.instructure.com/
    email: [email protected]
  license:
    name: AGPL-3.0
    url: https://github.com/instructure/canvas-lms/blob/master/LICENSE
servers:
- url: https://{canvas_domain}
  description: Canvas institution domain
  variables:
    canvas_domain:
      default: canvas.instructure.com
      description: The institution-specific Canvas domain
tags:
- name: ExternalTool
- name: Lti::AccountExternalTool
- name: Lti::AccountLookup
- name: Lti::DataService
- name: Lti::IMS::Authentication
- name: Lti::IMS::DynamicRegistration
- name: Lti::IMS::LineItem
- name: Lti::IMS::NamesAndRole
- name: Lti::IMS::Result
- name: Lti::MembershipService
- name: Lti::ToolConfigurationsApi
- name: Security
paths:
  /api/lti/accounts/{account_id}/data_services:
    get:
      summary: index
      tags:
      - Lti::DataService
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        example: 8e3650f3-579f-4388-90f0-71b68ee76a79
      - name: subscription
        in: query
        required: false
        schema:
          type: object
          properties:
            ContextId:
              type: string
            ContextType:
              type: string
            EventTypes:
              type: array
              items:
                type: string
            Format:
              type: string
            OwnerId:
              type: string
            TransportMetadata:
              type: object
              properties:
                Url:
                  type: string
              required:
              - Url
            TransportType:
              type: string
          required:
          - ContextId
          - ContextType
          - EventTypes
          - Format
          - OwnerId
          - TransportMetadata
          - TransportType
        example:
          ContextId: xCoyrm3KhO7W6h8yizdZrujDf9OATC7AnLKe62DN
          ContextType: root_account
          EventTypes:
          - discussion_topic_created
          Format: live-event
          OwnerId: '196495'
          TransportMetadata:
            Url: sqs.example
          TransportType: sqs
      responses:
        '200':
          description: returns 200 success
          content:
            application/vnd.canvas.dataservices+json:
              schema:
                type: string
              example: '{"ContextId":"xCoyrm3KhO7W6h8yizdZrujDf9OATC7AnLKe62DN","ContextType":"root_account","EventTypes":["discussion_topic_created"],"Format":"live-event","TransportMetadata":{"Url":"sqs.example"},"TransportType":"sqs"}'
        '401':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                    - type
                    - message
                required:
                - errors
              example:
                errors:
                  type: unauthorized
                  message: Invalid access token format
        '500':
          description: adds OwnerId and OwnerType if passed in for a person
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                        error_code:
                          type: string
                      required:
                      - message
                      - error_code
                  error_report_id:
                    type: integer
                required:
                - errors
                - error_report_id
              example:
                errors:
                - message: An error occurred.
                  error_code: internal_server_error
                error_report_id: 127940
        '404':
          description: raises a 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                      required:
                      - message
                required:
                - errors
              example:
                errors:
                - message: The specified resource does not exist.
        '422':
          description: raises an unprocessable_entity
          content:
            text/html:
              schema:
                type: string
              example: ''
  /api/lti/accounts/{account_id}/data_services/{id}:
    get:
      summary: show
      tags:
      - Lti::DataService
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        example: 71527019-2da4-49e3-b4e3-de2e55f04a85
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: testid
      - name: subscription
        in: query
        required: false
        schema:
          type: object
          properties:
            ContextId:
              type: string
            ContextType:
              type: string
            EventTypes:
              type: array
              items:
                type: string
            Format:
              type: string
            TransportMetadata:
              type: object
              properties:
                Url:
                  type: string
              required:
              - Url
            TransportType:
              type: string
            UpdatedBy:
              type: string
          required:
          - ContextId
          - ContextType
          - EventTypes
          - Format
          - TransportMetadata
          - TransportType
          - UpdatedBy
        example:
          ContextId: xCoyrm3KhO7W6h8yizdZrujDf9OATC7AnLKe62DN
          ContextType: root_account
          EventTypes:
          - discussion_topic_created
          Format: live-event
          TransportMetadata:
            Url: sqs.example
          TransportType: sqs
          UpdatedBy: '196493'
      responses:
        '200':
          description: returns 200 success
          content:
            application/vnd.canvas.dataservices+json:
              schema:
                type: string
              example: '{"ContextId":"xCoyrm3KhO7W6h8yizdZrujDf9OATC7AnLKe62DN","ContextType":"root_account","EventTypes":["discussion_topic_created"],"Format":"live-event","TransportMetadata":{"Url":"sqs.example"},"TransportType":"sqs"}'
        '401':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                    - type
                    - message
                required:
                - errors
              example:
                errors:
                  type: unauthorized
                  message: Invalid access token format
        '500':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                        error_code:
                          type: string
                      required:
                      - message
                      - error_code
                  error_report_id:
                    type: integer
                required:
                - errors
                - error_report_id
              example:
                errors:
                - message: An error occurred.
                  error_code: internal_server_error
                error_report_id: 127908
        '404':
          description: raises a 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                      required:
                      - message
                required:
                - errors
              example:
                errors:
                - message: The specified resource does not exist.
        '422':
          description: raises an unprocessable_entity
          content:
            text/html:
              schema:
                type: string
              example: ''
  /api/lti/accounts/{account_id}:
    get:
      summary: show
      tags:
      - Lti::AccountLookup
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: integer
        example: 1987650000000008145
      responses:
        '200':
          description: returns id, uuid, and other fields on account
          content:
            application/vnd.canvas.accountlookup+json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  workflow_state:
                    type: string
                  parent_account_id:
                    nullable: true
                  root_account_id:
                    nullable: true
                  uuid:
                    type: string
                  default_time_zone:
                    type: string
                required:
                - id
                - name
                - workflow_state
                - parent_account_id
                - root_account_id
                - uuid
                - default_time_zone
              example:
                id: 8145
                name: Default Account
                workflow_state: active
                parent_account_id: null
                root_account_id: null
                uuid: vYmDAUennzTRV43z1Oo4v0MYaY2pMJ3Dr1GaH3Mn
                default_time_zone: Etc/UTC
        '401':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                    - type
                    - message
                required:
                - errors
              example:
                errors:
                  type: unauthorized
                  message: Unknown or inactive Developer Key
        '500':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                        error_code:
                          type: string
                      required:
                      - message
                      - error_code
                  error_report_id:
                    type: integer
                required:
                - errors
                - error_report_id
              example:
                errors:
                - message: An error occurred.
                  error_code: internal_server_error
                error_report_id: 127858
        '404':
          description: returns a 404
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                      required:
                      - message
                required:
                - errors
              example:
                errors:
                - message: The specified resource does not exist.
  /api/lti/accounts/{account_id}/external_tools:
    get:
      summary: index
      tags:
      - Lti::AccountExternalTool
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        example: af01ae7a-c877-4297-a581-d63c1a6701de
      - name: client_id
        in: query
        required: false
        schema:
          type: string
        example: bad client id
      - name: verify_uniqueness
        in: query
        required: false
        schema:
          type: string
        example: 'true'
      responses:
        '200':
          description: returns id, domain, and other fields on account
          content:
            application/vnd.canvas.contextexternaltools+json:
              schema:
                type: array
                properties:
                  id:
                    type: integer
                  domain:
                    type: string
                  url:
                    type: string
                  consumer_key:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  created_at:
                    type: string
                  updated_at:
                    type: string
                  privacy_level:
                    type: string
                  custom_fields:
                    type: object
                    properties:
                      no_expansion:
                        type: string
                      has_expansion:
                        type: string
                    required:
                    - no_expansion
                    - has_expansion
                  workflow_state:
                    type: string
                  account_navigation:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                      text:
                        type: string
                      icon_url:
                        type: string
                      placement:
                        type: string
                      message_type:
                        type: string
                      target_link_uri:
                        type: string
                      canvas_icon_class:
                        type: string
                      label:
                        type: string
                      selection_width:
                        type: integer
                      selection_height:
                        type: integer
                    required:
                    - enabled
                    - text
                    - icon_url
                    - placement
                    - message_type
                    - target_link_uri
                    - canvas_icon_class
                    - label
                    - selection_width
                    - selection_height
                  assignment_edit:
                    nullable: true
                  assignment_group_menu:
                    nullable: true
                  assignment_index_menu:
                    nullable: true
                  assignment_menu:
                    nullable: true
                  assignment_selection:
                    nullable: true
                  assignment_view:
                    nullable: true
                  collaboration:
                    nullable: true
                  course_assignments_menu:
                    nullable: true
                  course_home_sub_navigation:
                    nullable: true
                  course_navigation:
                    type: object
                    properties:
                      enabled:
                        type: boolean
                      text:
                        type: string
                      icon_url:
                        type: string
                      placement:
                        type: string
                      message_type:
                        type: string
                      target_link_uri:
                        type: string
                      canvas_icon_class:
                        type: string
                      label:
                        type: string
                      selection_width:
                        type: integer
                      selection_height:
                        type: integer
                    required:
                    - enabled
                    - text
                    - icon_url
                    - placement
                    - message_type
                    - target_link_uri
                    - canvas_icon_class
                    - label
                    - selection_width
                    - selection_height
                  course_settings_sub_navigation:
                    nullable: true
                  discussion_topic_index_menu:
                    nullable: true
                  discussion_topic_menu:
                    nullable: true
                  file_index_menu:
                    nullable: true
                  file_menu:
                    nullable: true
                  global_navigation:
                    nullable: true
                  homework_submission:
                    nullable: true
                  link_selection:
                    nullable: true
                  migration_selection:
                    nullable: true
                  module_group_menu:
                    nullable: true
                  module_index_menu:
                    nullable: true
                  module_index_menu_modal:
                    nullable: true
                  module_menu_modal:
                    nullable: true
                  module_menu:
                    nullable: true
                  post_grades:
                    nullable: true
                  quiz_index_menu:
                    nullable: true
                  quiz_menu:
                    nullable: true
                  resource_selection:
                    nullable: true
                  similarity_detection:
                    nullable: true
                  student_context_card:
                    nullable: true
                  submission_type_selection:
                    nullable: true
                  tool_configuration:
                    nullable: true
                  user_navigation:
                    nullable: true
                  wiki_index_menu:
                    nullable: true
                  wiki_page_menu:
                    nullable: true
                  editor_button:
                    nullable: true
                  selection_width:
                    type: integer
                  selection_height:
                    type: integer
                  icon_url:
                    type: string
                  not_selectable:
                    type: boolean
                  version:
                    type: string
                  developer_key_id:
                    type: integer
                  deployment_id:
                    type: string
                required:
                - id
                - domain
                - url
                - consumer_key
                - name
                - description
                - created_at
                - updated_at
                - privacy_level
                - custom_fields
                - workflow_state
                - account_navigation
                - assignment_edit
                - assignment_group_menu
                - assignment_index_menu
                - assignment_menu
                - assignment_selection
                - assignment_view
                - collaboration
                - course_assignments_menu
                - course_home_sub_navigation
                - course_navigation
                - course_settings_sub_navigation
                - discussion_topic_index_menu
                - discussion_topic_menu
                - file_index_menu
                - file_menu
                - global_navigation
                - homework_submission
                - link_selection
                - migration_selection
                - module_group_menu
                - module_index_menu
                - module_index_menu_modal
                - module_menu_modal
                - module_menu
                - post_grades
                - quiz_index_menu
                - quiz_menu
                - resource_selection
                - similarity_detection
                - student_context_card
                - submission_type_selection
                - tool_configuration
                - user_navigation
                - wiki_index_menu
                - wiki_page_menu
                - editor_button
                - selection_width
                - selection_height
                - icon_url
                - not_selectable
                - version
                - developer_key_id
                - deployment_id
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                    domain:
                      nullable: true
                    url:
                      type: string
                    consumer_key:
                      type: string
                    name:
                      type: string
                    description:
                      nullable: true
                    created_at:
                      type: string
                    updated_at:
                      type: string
                    privacy_level:
                      type: string
                    custom_fields:
                      nullable: true
                    workflow_state:
                      type: string
                    account_navigation:
                      nullable: true
                    assignment_edit:
                      nullable: true
                    assignment_group_menu:
                      nullable: true
                    assignment_index_menu:
                      nullable: true
                    assignment_menu:
                      nullable: true
                    assignment_selection:
                      nullable: true
                    assignment_view:
                      nullable: true
                    collaboration:
                      nullable: true
                    course_assignments_menu:
                      nullable: true
                    course_home_sub_navigation:
                      nullable: true
                    course_navigation:
                      nullable: true
                    course_settings_sub_navigation:
                      nullable: true
                    discussion_topic_index_menu:
                      nullable: true
                    discussion_topic_menu:
                      nullable: true
                    file_index_menu:
                      nullable: true
                    file_menu:
                      nullable: true
                    global_navigation:
                      nullable: true
                    homework_submission:
                      nullable: true
                    link_selection:
                      nullable: true
                    migration_selection:
                      nullable: true
                    module_group_menu:
                      nullable: true
                    module_index_menu:
                      nullable: true
                    module_index_menu_modal:
                      nullable: true
                    module_menu_modal:
                      nullable: true
                    module_menu:
                      nullable: true
                    post_grades:
                      nullable: true
                    quiz_index_menu:
                      nullable: true
                    quiz_menu:
                      nullable: true
                    resource_selection:
                      nullable: true
                    similarity_detection:
                      nullable: true
                    student_context_card:
                      nullable: true
                    submission_type_selection:
                      nullable: true
                    tool_configuration:
                      nullable: true
                    user_navigation:
                      nullable: true
                    wiki_index_menu:
                      nullable: true
                    wiki_page_menu:
                      nullable: true
                    editor_button:
                      nullable: true
                    not_selectable:
                      type: boolean
                    version:
                      type: string
                    developer_key_id:
                      type: integer
                    deployment_id:
                      type: string
                  required:
                  - id
                  - domain
                  - url
                  - consumer_key
                  - name
                  - description
                  - created_at
                  - updated_at
                  - privacy_level
                  - custom_fields
                  - workflow_state
                  - account_navigation
                  - assignment_edit
                  - assignment_group_menu
                  - assignment_index_menu
                  - assignment_menu
                  - assignment_selection
                  - assignment_view
                  - collaboration
                  - course_assignments_menu
                  - course_home_sub_navigation
                  - course_navigation
                  - course_settings_sub_navigation
                  - discussion_topic_index_menu
                  - discussion_topic_menu
                  - file_index_menu
                  - file_menu
                  - global_navigation
                  - homework_submission
                  - link_selection
                  - migration_selection
                  - module_group_menu
                  - module_index_menu
                  - module_index_menu_modal
                  - module_menu_modal
                  - module_menu
                  - post_grades
                  - quiz_index_menu
                  - quiz_menu
                  - resource_selection
                  - similarity_detection
                  - student_context_card
                  - submission_type_selection
                  - tool_configuration
                  - user_navigation
                  - wiki_index_menu
                  - wiki_page_menu
                  - editor_button
                  - not_selectable
                  - version
                  - developer_key_id
                  - deployment_id
              example:
              - id: 407149
                domain: null
                url: http://www.tool.com/launch
                consumer_key: key
                name: test tool
                description: null
                created_at: '2023-12-15T05:37:54Z'
                updated_at: '2023-12-15T05:37:54Z'
                privacy_level: public
                custom_fields: null
                workflow_state: public
                account_navigation: null
                assignment_edit: null
                assignment_group_menu: null
                assignment_index_menu: null
                assignment_menu: null
                assignment_selection: null
                assignment_view: null
                collaboration: null
                course_assignments_menu: null
                course_home_sub_navigation: null
                course_navigation: null
                course_settings_sub_navigation: null
                discussion_topic_index_menu: null
                discussion_topic_menu: null
                file_index_menu: null
                file_menu: null
                global_navigation: null
                homework_submission: null
                link_selection: null
                migration_selection: null
                module_group_menu: null
                module_index_menu: null
                module_index_menu_modal: null
                module_menu_modal: null
                module_menu: null
                post_grades: null
                quiz_index_menu: null
                quiz_menu: null
                resource_selection: null
                similarity_detection: null
                student_context_card: null
                submission_type_selection: null
                tool_configuration: null
                user_navigation: null
                wiki_index_menu: null
                wiki_page_menu: null
                editor_button: null
                not_selectable: false
                version: '1.3'
                developer_key_id: 142141
                deployment_id: 407149:af01ae7a-c877-4297-a581-d63c1a6701de
        '401':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                    - type
                    - message
                required:
                - errors
              example:
                errors:
                  type: unauthorized
                  message: Missing access token
            text/html:
              schema:
                type: string
              example: ''
        '500':
          description: does not return ims mime_type
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                        error_code:
                          type: string
                      required:
                      - message
                      - error_code
                  error_report_id:
                    type: integer
                required:
                - errors
                - error_report_id
              example:
                errors:
                - message: An error occurred.
                  error_code: internal_server_error
                error_report_id: 127850
        '400':
          description: return 400
          content:
            application/vnd.canvas.contextexternaltools+json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      tool_curre

# --- truncated at 32 KB (207 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/instructure/refs/heads/main/openapi/instructure-canvas-lti-openapi.yml