Canvas Media Objects API

The Media Objects API from Canvas — 10 operation(s) for media objects.

Operations 12

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/media_objects/{media_object_id}/media_tracks List captions on a media object · List media tracks for a Media Object or Attachment #
Ask an LLM
“What caption or subtitle tracks does a media object have?”
“Which languages of captions exist for a recorded video by media object ID?”
Tell an agent
List the media tracks for media object {media_object_id}.
Show captions on media object {media_object_id} including {include}.
PUT /v1/media_objects/{media_object_id}/media_tracks Replace caption tracks on a media object · Update Media Tracks #
Ask an LLM
“How do I replace all the subtitles on a media object?”
“Will tracks I leave out be deleted when I update a media object's captions?”
Tell an agent destructive · confirm first
Replace the media tracks on media object {media_object_id}.
Update captions on media object {media_object_id} and return {include}.
GET /v1/media_attachments/{attachment_id}/media_tracks List captions on a media attachment · List media tracks for a Media Object or Attachment #
Ask an LLM
“What caption tracks are attached to an uploaded media file?”
“Can I list subtitles for a media attachment by its attachment ID?”
Tell an agent
List the media tracks for attachment {attachment_id}.
Show captions on media attachment {attachment_id} including {include}.
PUT /v1/media_attachments/{attachment_id}/media_tracks Replace caption tracks on a media attachment · Update Media Tracks #
Ask an LLM
“How do I swap out the subtitles on a media attachment?”
“Does updating an attachment's tracks remove ones I don't list?”
Tell an agent destructive · confirm first
Replace the media tracks on attachment {attachment_id}.
Update captions on media attachment {attachment_id} and return {include}.
GET /v1/media_objects List media objects I created · List Media Objects #
Ask an LLM
“Which videos and audio recordings have I uploaded?”
“Can I sort my own media objects by title or date?”
Tell an agent
List the media objects I created.
List my media objects sorted by {sort} in {order} order.
GET /v1/courses/{course_id}/media_objects List media objects in a course · List Media Objects #
Ask an LLM
“What recordings are associated with my course?”
“Can I list a course's media objects without their source data?”
Tell an agent
List the media objects in course {course_id}.
List course {course_id}'s media objects sorted by {sort}.
GET /v1/groups/{group_id}/media_objects List media objects in a group · List Media Objects #
Ask an LLM
“What videos have been added to a student group?”
“Can I list a group's media objects in title order?”
Tell an agent
List the media objects in group {group_id}.
List group {group_id}'s media objects sorted by {sort}.
GET /v1/media_attachments List my media attachments · List Media Objects #
Ask an LLM
“Which media files have I uploaded as attachments?”
“Can I list my media attachments while excluding source details?”
Tell an agent
List my media attachments.
List my media attachments ordered {order} by {sort}.
GET /v1/courses/{course_id}/media_attachments List media attachments in a course · List Media Objects #
Ask an LLM
“What uploaded media attachments belong to a course?”
“Can I sort a course's media attachments by creation date?”
Tell an agent
List the media attachments in course {course_id}.
List course {course_id}'s media attachments ordered {order}.
GET /v1/groups/{group_id}/media_attachments List media attachments in a group · List Media Objects #
Ask an LLM
“Which media attachments has a group uploaded?”
“Can I sort a group's media attachments?”
Tell an agent
List the media attachments in group {group_id}.
List group {group_id}'s media attachments ordered {order}.
PUT /v1/media_objects/{media_object_id} Rename a media object · Update Media Object #
Ask an LLM
“How do I change the title of a recorded video by media object ID?”
“Can I restrict whether viewers see the rolling transcript on a media object?”
Tell an agent
Rename media object {media_object_id} to {user_entered_title}.
Set viewer restrictions on media object {media_object_id} to {viewer_restrictions}.
PUT /v1/media_attachments/{attachment_id} Rename a media attachment · Update Media Object #
Ask an LLM
“How do I retitle an uploaded media attachment?”
“Can I set viewer restrictions on a media attachment?”
Tell an agent
Rename media attachment {attachment_id} to {user_entered_title}.
Set viewer restrictions on attachment {attachment_id} to {viewer_restrictions}.

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-media-objects-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-media-objects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canvas LMS REST Media Objects 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: Media Objects
  x-resource: media_objects
  externalDocs:
    url: https://canvas.instructure.com/doc/api/media_objects.html
