Media
Search media by the given query parameters. If multiple options are provided, we will use a logical AND operation when searching!
Substring of the media title you want to search for.
Minimum size of the media in bytes.
Maximum size of the media in bytes.
Start date of the search interval. Format YYYY-MM-DD
End date of the search interval. Format YYYY-MM-DD
Email address of the owner of the media.
The full name of the tag, you want to list media objects for.
The source of the media you want to list media objects for.
The page to retrieve. Default: 1.
1
The number of results per page. Default: 20, Max: 50.
20
GET /api/public/v1/media/search HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"media": [
{
"id": 1,
"title": "text",
"description": "text",
"duration": 1,
"created_at": "2025-06-27T08:36:24.130Z",
"thumbnail_url": "text",
"transcoding_status": "text",
"owner": {
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text"
},
"size": 1,
"source": "text",
"embed_id": "text",
"lti_launch_id": "text"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"total_count": 1
}
}
The ID of the media.
GET /api/public/v1/media/{media_id} HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"media": {
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text",
"collection": {
"id": 1,
"name": "text",
"type": "text",
"permission": "text",
"owner": {
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text"
},
"created_at": "2025-06-27T08:36:24.130Z",
"course_id": 1
}
}
}
The ID of the media.
DELETE /api/public/v1/media/{media_id} HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"media": {
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text",
"collection": {
"id": 1,
"name": "text",
"type": "text",
"permission": "text",
"owner": {
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text"
},
"created_at": "2025-06-27T08:36:24.130Z",
"course_id": 1
}
}
}
The ID of the media.
GET /api/public/v1/media/{media_id}/courses HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"courses": [
{
"id": 1,
"name": "text",
"embedded_at": "2025-06-27T08:36:24.130Z"
}
]
}
Adds a Media to a Course Collection for the given course_id. Returns the URL to LTI-launch the embedded media.
The ID of the media.
An object containing the necessary information for embedding the media
Id of the course to embed the media in.
The type of the embed. Studio uses "embed" to create embedding with media tabs and "bare_embed" to create one with only the media player.
A flag that controlls if the embedded media should be downloadable or not.
POST /api/public/v1/media/{media_id}/create_embed HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"course_id": 1,
"embed_type": "text",
"downloadable": true
}
{
"embed_url": "text"
}
The ID of the media.
The quality the user wants to download
GET /api/public/v1/media/{media_id}/download HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
No content
The ID of the media.
GET /api/public/v1/media/{media_id}/permissions HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"users": [
{
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text",
"permission": "text"
}
],
"groups": [
{
"id": 1,
"name": "text",
"permission": "text"
}
]
}
The ID of the media.
An array with objects describing the permissions to add.
The action to perform.
The id of the user or group.
The share type.
The permission type. The default is "view".
view
Possible values: POST /api/public/v1/media/{media_id}/permissions HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 73
[
{
"action": "create",
"id": 1,
"share_type": "user",
"permission_type": "view"
}
]
{
"users": [
{
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text",
"permission": "text"
}
],
"groups": [
{
"id": 1,
"name": "text",
"permission": "text"
}
]
}
The ID of the media.
GET /api/public/v1/media/{media_id}/perspectives HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"users": [
{
"uuid": "text",
"title": "text",
"description": "text",
"duration": 1,
"created_at": "2025-06-27T08:36:24.130Z",
"collection": {
"id": 1,
"name": "text",
"type": "text",
"permission": "text",
"owner": {
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text"
},
"created_at": "2025-06-27T08:36:24.130Z",
"course_id": 1
}
}
]
}
The ID of the media.
GET /api/public/v1/media/{media_id}/sources HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"sources": [
{
"mime_type": "text",
"url": "text",
"target": "text",
"definition": "text",
"transcoding_guid": "text",
"status": "text"
}
]
}
The ID of the media.
Filter users by a minimum permission level. If provided, only users with this permission or higher will be returned. The permissions are hierarchical: 'edit' includes 'view', and 'view' includes 'access'.
access
Possible values: GET /api/public/v1/media/{media_id}/users HTTP/1.1
Host: tw.instructuremedia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"user_permissions": [
{
"id": 1,
"full_name": "text",
"display_name": "text",
"email": "text",
"permission": "text"
}
]
}
Last updated
Was this helpful?