Reported NFTs not correct

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

you could try to update to moralis version 0.0.35, not sure if it will help

I found the issue!!

I had updated the server earlier to 0.0.250 which is sending the data in the new format.

moralis server 0.0.247 works as before and sends the data without paging and without duplicates.

so it looks like there is a bug in 0.0.250.

Screenshot from 2021-08-24 02-02-51

I tested now with moralis version 28 and server version 0.0.250 and I get that pagination with 76 results, with moralis version 35 and server version 0.0.250 it works fine.

Thank you @cryptokid

I was able to confirm the same. I am now using moralis version 35 and server version 0.0.250 :slight_smile:

2 Likes