2300 Error on digital signage playlist update API

API Endpoint(s) and/or Zoom API Event(s)
Update Digital Signage library playlist content items

Description
I have a Google Apps Script (Javascript) application that’s uploading an image to Zoom and then replacing the playlist on a Zoom Room with the image.

I confirmed that both the playlist ID and content ID are correct. The URI matches what’s in the docs as well. My Server-to-server Zoom app is authorized, activated, and has the zoom_rooms:write:digital_signage_library_playlists:admin scope enabled.


/**
 * Replaces all content in a playlist with a new list of content items.
 * @param {string} playlistId The ID of the playlist to update.
 * @param {Array<Object>} newContents An array of content objects to set as the new playlist.
 */
function updatePlaylistContents(playlistId, newContents) {
  console.log(newContents);
  const accessToken = getZoomAccessToken();
  const url = `https://api.zoom.us/v2/rooms/content/digital_signage/playlists/${playlistId}/contents`;

  const payload = JSON.stringify({ contents: newContents });
  
  const options = {
    method: 'put',
    contentType: 'application/json',
    headers: { 'Authorization': `Bearer ${accessToken}` },
    payload: payload,
    muteHttpExceptions: true
  };

  const response = UrlFetchApp.fetch(url, options);

  if (response.getResponseCode() >= 400) {
    throw new Error(`Failed to update playlist: ${response.getContentText()}`);
  }

}

Error?
The script can call other parts of the Zoom API but only on this specific endpoint will I get
Error: Failed to update playlist: {"code":2300,"message":"This API endpoint is not recognized."}

How To Reproduce

  1. Open an Apps Script project and add the OAuth2 library
  2. Create a server to server app with the scope and activate it
  3. Try to upload a new playlist object using existing zoom library content

1. Request URL / Headers (without credentials or sensitive info like emails, uuid, etc.) / Body

{ method: 'put',
  contentType: 'application/json',
  headers: { Authorization: 'Bearer xxxxxxxx' },
  payload: '{"contents":[{"content_id":"fs-xxxxxxxxxxx","content_duration":30}]}',
  muteHttpExceptions: true }

2. Authentication method or app type
Server-to-server app
3. Any errors
{"code":2300,"message":"This API endpoint is not recognized."}

Hi @Ian5
Thanks for reaching out to us and welcome to the Zoom Developer Forum.
Would you be able to grab the tracking ID found in the response headers of your request?
I can see that the request URL is propertly set and also your request body, so I would like to escalate this for review

1 Like

Thanks! I just triggered the script again (getting the same error) and the tracking ID is

"x-zm-trackingid": "v=2.0;clid=aw1;rid=WEB_aeb1f09a1cad339226d22228658ad6d7"

the cloudflare id is

cf-ray: 967ffed8bdc3139b-ATL
1 Like

Thanks @Ian5
Looking into this (ZSEE-174934 internal ticket number for reference)

1 Like

Hey @elisa.zoom , any updates on this? Our Zoom rep told us was this our only method of support as we don’t have a developer subscription.

One more bit of data - using patch instead of PUT works on this endpoint, but it adds content to the playlist when ideally we are replacing it. I also don’t see patch listed for this specific endpoint it on the API page?

@Ian5
Thanks for sharing those details with me, I will check in with Engineering team about this

Hi @Ian5
Thanks for your patience here. I was informed that we will be releasing a fix to this endpoint this weekend.
Can you please try again on Monday and confirm if this is working on your end?

Yup, will try again monday

1 Like

Hey @elisa.zoom it looks like PUT works not but it’s not clearing the content of the playlist, it’s appending the image - it’s supposed to clear out the previous content right?

Hi @Ian5
Yes, this should be an update.
Could you please follow up in the DM that I just sent