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

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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AABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQAAToAAAAAAAUAAE6AAAAAAAFQIAOAAAAAEABEKADAAAAAFAABOgAAAAAABQAAToAAAAAAAVAgA4AAAAAQAEQoAMAAAAAUAAE6AAAAAAAFAABOgAAAAAABUCADgAAAABAARCgAwAAAABQANHTPgAAAPDJ1rdSrW+lkqSl9UTfeLEiSVpcSzS/nGj/ROgu20h0aCrS5o67bpJKx/bzqx4AgGcFGXQAAAAAAAqA0+oAABTM9blYG1nGPAykkcFAo4PunPq1+139+npHklSKjLaaqZodd9ndh4luP4h16lBJkjQyEOif3m9Jkn7v5eqTfhgAAOB3RIAOAEBBWOv+PzJg1HRxtYLQaGk90eJaIklqta3uLcaSpNOHSopCo3bX/eDhmVC35mPNL7vrDvcHmhoNn+yDAAAAnxsl7gAAAAAAFAAZdAAAnpI8K75aTzU7Fer9611J0uZOqk6WFT9zpKSVzVRH9/V+Zc9Ouaz4VsNqeizUzXn3c8YYlUpGUZY0D4z0QlbuDgAAio8AHQCAp8BaqdF2QfjVe13dW4x9ifvpQyXdmHNB952FWN3Y+u8nRkJtbLsrzi/Hmp2KNNzvCuK+8WJFP3ivpcMz7tf7YD+FcgAAPEv4zQ0AAAAAQAGQQQcA4An5yYW2hgfcufFb813113rnyfuqRi8eKUuS7j6MNTni6tTLJVfKnu9BPzAZqr7tvp4aCRUY+ducX0705rmKEnexyk/ht/yDld5e9k+TVwwY8xgPCACAZwgBOgAAj0mcSDtNFy0/XEu0vpVqIwuuk1QazQJrY6TtptXV+66M/di+SHezSe2drtHoYKBXT7ngfbWe6uzR7OvNRLWqUX3HRboz46HCz1EbN7+cqBNbTQy7H7aSmi13m31Vo2v3Yx3JyuYX1xPNjLkAfGwo0E7L+kD7xlzXn1iQXAB+Y949jkpJanelk7O9jx4Lq64Hf3os1NJ6on3j7mc3d1IN9rljCQjeAQBfIgToAAA8Jvn6M0m6u5goSayCLOKslo0mR10QGoVStWI0kwWoi2upzh1zQXh/1Si1vYFyByZCn3GezgLlvor7fmMr1VC/kcmu8OGdjr//Ssno8EyknaY7plJJftd6KTLa3E79fZw/UdbKpvtam1Kayg+eO3ukpAu33ImEm/Oxmp1UlZK7v8AYXb3f9dfdalqt1d3tDNQCbe6k2m6k2WWpXjnpHuN2I5XR3qF5+8bdbQz2Bbq/FOvglPvI0upY1Sru/ja3U40N0a0HAHh+8FsNAAAAAIACMM23DtlPvxoAAPhtbmZl3CubiWplo5W6yxLvNK3ipPdr1lr57O9Lx8vKq7f7qq6M/ZPsZCXn5Uha3XS3v92yOnEg8qXikyNu5VqcJb/HhgLdy0rlXzxa1qXbHa1lx/b1MxW9d81l2A9MupR3nglPrdRsu+tNj4a6fLfrj+P88bIu3nY/118NtLGdajzLYh+civT+zY4v3e/GVsf2l7LjT3X5blf7syqBe0uJz35vbqca6g802Ofuv77TK5svl1xmPn8eu0nvsqG+QJVyb63c0X2Rmh2rIKsgGKhRHw8AeLZQ4g4AwBc0kgWkW41Uq/VUm1mfuZFUKbsg8eBUpNsPujp/3JV150Gx5ALiVseqnAXI9xZjvzqtWjZqtq3SbPCbrfROAMSx1aXbXT8k7oMbHUWRfBn7yECgw9PuV/3KZqI0dXvVJRf45sPcpkdDlUrSnQcumN9qWnVjdxvnj5e1uJZoIOsJHxsK1HVXUymUJoYDJdkJgU5s1elaLWSl6vvHQ61mJe6d2PXk1xvudtsdq4WVrPy9z6gbW80tu8fV7Vp/kkFyPfr5Y4wT6/vjrZXqS6nC0D1vpchofrn3g986X/FfJ6k+V38+AABPEr+qAAAAAAAoAErcAQD4HWxup0qz35z3FmNt7qSqZpnvxfVUE8OBVrIS9D99s6btbIr7QC3Q8nqiKMv2jg8Hfohcu2u107Q+E3/nYewz2Gv1VFOjvens7Y7V/oksK15PNNwf+Oz6ymaiUmQ0lpXLz4yHarTd7axuuiny06Muaz41GurCTVeqXikbTY+GqmcD3MLA6GGWBV9aT9RsW/3R6zVJbmhdXvK+sJro62cqml+Os8efaHUz9Y+xXHLHK0ndWAoC+RVwpbC3Xi0IjDpdq/6sJH27YfesXqtWjL+dwEjdLEleKbmfyz/IRIGbQJ8/H2NDgfqq7oYG+wI9XEt0IKsaaLSsjh1wz2NerQAAwNNGgA4AwO/gwUrip40nqbS+lSrNmqJ3mlYDfYEGs0Czv2p0KCsxb7RdAJoHnkki3c/6w+PEBcn5mrP17VR9lfw2Ag32G3WyNvC+qtHWjotAm9lt5ivJ4sT1juffX7zd1bmjJX/s9UaquSV37McPRPr7X7YkuTL6gZrRVlYaf+JApPtL7tjqO1bDA8ZPfN83HvlVcVHoyvrzoNtaV64/lAW8zVbqH2+cuD+vZ8d+/ECk+azEfWww0PJGuuu5sf42thqp+qqBGi33c51Yvl8/CqXljdTvey9FRjst61ezWds7CWCtu35+cmV6LFQzO3lRiqRvvlT11/3Zxba++VKvPB4AgCeFHnQAAD6DPAitN3oZ9PnlWKNDgdbr7g/CwPWdj2QBZH91V794YvVgxWo26z1f3051dL/7NbzVcMPkJrId4q2O1diQ+zofdFbe9Rs7D16HB6QLt7o6Odtb3Ta/ksjIBb4TQ4HPxP/iw47qjdQPafunX7dlsxMLxhitbaWqZv3yN+ZjH+ROjwYyxqidxatrW4k/WVCKXGY6H2CXJFZpIr15zl35+283lae3axWjyZFAnex4tpu9vvpSZDQ1Gvj7P36g5I97p2U1OhjoJxfa2XWtvn6m7H/uw9tdH+i3O1bD/YFaWbY9TnrBejfpZd4laWEl2RO8/8efNVXKnuNGy/qTMCubqU4djFSKGDgHAHj8qOkCAAAAAKAAKHEHACCTZ3eNpM1t9/XCWqL6Tur7xetZebckDfS5DHWeMb77MNbR/ZEW1911tnZSHcuy5P21QDvN1E8jb3V668LixKpaNj4zb4xU3pWxfbiaaHy493N5CfsHNzuaGA79NPa33m1pYyv1GfYktWrlZdwlo0rJaCvrMz8xW9LyhssSf/fVqjZ3Ut+Lvbmdam45zyAnGh0IfPn7C4dK+ulFl83uxlaVsvGr40qh0XC/0cP13nOUZ8JPHyopTa3Ws1L5of5AN+ZcGf2x/ZGCwGWuJenwdKSl7NjOHimp2e71mc8vJ5rLyu/LJaOvnCprJbtupWT0s4tt/3y0u9JmVlKftwbkWfRyJJ8VzysA8me8XDIa6nffzYy55/f2Quy/nxrtTeAHAOBRIkAHAECuhD0P/DZ3BeFbTatGy6qb7eGulIwPMisl17t9+pDr897YdiXk+S/Wof5gz2qveiPVUN9vL17LV4tFoXzwnqTSWj3R1Xvu2HZavTJ1Exit1RMfzK9suhMJu3eqv3rKlYMHRrp0p+v7rtNU+vpZd9n8cqL+qtHhGXcy4cM7Xb9b3VrX654H2uVSr1c+tW73+uU7btjcxIgbZre50yv5fyM7efGDd1uaGA78mrXdBeOptdo3HqrtbkZrW4l//DNjoVY2Ux3PBro129YPwbu7GOvUwZLevuJ+cHwo0IOVRPuy5yc/cSC5v5sktX7X+8JK4tezpalb67a75H33hyMjN+AuNzIQ+JV4R2Yiv4e9E1sdnKJ7EADw+VHiDgAAAABAAZBBBwB8KW1spSpnQ8kaTav7S7FfSVYtG59B7sZuonieXd3YSn25eRgYnT9RUjcbmjY+HKjRtqplt2s+41yxTmx1cz5Wf7YS7OLtrs/Ezi3F6qsan/nuqxpffm+MyzDnq8Rmp0Kt11OfJb4xH+ulYy67f/VeV2tbqZ8q/3At8VnstXqqfROhH0h3az725fbWukx4nm3ur7nVZpLL+O8eypakVn1Vo8ls2N3N+dhnsbd23FC8fH2bm6pu/GNqtKy/bppK+7Iy9Sh0Jf55+0Gz3VtH12xbbTd7P5ek7n52twPkJf5DA4Hq26nPjJci429nfStVnPQ+DqWpfOVDnBVT5M+VlVsRl1c7lCLpwKR7Ts8cKfnp+wAAfB7UYQEAvhTaXbunt7uv1tut3U2sHq4lOpivRGumSpJesC5JZw67QPf9Gx39/ivV33o/nxSgxYkLlCU3nT3v8z57pKQ0lS//7nSs7w9P0myH+oYrcQ+D3u1PjgRaXE/8bvNa2ejKWm9U+WCf0T/+2q1Sq5SNWm3r16eFQa8fPQxcEJyfUKiWe+vg2h2rs0fLPmC9vRDrG2dd2fqlO12dO1bSu1ddiXkQuD73/OSGJN+7//LJstbqvRVw1VKv5/7+UqxK2Wiwz93p6SMl/fBX7rij0PgScve8BXqY3f6RfZFancSX3G81rEphoOkx9wOrm6mMcY+xv2r08vGq3s92vx+ajnQl2+fuThDIn3io7VqPdzW7Th6+797DLrkTDYvr7g82d1L1V43OH89aB1YSP7U/fx0BAPBJyKADAL4UurFVN5HfIX5jPva92ncexipHvSz17n7jfJf2n75R+8LH8GAl0ZUsQN9u9PrcJ0dCNTvW7xrPh89JLkB+6XhZa3UXBC6sJCplGfJaxWhzuzcUzlrXP39wygWFO61etvnuw1jTWT+35E4Q5L30pcj10g/U3HW3m6kOZIHl3HKiIzORJkbcZTfnYp08WPK3kVr3uCR3cuLS7a7v1983Hvq952v1VJWy0U6z9xzn5xqS1AXJeSBuZFRv9I5zq9HrgT+6L9LShrssMC6DvZWf2OhaHZqOdC/bL394JvJD4hotq8E+o5kseL/1IPZD4qx1VQx5gN5f6+2yr5aNljYSbWf3MdgfaHvXqr2Pk5/MOH2o5OcZzIyHOrqPvAgA4JPRgw4AAAAAQAFwKhcA8NzJ+4PDwGWDJZfBtbsuOzkb6Z2sNLvZsmoHVmmW1N4/Efrp4+1ub/L3Z5X3S69tprp0x2XMzx4paX2r1x++LWl8uJfpbnWsL81e2UgUZOnlStn1fC9mpevGSHF2+5WBQJWy8dnlVttqsD/QcpYlP3O45Hu+w9BoeSNRf5YlN0Y6MZuV9LesxoYCncoy4z+72PZf5//PfSWbCp8LjHy2+ecfttVsWQ0N/Ob5/wMToc98S9LoYKAT2WT2esNlr/MM9uJ6om9mz/9K3a2q21XZ77PSN+djLW0kOnXQ3c5ALdCvb3T8xPeJ4dC3CsSx1exkyU+qX6unvpqgXHKVCnlGfbuRKsrS4AuriQb7Ahnjjm2nmaoUGaVp3ncvn00PjPs6yR7m1XtdPx8gTlxPfH7ZzGjoqxIAAMgRoAMAnnl50BMGbnBYu9MLnqpZT/jMeKj3soBckhbXeiXWx/ZHmh4L9UHWn7w7KP204LwT2z07yyVXhi65NWD5ALUbc25gmt/ZXTZ+/3a7Y/XKyZIu33Wl2WNDoTayIHRi2K30ytd6dbpWXzvjgtdfXe/IqNff3I2lZqtXfn1sf6Qb83m5d6jVzVTf+Yrrn6/vpL78+/zxvR8H8pMTn8WtB7H/emok1Pp26lsFXjhU0lLWn52ffPin911v+WsvlDW3lJ08CNwJjPwkRLViNJK1H4wMBmp3rb+fM4dLWsiuF0XSH79e00oW+E+MBLo5705a5Pc5Puwe74/ebytOrN696na4z06F/u/2/Imy/v7tpu/ll+R7x9+52tGByVDX7rn7GB4IlNreiZ5uLN9GsLnTe+ySe/3lu913momW1hNfxj9QM3pw0z2mo/si35sPAPhy47cBAAAAAAAFwJA4AMAzzVr5FVn1Hbtntdlgn9H1OZelnFtOtNNM/Wqvl46X/DCx88fKWljrTTF/4dDesu6PyoeiRaE0v5z4TPTsVKR2x/rvd5pWZ4+422p2rG4/6GXUhweM1uvueqmVDk9H2p+tFvvV9Y7PAg/WAm1suzJvSZpfiX3GeHIk9CvGJJeVn1+ONZZln92AM3fds0dK/vYfpcW1RLcX3PN49mjJPzeSNLeU+OP75ksV/eLDtl4/+9mz859X/hx/dHJ6u2t9Rv/gVKQ7D91xH5nZW0Ewt5xoqD8r27/U0e+/UtG1++661lrdWYj9Grz7S7GM6Q2Uk6RGyz3ncdKb/i5J5UjqZAUHtYrx12+2rf749dqeafUAgC8nStwBAM+UOOlNyW53rTqx9YFOqeSCpL/7hSujnp0MdTcLwpJst3XeO7'... 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

it worked!!! :smiley: :smiley: Thank you!!!

after completing the video, i got three nft on Opensea testnet, but no attributes on them, is that expected with that code?
Also, on Remix, if i want to mind 1000 nft, do i need to enter 1000 lines or is there another code for that that basically increment automatically?

    // account, token_id, number
        _mint(msg.sender, 1, 1, "");
        _mint(msg.sender, 2, 1, "");
        _mint(msg.sender, 3, 1, "");
    }

Thank you!

if the metadata files were not available or didn’t have the right name for ERC1155 then it could be a reason to not make it to opensea.

I don’t know of an easy way to mint 1000 nfts, usually you make a mint function and make it available to everyone that wants to mint and they will call the function to do those mints.

thank you. The metadata did upload but there were no traits in it like “hat: red, …” but i am guessing it is not an option of that code

did not really understand the last part :slight_smile: but i understand there isn’t an easy way to upload 1000 at once. thanks again!