Canvas Asset Processor API

The Asset Processor API from Canvas — 3 operation(s) for asset processor.

Operations 4

POST /lti/asset_processors/{asset_processor_id}/reports Create an Asset Report #
PUT /lti/asset_processor_eulas/{context_external_tool_id}/deployment Update Eula Deployment Configuration #
POST /lti/asset_processor_eulas/{context_external_tool_id}/user Create an Eula Acceptance #
DELETE /lti/asset_processor_eulas/{context_external_tool_id}/user Delete Eula Acceptances for deployment #

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-asset-processor-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-asset-processor-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Asset Processor 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: Asset Processor
  x-resource: asset_processor
  externalDocs:
    url: https://canvas.instructure.com/doc/api/asset_processor.html
paths:
  /lti/asset_processors/{asset_processor_id}/reports:
    post:
      tags:
      - Asset Processor
      operationId: create_asset_report
      summary: Create an Asset Report
      description: 'Creates a report for a given Canvas-managed asset (such as a submission

        attachment).


        Returns an HTTP 201 (Created) on success.'
      parameters:
      - name: asset_processor_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                assetId:
                  type: string
                  description: 'The UUID of the asset to which the report applies. Canvas will supply

                    this to the tool in the the `LtiAssetProcessorSubmissionNotice`.'
                errorCode:
                  type: string
                  description: 'A machine-readable code indicating the cause of the failure, for reports

                    with a processingProgress value of `Failed`. The following standard error

                    codes are available, but tools may use their own (in which case the tool

                    may provide human-readable information in the `comment` field):

                    UNSUPPORTED_ASSET_TYPE, ASSET_TOO_LARGE, ASSET_TOO_SMALL,

                    EULA_NOT_ACCEPTED, DOWNLOAD_FAILED'
                indicationAlt:
                  type: string
                  description: 'Alternate text representing the meaning of the indicationColor for screen

                    readers or as a tooltip over the indication color.'
                indicationColor:
                  type: string
                  description: 'A hex (#RRGGBB) color code the tool wishes to use indicating the outcome

                    of an asset''s report.'
                priority:
                  type: integer
                  format: int64
                  description: 'A number from 0 (meaning "good" or "success") to 5 (meaning urgent or

                    time-critical notable features) indicating the tool''s perceived priority

                    of the report. If a priority is not known or applicable, the tool should

                    use the value 0.'
                processingProgress:
                  type: string
                  description: 'Indicates the status of the report. Should be one of the following:

                    Processed, Processing, PendingManual, Failed, NotProcessed, NotReady.

                    If an unrecognized value is given, the value will be stored, but will

                    be treated by Canvas as `NotReady`.'
                result:
                  type: string
                  description: 'A short string (16 characters or fewer) that briefly describes the

                    successful result of the processing. This should be provided if

                    processingProgress is Processed, and not provided otherwise.'
                timestamp:
                  type: string
                  description: 'An ISO8601 date time value with microsecond precision. Reports with newer

                    timestamps for the same asset and report type supersede

                    previously submitted reports with older (or equal) timestamps. Likewise,

                    if the timestamp provided is older than the latest timestamp for an

                    existing report (of same asset and type), the new report will be

                    ignored and the endpoint will return an HTTP 409 (Conflict).'
                title:
                  type: string
                  description: A human-readable title for the report, to be displayed to the user.
                type:
                  type: string
                  description: An opaque value representing the type of report.
                visibleToOwner:
                  type: boolean
                  description: 'A boolean value indicates whether the indicator and report

                    should be visible to the user who owns the asset being reported on.

                    If no value is provided, the platform should assume a default value of false'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                assetId:
                  type: string
                  description: 'The UUID of the asset to which the report applies. Canvas will supply

                    this to the tool in the the `LtiAssetProcessorSubmissionNotice`.'
                errorCode:
                  type: string
                  description: 'A machine-readable code indicating the cause of the failure, for reports

                    with a processingProgress value of `Failed`. The following standard error

                    codes are available, but tools may use their own (in which case the tool

                    may provide human-readable information in the `comment` field):

                    UNSUPPORTED_ASSET_TYPE, ASSET_TOO_LARGE, ASSET_TOO_SMALL,

                    EULA_NOT_ACCEPTED, DOWNLOAD_FAILED'
                indicationAlt:
                  type: string
                  description: 'Alternate text representing the meaning of the indicationColor for screen

                    readers or as a tooltip over the indication color.'
                indicationColor:
                  type: string
                  description: 'A hex (#RRGGBB) color code the tool wishes to use indicating the outcome

                    of an asset''s report.'
                priority:
                  type: integer
                  format: int64
                  description: 'A number from 0 (meaning "good" or "success") to 5 (meaning urgent or

                    time-critical notable features) indicating the tool''s perceived priority

                    of the report. If a priority is not known or applicable, the tool should

                    use the value 0.'
                processingProgress:
                  type: string
                  description: 'Indicates the status of the report. Should be one of the following:

                    Processed, Processing, PendingManual, Failed, NotProcessed, NotReady.

                    If an unrecognized value is given, the value will be stored, but will

                    be treated by Canvas as `NotReady`.'
                result:
                  type: string
                  description: 'A short string (16 characters or fewer) that briefly describes the

                    successful result of the processing. This should be provided if

                    processingProgress is Processed, and not provided otherwise.'
                timestamp:
                  type: string
                  description: 'An ISO8601 date time value with microsecond precision. Reports with newer

                    timestamps for the same asset and report type supersede

                    previously submitted reports with older (or equal) timestamps. Likewise,

                    if the timestamp provided is older than the latest timestamp for an

                    existing report (of same asset and type), the new report will be

                    ignored and the endpoint will return an HTTP 409 (Conflict).'
                title:
                  type: string
                  description: A human-readable title for the report, to be displayed to the user.
                type:
                  type: string
                  description: An opaque value representing the type of report.
                visibleToOwner:
                  type: boolean
                  description: 'A boolean value indicates whether the indicator and report

                    should be visible to the user who owns the asset being reported on.

                    If no value is provided, the platform should assume a default value of false'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: the input arguments, as accepted and stored in the database.
      externalDocs:
        url: https://canvas.instructure.com/doc/api/asset_processor.html
  /lti/asset_processor_eulas/{context_external_tool_id}/deployment:
    put:
      tags:
      - Asset Processor
      operationId: update_eula_deployment_configuration
      summary: Update Eula Deployment Configuration
      description: 'Provides a mechanism by which a platform can enable or disable the requirement

        for users to accept a EULA within the scope of an entire deployment'
      parameters:
      - name: context_external_tool_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                eulaRequired:
                  type: boolean
                  description: A boolean value representing whether or not the EULA is required for the deployment.
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                eulaRequired:
                  type: boolean
                  description: A boolean value representing whether or not the EULA is required for the deployment.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: the input arguments as accepted and stored in the database
      externalDocs:
        url: https://canvas.instructure.com/doc/api/asset_processor.html
  /lti/asset_processor_eulas/{context_external_tool_id}/user:
    post:
      tags:
      - Asset Processor
      operationId: create_eula_acceptance
      summary: Create an Eula Acceptance
      description: 'The EULA user acceptance service provides a mechanism

        by which a tool can notify a platform of whether or not a user has accepted a EULA.'
      parameters:
      - name: context_external_tool_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                userId:
                  type: string
                  description: 'The userId represents the user who has accepted or declined the EULA,

                    `lti_id` of the Canvas User.'
                accepted:
                  type: boolean
                  description: A boolean value representing whether or not the user has accepted the EULA
                timestamp:
                  type: string
                  description: 'The timestamp represents the time at which the user accepted or declined the EULA.

                    This timestamp must be formatted as an ISO 8601 date time.'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                userId:
                  type: string
                  description: 'The userId represents the user who has accepted or declined the EULA,

                    `lti_id` of the Canvas User.'
                accepted:
                  type: boolean
                  description: A boolean value representing whether or not the user has accepted the EULA
                timestamp:
                  type: string
                  description: 'The timestamp represents the time at which the user accepted or declined the EULA.

                    This timestamp must be formatted as an ISO 8601 date time.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: the input arguments as accepted and stored in the database
      externalDocs:
        url: https://canvas.instructure.com/doc/api/asset_processor.html
    delete:
      tags:
      - Asset Processor
      operationId: delete_eula_acceptances_for_deployment
      summary: Delete Eula Acceptances for deployment
      description: 'Remove the EULA acceptance status for all users within the current deployment.

        This will allow a tool to reset the EULA acceptance status for all users,

        and force them to accept the EULA again in the case that the EULA has changed.'
      parameters:
      - name: context_external_tool_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: string
                x-canvas-declared-type: 204 No Content
      externalDocs:
        url: https://canvas.instructure.com/doc/api/asset_processor.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