[Solved] Node.js - Create a NFT - Save IPFS

Hello, I try to create a NFT with node.js

I actually was able to dynamically create the image and I found a script to create a NFT.
The last step I need to do is save the NFT’s attributes in an IPFS, I choosed the Moralis IPFS.

I tried a simple code to save a file to Moralis, but I have an error :

Moralis.start warning: to use web3 access, moralisSecret is required
(node:8472) UnhandledPromiseRejectionWarning: Error: XMLHttpRequest failed: "Unable to connect to the Parse API"
    at handleError (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\RESTController.js:440:15)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Function.initPlugins (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\MoralisWeb3.js:255:40)
    at async Function.start (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\Parse.js:139:7)
    at async saveIPFS (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\src\index.js:11:5)
(node:8472) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:8472) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I saw on Discord that the first line is just a warning and I must ignore it.
The other lines are an error, I saw on discord that it’s usually because the Moralis connection failed, did I do something wrong with the start ?

The github repo for this problem is there : https://github.com/NicolasMarafetti/node-moralis-ipfs-problem

And here is the content of my index.js file

const Moralis = require("moralis/node");

require('dotenv').config();

const { MORALIS_API_KEY, MORALIS_SERVER_URL } = process.env;

saveIPFS = async () =>{
    await Moralis.start({ 
        serverUrl: MORALIS_SERVER_URL,
        appId: MORALIS_API_KEY
    });

    const object = {
        "name" : "Test"
    }
    let toBtoa = Buffer.from(JSON.stringify(object)).toString('base64');
    const file = new Moralis.File("file.json", {base64 : toBtoa});
    await file.saveIPFS();
}

saveIPFS();

Thank you for the support

1 Like

You may need to use master key for that save, and I’m not sure what api key you used there, you may need to provide appId and master key to Moralis.start

Hello cryptokid, thank you for your support.

I modified the index.js this way:

const Moralis = require("moralis/node");

require('dotenv').config();

const { MORALIS_APPLICATION_ID, MORALIS_MASTER_KEY, MORALIS_SERVER_URL } = process.env;

saveIPFS = async () =>{
    await Moralis.start({ 
        serverUrl: MORALIS_SERVER_URL,
        appId: MORALIS_APPLICATION_ID,
        masterKey: MORALIS_MASTER_KEY
    });

    const object = {
        "name" : "Test"
    }
    let toBtoa = Buffer.from(JSON.stringify(object)).toString('base64');
    const file = new Moralis.File("file.json", {base64 : toBtoa});
    await file.saveIPFS();
}

saveIPFS();

and the .env file this way

MORALIS_SERVER_URL = "...";
MORALIS_APPLICATION_ID = "...";
MORALIS_MASTER_KEY = "...";

but I still got the same error.

I renamed MORALIS_API_KEY to MORALIS_APPLICATION_ID, which may be more understandable.

The three variables I used are the one I found on my moralis dashboard, when I use “view details” on one of my servers.

(of course my .env files have values not … :wink: )

I updated the github repo with the masterKey if you want to try it.

you have an example here:

Oh Okay, so I modified the index file like in the exemple:

const Moralis = require("moralis/node");

require('dotenv').config();

const appId = process.env.MORALIS_APPLICATION_ID;
const serverUrl = process.env.MORALIS_SERVER_URL;
const masterKey = process.env.MORALIS_MASTER_KEY;

saveIPFS = async () =>{
    await Moralis.start({ serverUrl, appId, masterKey });

    const object = {
        "name" : "Test"
    }
    let toBtoa = Buffer.from(JSON.stringify(object)).toString('base64');
    const file = new Moralis.File("file.json", {base64 : toBtoa});
    await file.saveIPFS();
}

saveIPFS();

I can confirm that my variables from the env file have the correct values, I console.log them.
I also tried to put the Moralis.start out of the function, trying everytime with or without await but in every case I still got the error.

To target more precisely the error, I modified the index.js file this way

const Moralis = require("moralis/node");

require('dotenv').config();

const appId = process.env.MORALIS_APPLICATION_ID;
const serverUrl = process.env.MORALIS_SERVER_URL;
const masterKey = process.env.MORALIS_MASTER_KEY;

Moralis.start({ serverUrl, appId, masterKey })
    .then(() =>{
        console.log("OK");
    })
    .catch(function(error){
        console.error("error");
        console.error(error);
    })

And here is the error that I get

