@ojus.zoom Here is the complete error, maybe this is overkill haha, it’s a lot:
Error downloading VTT file: AxiosError: Request failed with status code 401
at settle (file:///Users/danrobinson/Work/nxtlvlai/Post%20June%202022/bant-backend/node_modules/axios/lib/core/settle.js:19:12)
at IncomingMessage.handleStreamEnd (file:///Users/danrobinson/Work/nxtlvlai/Post%20June%202022/bant-backend/node_modules/axios/lib/adapters/http.js:570:11)
at IncomingMessage.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1358:12)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: ‘ERR_BAD_REQUEST’,
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [ ‘xhr’, ‘http’ ],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: ‘XSRF-TOKEN’,
xsrfHeaderName: ‘X-XSRF-TOKEN’,
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function], Blob: null },
validateStatus: [Function: validateStatus],
headers: AxiosHeaders {
Accept: ‘application/json, text/plain, /’,
Authorization: ‘Bearer eyJzdiI6IjAwMDAwMSIsImFsZyI6IkhTNTEyIiwidiI6IjIuMCIsImtpZCI6ImU5MWY4MzRiLTQ1NmQtNDQzYi05ZGMyLTU3ZjA2Mzg4ODFjOCJ9.eyJ2ZXIiOjksImF1aWQiOiI3Zjk1YzM1MDhjYTk1YzlmZjYxMmI5MDBiYTQ3OWI0MSIsImNvZGUiOiIwSFdxNTZiWG4zRDdkakJCZkszUmRPaVl5Sk5SMEEzMGciLCJpc3MiOiJ6bTpjaWQ6WjhBYmk2MmlTcjYyN3FzZUpBNmxhQSIsImdubyI6MCwidHlwZSI6MCwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiJna09mcmNWS1J3eTNVOFVMaFlxclNBIiwibmJmIjoxNjkzNDk4MDc5LCJleHAiOjE2OTM1MDE2NzksImlhdCI6MTY5MzQ5ODA3OSwiYWlkIjoiV2wyYWllaGVSV1Nla2c0NUhCel9EUSJ9.G_FlH5LHqGsXOCgoB19ddNzDvv9e3q_0a19gbEAnr0gzSPZrKJcazVFrdyeYEzWDjGesnvlhpSBcoaOHhXxVhQ’,
‘User-Agent’: ‘axios/1.4.0’,
‘Accept-Encoding’: ‘gzip, compress, deflate, br’
},
method: ‘get’,
url: ‘Passcode Required - Zoom’,
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
finish: [Function: requestOnFinish]
},
_eventsCount: 7,
_maxListeners: undefined,
outputData: ,
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: ‘’,
finished: true,
_headerSent: true,
_closed: false,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: ‘us06web.zoom.us’,
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 10,
connecting: false,
_hadError: false,
_parent: null,
_host: ‘us06web.zoom.us’,
_closeAfterHandlingError: false,
_readableState: [ReadableState],
_maxListeners: undefined,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: ‘’,
server: undefined,
_server: null,
ssl: [TLSWrap],
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
[Symbol(res)]: [TLSWrap],
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 394,
[Symbol(kHandle)]: [TLSWrap],
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kSetNoDelay)]: false,
[Symbol(kSetKeepAlive)]: true,
[Symbol(kSetKeepAliveInitialDelay)]: 60,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0,
[Symbol(connect-options)]: [Object],
[Symbol(RequestTimeout)]: undefined
},
_header: ‘GET /rec/download/uADH0wXSbWXGGGlZK-6AbFLpPf3Qaxivx1xAcCkYQhs9uL8XPwH2xKlqk2gQsv3c4sbXGCvswUSEjUZY.kzbOgZ2EYLptKGpM?type=cc HTTP/1.1\r\n’ +
‘Accept: application/json, text/plain, /\r\n’ +
‘Authorization: Bearer eyJzdiI6IjAwMDAwMSIsImFsZyI6IkhTNTEyIiwidiI6IjIuMCIsImtpZCI6ImU5MWY4MzRiLTQ1NmQtNDQzYi05ZGMyLTU3ZjA2Mzg4ODFjOCJ9.eyJ2ZXIiOjksImF1aWQiOiI3Zjk1YzM1MDhjYTk1YzlmZjYxMmI5MDBiYTQ3OWI0MSIsImNvZGUiOiIwSFdxNTZiWG4zRDdkakJCZkszUmRPaVl5Sk5SMEEzMGciLCJpc3MiOiJ6bTpjaWQ6WjhBYmk2MmlTcjYyN3FzZUpBNmxhQSIsImdubyI6MCwidHlwZSI6MCwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiJna09mcmNWS1J3eTNVOFVMaFlxclNBIiwibmJmIjoxNjkzNDk4MDc5LCJleHAiOjE2OTM1MDE2NzksImlhdCI6MTY5MzQ5ODA3OSwiYWlkIjoiV2wyYWllaGVSV1Nla2c0NUhCel9EUSJ9.G_FlH5LHqGsXOCgoB19ddNzDvv9e3q_0a19gbEAnr0gzSPZrKJcazVFrdyeYEzWDjGesnvlhpSBcoaOHhXxVhQ\r\n’ +
‘User-Agent: axios/1.4.0\r\n’ +
‘Accept-Encoding: gzip, compress, deflate, br\r\n’ +
‘Host: us06web.zoom.us\r\n’ +
‘Connection: close\r\n’ +
‘\r\n’,
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: ‘https:’,
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype],
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: ‘lifo’,
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: ‘GET’,
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: ‘/rec/download/uADH0wXSbWXGGGlZK-6AbFLpPf3Qaxivx1xAcCkYQhs9uL8XPwH2xKlqk2gQsv3c4sbXGCvswUSEjUZY.kzbOgZ2EYLptKGpM?type=cc’,
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: undefined,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: ‘1.1’,
complete: true,
rawHeaders: [Array],
rawTrailers: ,
aborted: false,
upgrade: false,
url: ‘’,
method: null,
statusCode: 401,
statusMessage: ‘Unauthorized’,
client: [TLSSocket],
_consuming: true,
_dumped: false,
req: [Circular *1],
responseUrl: ‘Passcode Required - Zoom’,
redirects: ,
[Symbol(kCapture)]: false,
[Symbol(kHeaders)]: [Object],
[Symbol(kHeadersCount)]: 24,
[Symbol(kTrailers)]: null,
[Symbol(kTrailersCount)]: 0,
[Symbol(RequestTimeout)]: undefined
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: ‘us06web.zoom.us’,
protocol: ‘https:’,
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: undefined,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: ,
_requestBodyLength: 0,
_requestBodyBuffers: ,
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: ‘Passcode Required - Zoom’,
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kEndCalled)]: true,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
authorization: [Array],
‘user-agent’: [Array],
‘accept-encoding’: [Array],
host: [Array]
},
[Symbol(kUniqueHeaders)]: null
},
response: {
status: 401,
statusText: ‘Unauthorized’,
headers: AxiosHeaders {
date: ‘Fri, 08 Sep 2023 00:43:56 GMT’,
‘content-type’: ‘application/json;charset=UTF-8’,
‘transfer-encoding’: ‘chunked’,
connection: ‘close’,
‘x-zm-trackingid’: ‘v=2.0;clid=us06;rid=WEB_ac6e447846d42fdfa39cf75f212ecf38’,
‘x-content-type-options’: ‘nosniff’,
‘x-frame-options’: ‘SAMEORIGIN’,
‘cf-cache-status’: ‘DYNAMIC’,
‘set-cookie’: [Array],
server: ‘cloudflare’,
‘cf-ray’: ‘803328fb29f41f3e-DEN’,
‘alt-svc’: ‘h3=“:443”; ma=86400’
},
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
xsrfCookieName: ‘XSRF-TOKEN’,
xsrfHeaderName: ‘X-XSRF-TOKEN’,
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [AxiosHeaders],
method: ‘get’,
url: ‘Passcode Required - Zoom’,
data: undefined
},
request: <ref *1> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: undefined,
outputData: ,
outputSize: 0,
writable: true,
destroyed: false,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: ‘’,
finished: true,
_headerSent: true,
_closed: false,
socket: [TLSSocket],
_header: ‘GET /rec/download/uADH0wXSbWXGGGlZK-6AbFLpPf3Qaxivx1xAcCkYQhs9uL8XPwH2xKlqk2gQsv3c4sbXGCvswUSEjUZY.kzbOgZ2EYLptKGpM?type=cc HTTP/1.1\r\n’ +
‘Accept: application/json, text/plain, /\r\n’ +
‘Authorization: Bearer eyJzdiI6IjAwMDAwMSIsImFsZyI6IkhTNTEyIiwidiI6IjIuMCIsImtpZCI6ImU5MWY4MzRiLTQ1NmQtNDQzYi05ZGMyLTU3ZjA2Mzg4ODFjOCJ9.eyJ2ZXIiOjksImF1aWQiOiI3Zjk1YzM1MDhjYTk1YzlmZjYxMmI5MDBiYTQ3OWI0MSIsImNvZGUiOiIwSFdxNTZiWG4zRDdkakJCZkszUmRPaVl5Sk5SMEEzMGciLCJpc3MiOiJ6bTpjaWQ6WjhBYmk2MmlTcjYyN3FzZUpBNmxhQSIsImdubyI6MCwidHlwZSI6MCwidGlkIjowLCJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiJna09mcmNWS1J3eTNVOFVMaFlxclNBIiwibmJmIjoxNjkzNDk4MDc5LCJleHAiOjE2OTM1MDE2NzksImlhdCI6MTY5MzQ5ODA3OSwiYWlkIjoiV2wyYWllaGVSV1Nla2c0NUhCel9EUSJ9.G_FlH5LHqGsXOCgoB19ddNzDvv9e3q_0a19gbEAnr0gzSPZrKJcazVFrdyeYEzWDjGesnvlhpSBcoaOHhXxVhQ\r\n’ +
‘User-Agent: axios/1.4.0\r\n’ +
‘Accept-Encoding: gzip, compress, deflate, br\r\n’ +
‘Host: us06web.zoom.us\r\n’ +
‘Connection: close\r\n’ +
‘\r\n’,
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: ‘GET’,
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
path: ‘/rec/download/uADH0wXSbWXGGGlZK-6AbFLpPf3Qaxivx1xAcCkYQhs9uL8XPwH2xKlqk2gQsv3c4sbXGCvswUSEjUZY.kzbOgZ2EYLptKGpM?type=cc’,
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: ‘us06web.zoom.us’,
protocol: ‘https:’,
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kEndCalled)]: true,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(kUniqueHeaders)]: null
},
data: { status: false, errorCode: 124, errorMessage: ‘Forbidden’ }
}
}
here is the node express code I’m using that gets the error:
export const testZoomTranscript = async (req, res) => {
console.log('HERE MADE IT');
const downloadUrl =
'https://us06web.zoom.us/rec/download/uADH0wXSbWXGGGlZK-6AbFLpPf3Qaxivx1xAcCkYQhs9uL8XPwH2xKlqk2gQsv3c4sbXGCvswUSEjUZY.kzbOgZ2EYLptKGpM?type=cc';
const accessToken =
const passcode = '@7*Cpkwo';
try {
const response = await axios.get(downloadUrl, {
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
const vttContent = response.data;
console.log('VTT file content:', vttContent);
} catch (error) {
console.error('Error downloading VTT file:', error);
}
};
i’ve removed the accessToken of course. the passcode isn’t used in the code. but when i got to the downloadUrl in my browser and enter that passcode in chrome, the vtt file is download. feel free to test that yourself if needed, the transcript is just me saying ‘test’, and does not contain sensitive information.
in case this matters, here is the url i’m going to in my browser to hit the route:
http://localhost:4000/zoom-test
here is the route in my code:
router.get(‘/zoom-test’, testZoomTranscript);
and the testZoomTranscript function that route calls is the function I gave above. Thank you! Hope you have a great night.