Wrong data when fetching NFT

I saw that similar problem has happened to other people as well.
It was said it is fixed.

But I used the NFT API and still got wrong data.

I used Polygon Mainnet on moralis server
const serverUrl = “https://xlmdnfrbxbjy.usemoralis.com:2053/server”, with relevant appId.

Then, I used this code

const options = { chain: 'matic', address: '0xc4216ef62a4b51b2a847ad9c7a2ef4b83b380390' };
const polygonNFTs = await Moralis.Web3API.account.getNFTs(options);
console.log(polygonNFTs)

It returned an unknown NFT,
block_number: “14139074”
block_number_minted: “14139074”
contract_type: “ERC1155”
token_address: “0x3d085869f5d0ae1f5de932e40b2397a75f1ed2a7”
token_id: “513571”

My wallet address, should has 3 NFT, but none is shown.

Am I wrong in using the api ?

Hey @Deve , no that should be the right API for getting all NFTs that is owned by an address, but I checked on polygonscan seems there is no NFT there https://polygonscan.com/address/0xc4216ef62a4b51b2a847ad9c7a2ef4b83b380390

@YosephKS

Weird, I create NFT using Opensea for my wallet, and on opensea, it can detect it is mine.

But even if this is Opensea problem why it return one NFT that is not mine ?
Could you please explain ?

did you by any chance lazy minted it? In OpenSea you can lazy mint an NFT, means it will not really be minted on the blockchain, but only exist in their database

@YosephKS , I will try to find out, meanwhile could you please let me know why it return another NFT data ?

I have no idea, yes I’ll check it out on my side, test your code and will get back to you soon~

I checked what that smart contract returns for balanceOf(0xc4216ef62a4b51b2a847ad9c7a2ef4b83b380390, 513571) and it returns 1. It looks like that address really has an NFT in that smart contract

Hello @cryptokid !

I have several questions :

  1. What do you mean by “…address really has an NFT in that smart contract” ? Which smart contract you refer to ?
  2. Could you please explain, what is 513571 in the code you tried ?
  3. Let’s assume that is a ghost NFT, which is somehow transferred to me, without me knowing. But as @YosephKS said, there is no NFT detected on https://polygonscan.com/address/0xc4216ef62a4b51b2a847ad9c7a2ef4b83b380390. Would you mind explain how GetNFTs working to get the data ?

I’m referring to 0x3d085869f5d0ae1f5de932e40b2397a75f1ed2a7, you can use Moralis.runContractFunction to call balanceOf on that smart contract
513571 is the token_id

I see.
I guess you also have no idea about my third question then.

Thank you for the response so far !

I know the answer to the third question, all events on chain are processed in order to identify what address what nft owns.

Hi, I’m back again

So, just want to hear some opinion.
I try to make a deeper checked.

One question, does Moralis support to get data of list of NFTs which are created from Opensea site ?
So far from my trial, Moralis getNFT cannot list data NFT which are made from Opensea site, On the Opensea site, I can see it. And I even tried to buy it to make sure it is really minted, in case it was lazy-minted. I tried on Mumbai Network.

But still, I got empty NFT list.
Any opinion about this ?

if it’s lazy minted, it’s stored on OpenSea’s database, if you want to have it fetched by getNFT then you need to mint it on Mumbai.

Hey! I have the exact same problem. The NFT endpoint like this:
Moralis.Web3API.account.getNFTsForContract({
chain: “polygon”,
address: “0xF5cC15Bc6882F531155706d473DB5aF82069489D”,
token_address: “0x66FA69188c52DC62f0fa79727740A451D0D7bb29”,
});

Gives me a wrong number. It shows me that token with id 612 belongs to the address, but actually it does not. You can check on opensea:

All the others are correct. But if you can’t rely on the data it makes the API of moralis useless…

we will investigate, thanks for reporting