Moralis.start warning: to use web3 access, moralisSecret is required
error
ParseError: XMLHttpRequest failed: "Unable to connect to the Parse API"
    at handleError (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\RESTController.js:440:15)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Function.initPlugins (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\MoralisWeb3.js:255:40)
    at async Function.start (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\Parse.js:139:7) {
  code: 100
}

this works for you?

x = async () => {
    const  Moralis = require('moralis/node')
    console.log(Moralis.CoreManager.get("VERSION"))
    await Moralis.start({ serverUrl: "https://asfadfasdf:2053/server", appId: "gasgsfgsdg" });

    price = await Moralis.Web3API.token.getTokenPrice({address: "0xe9e7cea3dedca5984780bafc599bd69add087d56", chain: "bsc"})
    console.log(price)
    }

x();

I replaced serverUrl and appId with mine, but this code doesn’t work I have an error.

js0.0.142
Moralis.start warning: to use web3 access, moralisSecret is required
(node:1496) UnhandledPromiseRejectionWarning: Error: XMLHttpRequest failed: "Unable to connect to the Parse API"
    at handleError (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\RESTController.js:440:15)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Function.initPlugins (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\MoralisWeb3.js:255:40)
    at async Function.start (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\node_modules\moralis\lib\node\Parse.js:139:7)
    at async x (D:\Programmation\Hakono\NFT\Moralis\test-save-moralis_ipfs\src\index.js:12:5)
(node:1496) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). 
(rejection id: 2)
(node:1496) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

and here is the file I wrote

require('dotenv').config();
const { MORALIS_SERVER_URL, MORALIS_APPLICATION_ID } = process.env;

x = async () => {
    const Moralis = require('moralis/node')
    console.log(Moralis.CoreManager.get("VERSION"))
    await Moralis.start({ serverUrl: MORALIS_SERVER_URL, appId: MORALIS_APPLICATION_ID });

    price = await Moralis.Web3API.token.getTokenPrice({ address: "0xe9e7cea3dedca5984780bafc599bd69add087d56", chain: "bsc" })
    console.log(price)
}

x();

for me it works fine, what version of moralis did it display? it should be a recent version anyway.

what is you server subdomain/url?

Yes I have forget to add the version, it print for me js0.0.142.

And has a server… I don’t know ^^ , I use my local computer, runing the script with node src/index.js

Do I need to put it on a server to make it work ?

I mean what you have in MORALIS_SERVER_URL variable

Oh okay, here is my .env file:

MORALIS_SERVER_URL = "https://bxz6lkh2y9jq.usemoralis.com:2053/server";
MORALIS_APPLICATION_ID = "q55VBrpQvPaaqgE8XRkDofo5tbGf0nqlWlWk3VB5";
MORALIS_MASTER_KEY = "{redacted}";

It’s what I found in my Moralis Admin Server

I tested this now and it works fine for me, I tested it with js0.0.142:


x = async () => {
    const  Moralis = require('moralis/node')
    console.log(Moralis.CoreManager.get("VERSION"))
    await Moralis.start({ serverUrl: "https://bxz6lkh2y9jq.usemoralis.com:2053/server", appId: "q55VBrpQvPaaqgE8XRkDofo5tbGf0nqlWlWk3VB5" });

    price = await Moralis.Web3API.token.getTokenPrice({address: "0xe9e7cea3dedca5984780bafc599bd69add087d56", chain: "bsc"})
    console.log(price)
    }

x();

Oh damn I found the error !

My .env file should look like it:

MORALIS_SERVER_URL = "https://bxz6lkh2y9jq.usemoralis.com:2053/server"
MORALIS_APPLICATION_ID = "q55VBrpQvPaaqgE8XRkDofo5tbGf0nqlWlWk3VB5"
MORALIS_MASTER_KEY = "JZAW5gTAL59zUVRWAVHRKyD6mrc2KVskKaqTsLoX"

I just removed every ; at the end :sweat_smile:

Thanks for all crypto

1 Like

i need to insert the xAPI key. I saw where to get it but don’t know how to authorize the access:

what do i put as Value ? :slight_smile:
Thank you

you can get the api key from here: https://admin.moralis.io/web3Api

yes, thank you. So, is that what I need to do? Put the API key in value in order to get access and then get the xAPI?
if so, i did that and got a 401 error when running the code.
Thank you
Flo

that is the api key that you use for web3api, what that error 401 says?

thank you for your help, this is the error. i think i found another thread with a similar error:

