Unsupported content type Error

Hi

I’m building a Zoom × Freshdesk integration and using the Zoom API to fetch call recording transcripts.

Zoom’s APIs do not require a specific Content-Type header for these requests, so it can be omitted. However, the Freshworks FDK request template needs a Content-Type header and throws an error if it is removed. When I use any of the supported Freshworks content types, the Zoom API responds with:
{ status: 415, headers: {}, response: ‘Unsupported content type’, errorSource: ‘APP’, attempts: 1 } error. This causes the Zoom API request to fail.

Because Zoom uses OAuth authentication, I also cannot move this request to server.js and use Axios — the OAuth access token is only available inside request.json in the FDK environment.

I’d really appreciate guidance on how to handle this limitation and make the Zoom API call work correctly from a Freshdesk app.

server.js
callRecordingTranscript: async function (options) {

try{

    console.log("callRecordingTranscript",options)

    let transcriptResponse = await $request.invokeTemplate("getCallRecordingTranscript",{

    context:{

        recordingId:options.recordingId

    }

    });

    console.log("transcriptResponse",transcriptResponse)

    renderData({

        status: 200,

        response: JSON.stringify(transcriptResponse)

    });

}catch(err){

    console.log("callRecordingTranscript",err)

     renderData({

        status: 500,

        response: err.message

    });

}

},

requests.json
“getCallRecordingTranscript”:{

"schema":{

    "protocol": "https",

    "method": "GET",

    "host": "api.zoom.us",

    "path": "/v2/phone/recording_transcript/download/<%= context.recordingId %>",

    "headers": {

        "Authorization": "Bearer <%= access_token %>",

        "Content-Type": "application/json"

    }

},

"options": {

    "isOAuth": true

}

},

Thank you

Hi Josephin, thanks for reaching out to the Freshworks Community!

A few questions and workarounds to try:

  1. What error does the request template throw when you remove Content-Type completely? Can you share the error message?

  2. Try setting Content-Type to an empty string:

    "Content-Type": ""
    
  3. If Zoom strictly disallows Content-Type on GET requests, try using the Accept header instead:

    "headers": {
      "Authorization": "Bearer <%= access_token %>",
      "Accept": "*/*"
    }
    

Let me know if any of these workarounds help. Otherwise, happy to hop on a quick call to troubleshoot further!

Cheers!

Rohan Kokkula
Developer Relations at Freshworks