Reported NFTs not correct

Hi,

Testing out the Web3 API endpoints for NFTs i get incorrect info for accounts (possibly out of date?). At what rate do you index these things? What can i expect? As a new user i can only post 2 links so ive only left the first links in the post

Example 1, wallet 0x8f54ea0807e9dabd056af981718a95372399b455:
https://deep-index.moralis.io/api/nft/wallet/0x8f54ea0807e9dabd056af981718a95372399b455?chain=eth
Reports holding 10 meebits

Correct is 10 meebits and 2 cryptopunks as indicated by Etherscan and Opensea

Example 2: 0x1cbb87bb9a4dd0316189eede2277a58590dc124a
Reported as holding 4 raribles and 2 openstore (?)

Etherscan and Opensea reports holding 5 cryptopunks

Almost Correct Example: 0x83f5eea3ba341622c7264c3b2214d6a4f6a9717a
On the other hand this reports correctly holding 2 crypopunks 1 meebit and the rest i cant count. (although moralis reports 37 items while opensea reports 38)

Has ERC1155 standard tokens.
You can check user’s balance there: https://etherscan.io/address/0xd07dc4262bcdbf85190c01c996b4c06a461d2430#readContract

image

It’s not shown in user’s balance in etherscan, but token smartcontract says user has tokens.

UPD: There is an issue with NFTs showing. Devs will fix it soon :man_mechanic:

Cryptopunks will be shown too :sweat_smile:

We found the issue with Punks, fixing, they are not erc compliant so some extra work needed

Note that some punks are reported through this endpoint. Ex:
https://deep-index.moralis.io/api/nft/wallet/0x83f5eea3ba341622c7264c3b2214d6a4f6a9717a?chain=eth&token_address=0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb

{
  "total": 2,
  "page": 0,
  "page_size": 500,
  "result": [
    {
      "token_address": "0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb",
      "token_id": "3774",
      "amount": "1",
      "owner_of": "0x83f5eea3ba341622c7264c3b2214d6a4f6a9717a",
      "block_number": "10968275",
      "block_number_minted": "3932140",
      "contract_type": "ERC721",
      "token_uri": null,
      "metadata": null,
      "synced_at": null,
      "name": "CRYPTOPUNKS",
      "symbol": "Ͼ"
    },
    {
      "token_address": "0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb",
      "token_id": "9404",
      "amount": "1",
      "owner_of": "0x83f5eea3ba341622c7264c3b2214d6a4f6a9717a",
      "block_number": "10968263",
      "block_number_minted": "10918510",
      "contract_type": "ERC721",
      "token_uri": null,
      "metadata": null,
      "synced_at": null,
      "name": "CRYPTOPUNKS",
      "symbol": "Ͼ"
    }
  ]
}

Hey @Zedd

Thank you for your patience :open_hands:
It should work correctly now. Update your server.

Let me know how will it work for you :man_mechanic:

Moralis reports 37 Ethereum NFTs here is because the 38th is on Matic

Tested, and seems to be working now, even very recent tx:s

Great work :fist_right: :fist_left:

1 Like

Hello, I also experience a similar issue.
I started playing around with the API V2 and seems like the nft response is missing some tokens.

For example this address: 0xfc708D11Cf5b324bb21C29BB95644844228C1Def has ERC-721 tokens as you can see on etherscan

https://etherscan.io/address/0xfc708d11cf5b324bb21c29bb95644844228c1def

moralis_nft_etherscan

However the API response contains an empty array for this request:

https://deep-index.moralis.io/api/v2/0xfc708D11Cf5b324bb21C29BB95644844228C1Def/nft?chain=eth&format=decimal&order=name.DESC

I also tried the API for this specific contract only with the same result.
There are cases however when I get the correct response so I am not sure what am I missing. :smiley:

Hey @Haptens

Check it again please.

It should work correctly :man_mechanic:

1 Like

Hi @Yomoo, thank you for the quick response.
That contract balance now loads correctly.

Unfortunately there are other cases when the token holding is missing or incorrect in the response.
For example take this address: 0x32d5bf2910ad4e216078f604f18ef32816392c74
Etherscan shows the address holds 4 CryptoBeasts token, but the API response does not, in fact it returns some tokens, which etherscan does not show.

Here you can check the CryptoBeasts contract holdings of the address:

https://etherscan.io/token/0xa74e199990ff572a320508547ab7f44ea51e6f28?a=0x32d5bf2910ad4e216078f604f18ef32816392c74

For me the API response returns 3 WLPS, 3 PYMON and 2 OPENSTORE tokens, while the etherscan and rainbow.me shows different results.

Hi guys, I just ran into the same or a similar issue:

curl -X 'GET' \
  'https://deep-index.moralis.io/api/v2/0xbFCF685360ccA98A35F79a1AbD25193143b972Fd/nft?chain=eth&format=decimal&limit=10&order=name.DESC' \
  -H 'accept: application/json' \
  -H 'X-API-Key: XXXXXXXX'

should return 7 NFTs, but only returns 4.

Hi @martinw

There is an issue on our end. It’ll be fixrd tomorrow.

I’ll let you know :man_mechanic:

Having the same issue - it just started today.

var list = await Moralis.Web3.getNFTs({ chain: ‘rinkeby’, address: user.get(“ethAddress”) });

The api is returning duplicates values. You can check using this address 0x0518C300557EA876d04Fe2015121Dc9eAd1b6649

it looks like I get 66 NFTs with let x = await Moralis.Web3.getNFTs({ chain: "rinkeby", address: "0x0518C300557EA876d04Fe2015121Dc9eAd1b6649" });
and 76 with

