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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/panopto-sessions-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
openapi: 3.2.0
info:
title: Panopto Public Accessibility Sessions API
description: The public API for Panopto. OpenID & OAuth information can be found at Panopto/oauth2/.well-known/openid-configuration
version: '1'
servers:
- url: https://<PanoptoServerURL>(i.e. example.hosted.panopto.com)/Panopto
tags:
- name: Sessions
description: Session API
paths:
/api/v1/sessions/{id}:
get:
tags:
- Sessions
summary: Get a session by Id
operationId: Sessions_GetSessionById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Session'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
put:
tags:
- Sessions
summary: Update a session
description: Update the session's name, description, or parent folder.
operationId: Sessions_UpdateSessionMetadata
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Session'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SessionUpdate'
delete:
tags:
- Sessions
summary: Delete a session
description: Deletes a session based on the retention policies
operationId: Sessions_DeleteSession
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
type: string
format: guid
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
/api/v1/sessions/search:
get:
tags:
- Sessions
summary: Search for sessions based on a keyword
description: 'To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
**Note:** The Session Search API does not return all available properties for a session. The CreatedBy and Urls properties (except the ViewerUrl and ThumbnailUrl) are not returned when searching for a session. To get these properties, you can get the specific session by Id.'
operationId: Sessions_SearchForSessions
parameters:
- name: searchQuery
in: query
required: true
schema:
type: string
- name: includeFields
in: query
description: Comma delimited list of optional fields to include in search results. Currently this is limited to 'Context'
schema:
type: string
default: ''
- name: sortField
in: query
x-schema:
$ref: '#/components/schemas/SessionSortFields'
schema:
type: string
enum:
- Name
- CreatedDate
- Relevance
default: Name
- name: sortOrder
in: query
x-schema:
$ref: '#/components/schemas/SortOrder'
schema:
type: string
enum:
- Asc
- Desc
default: Asc
- name: pageNumber
in: query
description: Page numbering starts at 0
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfSession'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
/api/v1/sessions/inProgress/webcast:
get:
tags:
- Sessions
summary: Get a list of webcasts (live sessions) that are currently in progress.
description: 'To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
**Note:** This endpoint does not return all available properties for a session. The CreatedBy and Urls properties (except the ViewerUrl and ThumbnailUrl) are not returned when searching for a session. To get these properties, you can get the specific session by Id.'
operationId: Sessions_GetInProgressWebcasts
parameters:
- name: sortField
in: query
x-schema:
$ref: '#/components/schemas/SessionSortFields'
schema:
type: string
enum:
- Name
- CreatedDate
- Relevance
default: Name
- name: sortOrder
in: query
x-schema:
$ref: '#/components/schemas/SortOrder'
schema:
type: string
enum:
- Asc
- Desc
default: Asc
- name: pageNumber
in: query
description: Page numbering starts at 0
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfSession'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
/api/v1/sessions/inProgress/recording:
get:
tags:
- Sessions
summary: Get a list of recordings that are currently in progress.
description: 'To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
**Note:** This endpoint does not return all available properties for a session. The CreatedBy and Urls properties (except the ViewerUrl and ThumbnailUrl) are not returned when searching for a session. To get these properties, you can get the specific session by Id.'
operationId: Sessions_GetInProgressRecordings
parameters:
- name: sortField
in: query
x-schema:
$ref: '#/components/schemas/SessionSortFields'
schema:
type: string
enum:
- Name
- CreatedDate
- Relevance
default: Name
- name: sortOrder
in: query
x-schema:
$ref: '#/components/schemas/SortOrder'
schema:
type: string
enum:
- Asc
- Desc
default: Asc
- name: pageNumber
in: query
description: Page numbering starts at 0
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfSession'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
/api/v1/sessions/{id}/viewers:
get:
tags:
- Sessions
summary: Get a list of users who have viewed this session
description: Gets a list of all users who have viewed this session, and how much of the session they have viewed
operationId: Sessions_GetSessionViewingStats
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
- name: sortField
in: query
x-schema:
$ref: '#/components/schemas/SessionViewerStatsSortFields'
schema:
type: string
enum:
- UserName
- LastViewedDateTime
default: UserName
- name: sortOrder
in: query
x-schema:
$ref: '#/components/schemas/SortOrder'
schema:
type: string
enum:
- Asc
- Desc
default: Asc
- name: pageNumber
in: query
description: Page numbering starts at 0
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfSessionViewerStats'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
/api/v1/sessions/{id}/tags:
get:
tags:
- Sessions
summary: Get a list of tags associated with the given session
operationId: Sessions_GetTagsForSession
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
- name: sortField
in: query
x-schema:
$ref: '#/components/schemas/TagSortFields'
schema:
type: string
enum:
- CreateDate
- UsageCount
- Content
- Creator
- MostRecentUseDate
default: CreateDate
- name: sortOrder
in: query
x-schema:
$ref: '#/components/schemas/SortOrder'
schema:
type: string
enum:
- Asc
- Desc
default: Asc
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfTag'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
put:
tags:
- Sessions
summary: Update the tags associated with the given session
description: Replaces the tags currently associated with the session with the provided tags.
operationId: Sessions_UpdateTagsForSession
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfTag'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SessionTagUpdate'
/api/v1/sessions/{id}/captions:
post:
tags:
- Sessions
summary: Upload a caption file (in SRT or VTT format) to this session
description: Content should be sent as 'multipart/form-data', with the caption file attached as part of the multi-part data. This endpoint is used to upload captions for an entire session, based off of the edited times. Please verify that the timestamps in your caption file are correlated to the session times, and not an individual stream.
operationId: Sessions_UploadCaptionsToSession
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
requestBody:
content:
application/json:
schema:
type: object
properties:
language:
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
delete:
tags:
- Sessions
summary: Deletes all captions for this session
description: This operation is not reversible. Please be very careful before deleting captions. They cannot be recovered once deleted.
operationId: Sessions_DeleteSessionCaptions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
/api/v1/sessions/{id}/captions/languages/{language}:
delete:
tags:
- Sessions
summary: Deletes all captions for this session in the specified language.
description: This operation is not reversible. Please be very careful before deleting captions. They cannot be recovered once deleted. To delete "Default" captions, set "null" for the language parameter in the URL.
operationId: Sessions_DeleteSessionCaptionsForLanguage
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
- name: language
in: path
required: true
x-schema:
$ref: '#/components/schemas/ContentLanguage'
schema:
type: string
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
- name: language
in: query
schema:
title: ContentLanguage
type: string
description: Language of content such as sessions, streams, or captions.
x-enumNames:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
responses:
'200':
description: ''
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
/api/v1/sessions/{id}/settings/access:
get:
tags:
- Sessions
summary: Get the access settings for the given session
operationId: Sessions_GetAccessSettings
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AccessSettings'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
put:
tags:
- Sessions
summary: Update the access settings for the given session
description: IsInherited is readonly and indicates whether or not access is being inherited from a parent folder. If AccessLevel is set to a more restrictive value than that inherited, the inherited value will take precedence.
operationId: Sessions_UpdateAccessSettings
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AccessSettings'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccessSettings'
/api/v1/sessions/{id}/permissions:
get:
tags:
- Sessions
summary: Get the user and group permissions for the given session
description: To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
operationId: Sessions_GetPermissions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
- name: pageNumber
in: query
description: Page numbering starts at 0
schema:
type: integer
format: int32
default: 0
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListResponseOfPermission'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
post:
tags:
- Sessions
summary: Create a session permission by assigning a role to a user or group
operationId: Sessions_CreatePermission
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Permission'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PermissionCreate'
delete:
tags:
- Sessions
summary: Remove permission from the session
description: This operation is only valid for non-inherited permissions. If role type and role id are omitted, all non-inherited permissions for the principal will be removed.
operationId: Sessions_DeletePermission
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
- name: RoleId
in: query
description: Id of the role to remove from the user or group. Required when RoleType is null or None.
schema:
type: string
format: guid
- name: RoleType
in: query
description: Type of the role to remove from the user or group. Required when RoleId is null.
x-schema:
$ref: '#/components/schemas/BuiltInRoleType'
schema:
type: string
enum:
- None
- Viewer
- Creator
- Publisher
- name: PrincipalId
in: query
description: Id of the user or group from which the role is being removed.
schema:
type: string
format: guid
- name: PrincipalType
in: query
description: Type of principal, either a user or group.
x-schema:
$ref: '#/components/schemas/PrincipalType'
schema:
type: string
enum:
- User
- Group
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PermissionDelete'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested session or permission was not found
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
/api/v1/sessions/{id}/manage/scorm:
get:
tags:
- Sessions
summary: Download a SCORM manifest by session ID
description: This endpoint fetches the SCORM manifest for the specified session ID and returns it as a ZIP file attachment.
operationId: Sessions_GetScormManifestById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
- name: type
in: query
required: true
x-schema:
$ref: '#/components/schemas/SessionScormManifestType'
schema:
type: string
enum:
- Interactive
- Embed
responses:
'200':
description: The SCORM manifest ZIP file in the response body
content:
application/json:
schema:
type: string
format: byte
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
description: The requested SCORM manifest was not found or cannot be fetched
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
/api/v1/sessions/{id}/sessioncopy:
post:
tags:
- Sessions
summary: Perform a session copy
operationId: Sessions_Copy
parameters:
- name: id
in: path
required: true
schema:
type: string
format: guid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SessionCopyResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SessionCopyCreate'
components:
schemas:
AccessSettings:
type: object
required:
- IsInherited
- Level
properties:
IsInherited:
type: boolean
description: Indicates whether or not the access settings are inherited.
Level:
description: Indicates the level of access set for this item.
$ref: '#/components/schemas/AccessLevel'
SortOrder:
type: string
description: ''
x-enumNames:
- Asc
- Desc
enum:
- Asc
- Desc
AccessLevel:
type: string
description: ''
x-enumNames:
- Restricted
- OrganizationUnlisted
- Organization
- PublicUnlisted
- Public
enum:
- Restricted
- OrganizationUnlisted
- Organization
- PublicUnlisted
- Public
SessionUrls:
type: object
properties:
ViewerUrl:
type: string
description: The URL to view this session in Panopto
EmbedUrl:
type: string
description: The URL to an embedded version of this session
ShareSettingsUrl:
type: string
DownloadUrl:
type: string
description: The URL to download this session. This URL is intended for one-time download only, and is not appropriate for direct streaming or playback. May be blank if not allowed.
AudioDescriptionDownloadUrl:
type: string
CaptionDownloadUrl:
type: string
description: The URL to download captions for this session, if available.
EditorUrl:
type: string
description: The URL to edit this session in Panopto, if you are a creator.
ThumbnailUrl:
type: string
description: The URL to retrieve the thumbnail for this session
PrincipalType:
type: string
description: ''
x-enumNames:
- User
- Group
enum:
-
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/panopto/refs/heads/main/openapi/panopto-sessions-api-openapi.yml