Error: Request failed with status code 401
    at createError (/Users/xxxx/Downloads/moralis-mutants-nft-engine-main/node_modules/axios/lib/core/createError.js:16:15)
    at settle (/Users/xxxx/Downloads/moralis-mutants-nft-engine-main/node_modules/axios/lib/core/settle.js:17:12)
    at IncomingMessage.handleStreamEnd (/Users/xxxx/Downloads/moralis-mutants-nft-engine-main/node_modules/axios/lib/adapters/http.js:293:11)
    at IncomingMessage.emit (node:events:402:35)
    at endReadableNT (node:internal/streams/readable:1340:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
      'X-API-Key': '8gh3Y5oaw7tA3en',
      'User-Agent': 'axios/0.23.0',
      'Content-Length': 5229497
    },
    method: 'post',
    url: 'https://deep-index.moralis.io/api/v2/ipfs/uploadFolder',
    data: '[{"path":"images/0000000000000000000000000000000000000000000000000000000000000001.png","content":"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AABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4A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'... 5219497 more characters
  },
  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)],
      prefinish: [Function: requestOnPrefinish]
    },
    _eventsCount: 7,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    destroyed: false,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    maxRequestsOnConnectionReached: false,
    _defaultKeepAlive: true,
    useChunkedEncodingByDefault: true,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: null,
    _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: 'deep-index.moralis.io',
      alpnProtocol: false,
      authorized: true,
      authorizationError: null,
      encrypted: true,
      _events: [Object: null prototype],
      _eventsCount: 10,
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'deep-index.moralis.io',
      _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)]: 58,
      [Symbol(kHandle)]: [TLSWrap],
      [Symbol(kSetNoDelay)]: false,
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(connect-options)]: [Object],
      [Symbol(RequestTimeout)]: undefined
    },
    _header: 'POST /api/v2/ipfs/uploadFolder HTTP/1.1\r\n' +
      'Accept: application/json\r\n' +
      'Content-Type: application/json\r\n' +
      'X-API-Key: 8gh3Y5oaw7tA3en\r\n' +
      'User-Agent: axios/0.23.0\r\n' +
      'Content-Length: 5229497\r\n' +
      'Host: deep-index.moralis.io\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: 'POST',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/api/v2/ipfs/uploadFolder',
    _ended: true,
    res: IncomingMessage {
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _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: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'https://deep-index.moralis.io/api/v2/ipfs/uploadFolder',
      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: 'deep-index.moralis.io',
    protocol: 'https:',
    _redirectable: Writable {
      _writableState: [WritableState],
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      _options: [Object],
      _ended: true,
      _ending: true,
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 5229497,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'https://deep-index.moralis.io/api/v2/ipfs/uploadFolder',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      'content-type': [Array],
      'x-api-key': [Array],
      'user-agent': [Array],
      'content-length': [Array],
      host: [Array]
    }
  },
  response: {
    status: 401,
    statusText: 'Unauthorized',
    headers: {
      date: 'Fri, 10 Dec 2021 16:52:10 GMT',
      'content-type': 'application/json; charset=utf-8',
      'content-length': '25',
      connection: 'close',
      'x-powered-by': 'Express',
      'access-control-allow-origin': '*',
      etag: 'W/"19-aa5ews+8iO9r0nbrJ9a59/u0j00"',
      vary: 'Accept-Encoding',
      'cf-cache-status': 'DYNAMIC',
      'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"',
      server: 'cloudflare',
      'cf-ray': '6bb7fb475a6d020d-ZRH'
    },
    config: {
      transitional: [Object],
      adapter: [Function: httpAdapter],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 0,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      validateStatus: [Function: validateStatus],
      headers: [Object],
      method: 'post',
      url: 'https://deep-index.moralis.io/api/v2/ipfs/uploadFolder',
      data: '[{"path":"images/0000000000000000000000000000000000000000000000000000000000000001.png","content":"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AABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4A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'... 5219497 more characters
    },
    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: true,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: null,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [TLSSocket],
      _header: 'POST /api/v2/ipfs/uploadFolder HTTP/1.1\r\n' +
        'Accept: application/json\r\n' +
        'Content-Type: application/json\r\n' +
        'X-API-Key: 8gh3Y5oaw7tA3en\r\n' +
        'User-Agent: axios/0.23.0\r\n' +
        'Content-Length: 5229497\r\n' +
        'Host: deep-index.moralis.io\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'POST',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/api/v2/ipfs/uploadFolder',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'deep-index.moralis.io',
      protocol: 'https:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    data: { message: 'Invalid key' }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

I am trying to follow this video:

to authorize in order to see my xApi, i copied my Cli Api in the Autorize value

thank you!

you have to use the API key from here: https://admin.moralis.io/web3Api