curl -X 'GET' \
  'https://deep-index.moralis.io/api/v2/0x0518C300557EA876d04Fe2015121Dc9eAd1b6649/nft?chain=rinkeby&format=decimal&order=name.DESC' \
  -H 'accept: application/json' \
  -H 'X-API-Key: API_KEY'

Hmmmm… thank you for taking a look. I am still getting 76 with duplicates. 66 is what I was getting an hour or so ago, then something changed with the API it gave me an error unless I passed the address parameter and now it looks like paging was added to the response.

I am using react on Ubuntu if that matters.

  1. {total: 76, page: 0, page_size: 500, result: Array(76)}
  2. page: 0
  3. page_size: 500
  4. result: (76) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
  5. total: 76
  6. proto: Object

what API call you make to get that output? that output with paging is very similar to what I get when making a http request to https://deep-index.moralis.io/api/v2/

this is the exact code…

async function getNFTs(){
var list = await Moralis.Web3.getNFTs({ chain: ‘rinkeby’, address: user.get(“ethAddress”) });
console.log(list);
list.result.forEach(function(nft){
getNFT(nft.token_id, nft.token_address);
});
}

I run that function now and I get only a list of 66 NFTs, no pagination:

0: {token_address: "0x9eea2cc8f53818e1044cc20fe4db86f804fc474f", token_id: "7", contract_type: "ERC721", amount: 1, token_uri: "https://firebasestorage.googleapis.com/v0/b/nft-te…=media&token=ebd841f3-6904-4672-b8a0-dd8bf92431a1", …}
1: {token_address: "0xb9195bb79107e6595cc83fc61fb4d0a9cc546c13", token_id: "1", contract_type: "ERC721", amount: 1, token_uri: "https://firebasestorage.googleapis.com/v0/b/nft-te…=media&token=f3fbb174-2bad-448b-8d36-b16033ef8f8c", …}
2: {token_address: "0xd2118bfb77fa0b85021e178d753879c32541faf7", token_id: "50", contract_type: "ERC721", amount: 1, token_uri: "https://firebasestorage.googleapis.com/v0/b/nft-te…=media&token=b4c0dc2f-6c32-43ca-bd45-d3712c495824", …}
3: {token_address: "0x509730c38bf6558990b1a0cc23618bd88f3ca8c1", token_id: "1", contract_type: "ERC721", amount: 1, token_uri: "https://firebasestorage.googleapis.com/v0/b/nft-te…=media&token=c05ab209-25a1-4517-9a52-1ab59885f229", …}

So weird… I was getting that 66 NFT output for the last few days - but something changed with the API response today. You can see one of the duplicates below - all the data is the same except for the block_number. I am using “react-moralis”: “^0.2.0” and “moralis”: “^0.0.28”

** I am running server instance 0.0.250 **

{total: 76, page: 0, page_size: 500, result: Array(76)}
page: 0
page_size: 500
result: Array(76)
0: {token_address: "0xa40e4bb67809917fcf01b04d619f8af32288aa71", token_id: "1", amount: "1", owner_of: "0x0518c300557ea876d04fe2015121dc9ead1b6649", block_number: "7784456", …}
1: {token_address: "0x14d0798a092eb9ecf928b4af1b04e1a29568f559", token_id: "1", amount: "1", owner_of: "0x0518c300557ea876d04fe2015121dc9ead1b6649", block_number: "8022267", …}
2: {token_address: "0x32b4831dd6718f25fe247c036d162a5e39ff40e3", token_id: "5", amount: "1", owner_of: "0x0518c300557ea876d04fe2015121dc9ead1b6649", block_number: "9162695", …}
3:
amount: "1"
block_number: "7595568"
block_number_minted: "7595568"
contract_type: "ERC721"
metadata: "{\"name\":\"Unicorn\",\"image\":\"https://s3.amazonaws.com/pedddle-assets-dev/98c073766248441d9e2f5013b142679c_preview.png\",\"creator\":\"yellow\",\"creatorAddress\":\"0x2049aA82E9e0FaCEd55FE87A3AeFB8455c3a6890\",\"external_url\":\"\"}"
name: "Cargo Magic Minting"
owner_of: "0x0518c300557ea876d04fe2015121dc9ead1b6649"
symbol: "CMM"
synced_at: "2021-08-24T04:34:26.432Z"
token_address: "0xbb5e72867ca7b7896e15f5c67de51c396c7ed55b"
token_id: "8"
token_uri: "https://development.cargo.engineering/batches/metadata/0xbb5e72867ca7b7896e15f5c67de51c396c7ed55b/ec17c41d423f4037b15a28bd9874b2a4/8"
__proto__: Object
4:
amount: "1"
block_number: "7728811"
block_number_minted: "7595568"
contract_type: "ERC721"
metadata: "{\"name\":\"Unicorn\",\"image\":\"https://s3.amazonaws.com/pedddle-assets-dev/98c073766248441d9e2f5013b142679c_preview.png\",\"creator\":\"yellow\",\"creatorAddress\":\"0x2049aA82E9e0FaCEd55FE87A3AeFB8455c3a6890\",\"external_url\":\"\"}"
name: "Cargo Magic Minting"
owner_of: "0x0518c300557ea876d04fe2015121dc9ead1b6649"
symbol: "CMM"
synced_at: "2021-08-24T04:34:26.432Z"
token_address: "0xbb5e72867ca7b7896e15f5c67de51c396c7ed55b"
token_id: "8"
token_uri: "https://development.cargo.engineering/batches/metadata/0xbb5e72867ca7b7896e15f5c67de51c396c7ed55b/ec17c41d423f4037b15a28bd9874b2a4/8"
__proto__: Object