paths:
  /v1/media_objects/{media_object_id}/media_tracks:
    get:
      tags:
      - Media Objects
      operationId: list_media_tracks_for_media_object_or_attachment_media_objects
      summary: List media tracks for a Media Object or Attachment
      description: List the media tracks associated with a media object or attachment
      parameters:
      - name: media_object_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - content
            - webvtt_content
            - updated_at
            - created_at
        required: false
        description: 'By default, index returns id, locale, kind, media_object_id, and user_id for each of the

          result MediaTracks. Use include[] to

          add additional fields. For example include[]=content'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaTrack'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
    put:
      tags:
      - Media Objects
      operationId: update_media_tracks_media_objects
      summary: Update Media Tracks
      description: 'Replace the media tracks associated with a media object or attachment with

        the array of tracks provided in the body.

        Update will

        delete any existing tracks not listed,

        leave untouched any tracks with no content field,

        and update or create tracks with a content field.'
      parameters:
      - name: media_object_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  type: array
                  items:
                    type: string
                    enum:
                    - content
                    - webvtt_content
                    - updated_at
                    - created_at
                  description: 'By default, an update returns id, locale, kind, media_object_id, and user_id for each of the

                    result MediaTracks. Use include[] to

                    add additional fields. For example include[]=content'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                include:
                  type: array
                  items:
                    type: string
                    enum:
                    - content
                    - webvtt_content
                    - updated_at
                    - created_at
                  description: 'By default, an update returns id, locale, kind, media_object_id, and user_id for each of the

                    result MediaTracks. Use include[] to

                    add additional fields. For example include[]=content'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaTrack'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/media_attachments/{attachment_id}/media_tracks:
    get:
      tags:
      - Media Objects
      operationId: list_media_tracks_for_media_object_or_attachment_media_attachments
      summary: List media tracks for a Media Object or Attachment
      description: List the media tracks associated with a media object or attachment
      parameters:
      - name: attachment_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: include
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - content
            - webvtt_content
            - updated_at
            - created_at
        required: false
        description: 'By default, index returns id, locale, kind, media_object_id, and user_id for each of the

          result MediaTracks. Use include[] to

          add additional fields. For example include[]=content'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaTrack'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
    put:
      tags:
      - Media Objects
      operationId: update_media_tracks_media_attachments
      summary: Update Media Tracks
      description: 'Replace the media tracks associated with a media object or attachment with

        the array of tracks provided in the body.

        Update will

        delete any existing tracks not listed,

        leave untouched any tracks with no content field,

        and update or create tracks with a content field.'
      parameters:
      - name: attachment_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  type: array
                  items:
                    type: string
                    enum:
                    - content
                    - webvtt_content
                    - updated_at
                    - created_at
                  description: 'By default, an update returns id, locale, kind, media_object_id, and user_id for each of the

                    result MediaTracks. Use include[] to

                    add additional fields. For example include[]=content'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                include:
                  type: array
                  items:
                    type: string
                    enum:
                    - content
                    - webvtt_content
                    - updated_at
                    - created_at
                  description: 'By default, an update returns id, locale, kind, media_object_id, and user_id for each of the

                    result MediaTracks. Use include[] to

                    add additional fields. For example include[]=content'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaTrack'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/media_objects:
    get:
      tags:
      - Media Objects
      operationId: list_media_objects_media_objects
      summary: List Media Objects
      description: 'Returns media objects created by the user making the request. When

        using the second version, returns media objects associated with

        the given course.'
      parameters:
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - title
          - created_at
        required: false
        description: 'Field to sort on. Default is "title"


          title:: sorts on user_entered_title if available, title if not.


          created_at:: sorts on the object''s creation time.'
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: Sort direction. Default is "asc"
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - sources
            - tracks
        required: false
        description: 'Array of data to exclude. By excluding "sources" and "tracks",

          the api will not need to query kaltura, which greatly

          speeds up its response.


          sources:: Do not query kaltura for media_sources

          tracks:: Do not query kaltura for media_tracks'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaObject'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/courses/{course_id}/media_objects:
    get:
      tags:
      - Media Objects
      operationId: list_media_objects_courses_media_objects
      summary: List Media Objects
      description: 'Returns media objects created by the user making the request. When

        using the second version, returns media objects associated with

        the given course.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - title
          - created_at
        required: false
        description: 'Field to sort on. Default is "title"


          title:: sorts on user_entered_title if available, title if not.


          created_at:: sorts on the object''s creation time.'
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: Sort direction. Default is "asc"
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - sources
            - tracks
        required: false
        description: 'Array of data to exclude. By excluding "sources" and "tracks",

          the api will not need to query kaltura, which greatly

          speeds up its response.


          sources:: Do not query kaltura for media_sources

          tracks:: Do not query kaltura for media_tracks'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaObject'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/groups/{group_id}/media_objects:
    get:
      tags:
      - Media Objects
      operationId: list_media_objects_groups_media_objects
      summary: List Media Objects
      description: 'Returns media objects created by the user making the request. When

        using the second version, returns media objects associated with

        the given course.'
      parameters:
      - name: group_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - title
          - created_at
        required: false
        description: 'Field to sort on. Default is "title"


          title:: sorts on user_entered_title if available, title if not.


          created_at:: sorts on the object''s creation time.'
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: Sort direction. Default is "asc"
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - sources
            - tracks
        required: false
        description: 'Array of data to exclude. By excluding "sources" and "tracks",

          the api will not need to query kaltura, which greatly

          speeds up its response.


          sources:: Do not query kaltura for media_sources

          tracks:: Do not query kaltura for media_tracks'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaObject'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/media_attachments:
    get:
      tags:
      - Media Objects
      operationId: list_media_objects_media_attachments
      summary: List Media Objects
      description: 'Returns media objects created by the user making the request. When

        using the second version, returns media objects associated with

        the given course.'
      parameters:
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - title
          - created_at
        required: false
        description: 'Field to sort on. Default is "title"


          title:: sorts on user_entered_title if available, title if not.


          created_at:: sorts on the object''s creation time.'
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: Sort direction. Default is "asc"
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - sources
            - tracks
        required: false
        description: 'Array of data to exclude. By excluding "sources" and "tracks",

          the api will not need to query kaltura, which greatly

          speeds up its response.


          sources:: Do not query kaltura for media_sources

          tracks:: Do not query kaltura for media_tracks'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaObject'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/courses/{course_id}/media_attachments:
    get:
      tags:
      - Media Objects
      operationId: list_media_objects_courses_media_attachments
      summary: List Media Objects
      description: 'Returns media objects created by the user making the request. When

        using the second version, returns media objects associated with

        the given course.'
      parameters:
      - name: course_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - title
          - created_at
        required: false
        description: 'Field to sort on. Default is "title"


          title:: sorts on user_entered_title if available, title if not.


          created_at:: sorts on the object''s creation time.'
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: Sort direction. Default is "asc"
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - sources
            - tracks
        required: false
        description: 'Array of data to exclude. By excluding "sources" and "tracks",

          the api will not need to query kaltura, which greatly

          speeds up its response.


          sources:: Do not query kaltura for media_sources

          tracks:: Do not query kaltura for media_tracks'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaObject'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/groups/{group_id}/media_attachments:
    get:
      tags:
      - Media Objects
      operationId: list_media_objects_groups_media_attachments
      summary: List Media Objects
      description: 'Returns media objects created by the user making the request. When

        using the second version, returns media objects associated with

        the given course.'
      parameters:
      - name: group_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - title
          - created_at
        required: false
        description: 'Field to sort on. Default is "title"


          title:: sorts on user_entered_title if available, title if not.


          created_at:: sorts on the object''s creation time.'
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
        required: false
        description: Sort direction. Default is "asc"
      - name: exclude
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - sources
            - tracks
        required: false
        description: 'Array of data to exclude. By excluding "sources" and "tracks",

          the api will not need to query kaltura, which greatly

          speeds up its response.


          sources:: Do not query kaltura for media_sources

          tracks:: Do not query kaltura for media_tracks'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaObject'
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/media_objects/{media_object_id}:
    put:
      tags:
      - Media Objects
      operationId: update_media_object_media_objects
      summary: Update Media Object
      description: Updates the title of a media object.
      parameters:
      - name: media_object_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                user_entered_title:
                  type: string
                  description: The new title.
                viewer_restrictions:
                  type: object
                  additionalProperties: true
                  description: 'A JSON object describing viewer access restrictions for this media.

                    - show_rolling_transcript [Optional, Boolean]: Whether to show the rolling transcripts of the media during playback, or not.'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                user_entered_title:
                  type: string
                  description: The new title.
                viewer_restrictions:
                  type: object
                  additionalProperties: true
                  description: 'A JSON object describing viewer access restrictions for this media.

                    - show_rolling_transcript [Optional, Boolean]: Whether to show the rolling transcripts of the media during playback, or not.'
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
  /v1/media_attachments/{attachment_id}:
    put:
      tags:
      - Media Objects
      operationId: update_media_object_media_attachments
      summary: Update Media Object
      description: Updates the title of a media object.
      parameters:
      - name: attachment_id
        in: path
        schema:
          type: string
        required: true
        description: ID
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                user_entered_title:
                  type: string
                  description: The new title.
                viewer_restrictions:
                  type: object
                  additionalProperties: true
                  description: 'A JSON object describing viewer access restrictions for this media.

                    - show_rolling_transcript [Optional, Boolean]: Whether to show the rolling transcripts of the media during playback, or not.'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                user_entered_title:
                  type: string
                  description: The new title.
                viewer_restrictions:
                  type: object
                  additionalProperties: true
                  description: 'A JSON object describing viewer access restrictions for this media.

                    - show_rolling_transcript [Optional, Boolean]: Whether to show the rolling transcripts of the media during playback, or not.'
      responses:
        '200':
          description: Success, no content returned
      externalDocs:
        url: https://canvas.instructure.com/doc/api/media_objects.html
components:
  schemas:
    MediaObject:
      type: object
      properties:
        can_add_captions:
          type: boolean
        user_entered_title:
          type: string
        title:
          type: string
        media_id:
          type: string
        media_type:
          type: string
        media_tracks:
          type: string
        media_sources:
          type: string
    MediaTrack:
      type: object
      properties:
        id:
          type: integer
          format: int64
        user_id:
          type: integer
          format: int64
        media_object_id:
          type: integer
          format: int64
        kind:
          type: string
        locale:
          type: string
        content:
          type: string
        created_at:
          type: string
        updated_at:
          type: string
        webvtt_content:
          type: string
  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