scheduledRecordings endpoints: Access issue
We have a number of folks using the Panopto APIs in individual departments at Duke, and they use Departmental Admin accounts to manage that work. One of those groups found recently that these 4 endpoints in the Scheduled Recordings API are returning 403 messages:
GET /api/v1/scheduledRecordings/{id}
Get the scheduled recording information for a session
PUT /api/v1/scheduledRecordings/{id}
Update the start or end time of a scheduled recording
DELETE /api/v1/scheduledRecordings/{id}
Cancel a scheduled recording
POST /api/v1/scheduledRecordings
Create a new scheduled recording
Can someone clarify if this is a bug, or something that could be addressed without assigning full site admin access for the account? If not, we'd also like to know whether the work being done right now to expand the APIs might address this need.
Answers
As an example of what happens when I try to POST, using our service account:
# POST /Panopto/api/v1/scheduledRecordings
def post_scheduled_recording(self, data:dict) -> list:
api_url = PanoptoCredentialsService.get_endpoint(self.config, "/Panopto/api/v1/scheduledRecordings")
headers = PanoptoCredentialsService.get_headers(self.config)
params = {"resolveConflicts": "false"}
try:
response = requests.post(api_url, headers=headers, params=params, json=data, timeout=30)
except Exception as e:
self.logger.error(str(e))
self.logger.info(str(response))
self.logger.info(f"{response.status_code} {response.text}")
2026-10-08 12:39:00,484 INFO panopto_scheduler_service.py post_scheduled_recording 108: <Response [401]>
2026-10-08 12:39:00,484 INFO panopto_scheduler_service.py post_scheduled_recording 109: 401 {"Error":{"ErrorCode":"","Message":"Not authorized on recorder f9dbf79d-869d-4d64-af4d-b1d400513be3","Success":false,"ErrorSource":null}}
Thanks for the details and the log. This is how the Scheduled Recordings API is currently designed, and you shouldn't need full site admin access to get it working.
The POST in your log returned a 401,
Not authorized on recorder f9dbf79d-869d-4d64-af4d-b1d400513be3. The account was able to create the session. The call failed when the API tried to schedule that session on the recorder. Creating a scheduled recording requires two permissions: permission to create the session in the folder, and permission to schedule on that specific remote recorder. A Department Administrator has the first for content in their department, but not the second. Remote recorders belong to the site rather than to a department, so department roles don't apply to them.To fix this without site admin access, share each recorder the account needs to schedule with the service account as Remote Recorder Creator. A site admin, or someone who is already a Remote Recorder Administrator on that recorder, will need to make this change. A Department Administrator can't grant it to themselves. Remote Recorder Administrator is only needed if the account must change or cancel recordings on that recorder for sessions it doesn't otherwise have edit rights to.
For GET, PUT, and DELETE, a Department Administrator should be able to read, reschedule, and cancel scheduled recordings on sessions in their department. These calls don't need a role on the recorder. Because the POST was failing, though, the sessions it tried to create were removed again, so there may not have been a valid scheduled recording to test against. Once POST succeeds, please use the
Idit returns for the other calls. If any of them still fail, could you send the status code and response body for each? We'd expect a 401 or 404 rather than a 403 from these endpoints, so the exact response will help us pin it down.On the API expansion: the bulk scheduling endpoints use the same recorder roles (Remote Recorder Creator or Remote Recorder Administrator on the recorder), so they won't change the requirement above. The recorder share is the way to enable this for departmental accounts.
I hope this helps.
Thanks,
-Adis